当前位置:首页 > 科技  > 软件

聊聊微服务链路服务

来源: 责编: 时间:2023-12-15 17:18:09 866观看
导读微服务架构图片如果有用户反馈某个页面很慢,我们知道这个页面的请求调用链是 A -----> C -----> B -----> D(图片有误),怎么来定位是由哪个服务引起的问题呢? 更进一步,如果每个服务 Service A,B,C,D 都部署在好几台机

微服务架构

图片图片nkG28资讯网——每日最新资讯28at.com

如果有用户反馈某个页面很慢,我们知道这个页面的请求调用链是 A ----->  C ----->  B ----->  D(图片有误),怎么来定位是由哪个服务引起的问题呢? nkG28资讯网——每日最新资讯28at.com

更进一步,如果每个服务 Service A,B,C,D 都部署在好几台机器上。怎么知道某个请求调用了服务的具体哪台机器呢?nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

可以明显看到,由于无法准确定位每个请求经过的确切路径,在微服务这种架构下有以下几个痛点:nkG28资讯网——每日最新资讯28at.com

1. 排查问题难度会比较大,解决问题的周期长nkG28资讯网——每日最新资讯28at.com

2. 特定场景很难再次复用nkG28资讯网——每日最新资讯28at.com

3.系统性能瓶颈分析同样也不同意nkG28资讯网——每日最新资讯28at.com

这就需要一个分布式调用链追踪系统。nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com


nkG28资讯网——每日最新资讯28at.com

分布式调用链追踪系统:设计

如果要我们自己实现一个这样的分布式追踪系统,该怎么去设计?nkG28资讯网——每日最新资讯28at.com

首先,我们必须得区分每个调用链,得给它分配一个全局唯一的 TraceID,并且在调用链上的每次调用都带上这个 ID,这样每个调用都被关联起来了。nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

然后,我们得记录所有调用的先后次序和父子关系。nkG28资讯网——每日最新资讯28at.com

假设有以上这样的调用链,如果我们只记录了这四个调用:nkG28资讯网——每日最新资讯28at.com

A---->BnkG28资讯网——每日最新资讯28at.com

B---->CnkG28资讯网——每日最新资讯28at.com

A---->DnkG28资讯网——每日最新资讯28at.com

D---->EnkG28资讯网——每日最新资讯28at.com

D---->FnkG28资讯网——每日最新资讯28at.com

虽然我们知道它属于一个调用(TraceID 相同),还是无法画出完整的调用拓扑图。nkG28资讯网——每日最新资讯28at.com

所以必须得记录父子关系:nkG28资讯网——每日最新资讯28at.com

A---->B 是 B---->C 的父调用nkG28资讯网——每日最新资讯28at.com

A---->D 是 D---->E 的父调用nkG28资讯网——每日最新资讯28at.com

A---->D 还是 D---->F 的父调用nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

Agent

微服务是来实现业务的,肯定不能来干这个监控和跟踪的活儿,那样对微服务的侵入性就太强了。nkG28资讯网——每日最新资讯28at.com

所以必须得有一个独立的组件,在不干扰微服务的情况下,监控微服务之间的调用,把这些 ID 生成, 这个独立的组件就是 Agent。nkG28资讯网——每日最新资讯28at.com

Agent 要想施展魔法,需要安装在每个服务所在的机器上:nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

这个魔法师遵循的规则也非常简单,以上图中服务 A 上的 Agent 为例:nkG28资讯网——每日最新资讯28at.com

当 Agent 监测到有人调用服务 A 时,没有 ParentSpanID,它意识到这是一次全新的调用,于是创建新的 TraceID。nkG28资讯网——每日最新资讯28at.com

当 Agent 察觉到 A 调用了 B 时,生成 SpanID = 1,并将此 ID 作为 ParentSpanID 传递给 B。这样,当 B 调用 C 时,B 的 Agent 就能生成此次调用的 SpanID 为 1.1。nkG28资讯网——每日最新资讯28at.com

当 Agent 察觉到 A 调用 D 时,生成 SpanID = 2,并将此 ID 作为 ParentSpanID 传递给 D。nkG28资讯网——每日最新资讯28at.com

4. 在 D 调用 E 和 F 时,分别生成 SpanID 2.1 和 2.2。nkG28资讯网——每日最新资讯28at.com

指定微服务中的“RPC 调用的公用程序”(例如 Dubbo 中的 MonitorFilter.invoke方法), 然后在运行时,通过动态修改字节码的方式来增强它:nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

当服务 A 调用服务 B 时, Agent 就可以做点儿手脚,修改 header 了:nkG28资讯网——每日最新资讯28at.com


nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

数据收集

Agent 虽然监控、生成了足够多的数据,但是单个 Agent 无法获得全局视图,我们需要一个全局的收集器来把 Agent 的数据收集上来,这样才能生成全局的调用链。nkG28资讯网——每日最新资讯28at.com

结构如下图:nkG28资讯网——每日最新资讯28at.com

图片图片nkG28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-46491-0.html聊聊微服务链路服务

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 九个免费开源的GIF编辑器

下一篇: 如何回溯解决组合问题和字符串分割

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 六大权益!华为8月服务日开启:手机免费贴膜、维修免人工费

    8月5日消息,一年一度的华为开发者大会2023(Together)日前在松山湖拉开帷幕,与此同时,华为8月服务日也式开启,到店可享六大专属权益。华为用户可在华为商城Ap
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 首发天玑9200+ iQOO Neo8系列发布首销售价2299元起

    2023年5月23日晚,iQOO Neo8系列正式发布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro强悍登场,限时售价3099元起;价位段最强性能手机iQOO Neo8同期上市
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top