各大厂分布式链路跟踪系统架构对比欢醉

随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。

分布式调用链其实就是将一次分布式请求还原成调用链路。显式的在后端查看一次分布式请求的调用情况,比如各个节点上的耗时、请求具体打到了哪台机器上、每个服务节点的请求状态等等。

通过调用链跟踪,一次请求的逻辑轨迹可以用完整清晰的展示出来。开发中可以在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。

(2)各个调用环节的性能分析

在调用链的各个环节分别添加调用时延,可以分析系统的性能瓶颈,进行针对性的优化。通过分析各个环节的平均时延,QPS等信息,可以找到系统的薄弱环节,对一些模块做调整,如数据冗余等。

调用链绑定业务后查看具体每条业务数据对应的链路问题,可以得到用户的行为路径,经过了哪些服务器上的哪个服务,汇总分析应用在很多业务场景。

通过可视化分布式系统的模块和他们之间的相互联系来理解系统拓扑。点击某个节点会展示这个模块的详情,比如它当前的状态和请求数量。

低侵入性,应用透明:作为非业务组件,应当尽可能少侵入或者无侵入其他业务系统,对于使用方透明,减少开发人员的负担

低损耗:服务调用埋点本身会带来性能损耗,这就需要调用跟踪的低损耗,实际中还会通过配置采样率的方式,选择一部分请求去分析请求路径

大范围部署,扩展性:作为分布式系统的组件之一,一个优秀的调用跟踪系统必须支持分布式部署,具备良好的可扩展性

埋点即系统在当前节点的上下文信息,可以分为客户端埋点、服务端埋点,以及客户端和服务端双向型埋点。埋点日志通常要包含以下内容:

调用耗时,调用结果,异常信息,消息报文等;

预留可扩展字段,为下一步扩展做准备;

日志的采集和存储有许多开源的工具可以选择,一般来说,会使用离线+实时的方式去存储日志,主要是分布式日志采集的方式。典型的解决方案如Flume结合Kafka等MQ。

一条调用链的日志散落在调用经过的各个服务器上,首先需要按 TraceId 汇总日志,然后按照RpcId 对调用链进行顺序整理。用链数据不要求百分之百准确,可以允许中间的部分日志丢失。

汇总得到各个应用节点的调用链日志后,可以针对性的对各个业务线进行分析。需要对具体日志进行整理,进一步储存在HBase或者关系型数据库中,可以进行可视化的查询。

一次典型的分布式调用过程,如下图所示:

Trace调用模型,主要有以下概念:

Trace:一次完整的分布式调用跟踪链路。

Span: 追踪服务调基本结构,表示跨服务的一次调用; 多span形成树形结构,组合成一次Trace追踪记录。

BinaryAnnotation:可以认为是特殊的Annotation,用户自定义事件。

Annotation类型:保留类型

Cs CLIENT_SEND,客户端发起请求

Cr CLIENT_RECIEVE,客户端收到响应

Sr SERVER_RECIEVE,服务端收到请求

Ss SERVER_SEND,服务端发送结果

用户自定义类型:

Event 记录普通事件

Exception 记录异常事件

Client && Server:对于跨服务的一次调用,请求发起方为client,服务提供方为server

各术语在一次分布式调用中,关系如下图所示:

大的互联网公司都有自己的分布式跟踪系统,比如Google的Dapper,Twitter的zipkin,淘宝的鹰眼,新浪的Watchman,京东的Hydra等,下面来简单分析。

Dapper是Google生产环境下的分布式跟踪系统,Dapper有三个设计目标:

低消耗:跟踪系统对在线服务的影响应该做到足够小。

应用级的透明:对于应用的程序员来说,是不需要知道有跟踪系统这回事的。如果一个跟踪系统想生效,就必须需要依赖应用的开发者主动配合,那么这个跟踪系统显然是侵入性太强的。

延展性:Google至少在未来几年的服务和集群的规模,监控系统都应该能完全把控住。

处理分为3个阶段:

①各个服务将span数据写到本机日志上;

②dapper守护进程进行拉取,将数据读到dapper收集器里;

③dapper收集器将结果写到bigtable中,一次跟踪被记录为一行。

鹰眼埋点和生成日志:

如何抓取和存储日志,记录本地文件,使用额外的后台进程定期(时间间隔小)收集日志。这种方式的优势在于对应用的性能影响小,方便做消息堆积;但是需要在每台业务server上都部署并管理日志收集agent,运维量比较大。

鹰眼的实现小结:

注意Dapper与Eagle eye都不开源。

通过阿里云提供的EDAS结合ARMS可以打造立体化监控体系,其中EDAS用于应用管控层面,用于控制链路和应用;而ARMS更关注业务运营层面,如电商交易、车联网、零售;实际上,监控需要全方位关注业务、链路、应用、系统,通过ARMS与EDAS相互补全,形成了立体化监控体系。

架构简单。可以实现一个Trace系统的所有功能。架构如下图所示:

Transaction是最重要的事件消息类型,适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,记录次数与时间开销。Transaction可嵌套。

跨服务的跟踪功能与点评内部的RPC框架集成,这部分未开源。

对于方法调用、sql、url请求等粒度较小的兴趣点,需要业务人员手写代码实现。

直接向日志收集器发异步请求(有本地内存缓存),一台客户端会连向几个服务端,当一个服务端出问题,数据不会丢失。

当所有服务端都挂掉,消息会存入queue,当queue满了,就丢弃了,没有做数据存储本地等工作。

全量采样,系统繁忙的时候对性能影响较大(可能达到10%的影响)

最后一个稳定版本是2014年1月,之后已经失去维护。

与dubbo框架集成。对于服务级别的跟踪统计,现有业务可以无缝接入。对于细粒度的兴趣点,需要业务人员手动添加。架构如下:

Trace: 一次服务调用追踪链路。

Span: 追踪服务调基本结构,多span形成树形结构组合成一次Trace追踪记录。

与CAT类似。支持自适应采样,规则粗暴简单,对于每秒钟的请求次数进行统计,如果超过100,就按照10%的比率进行采样。

开源项目已于2013年6月停止维护。

功能、数据跟踪模型与hydra类似。Zipkin本身不开源,开源社区的是另外一套scala实现,依托于finagle这个RPC框架。架构如下:

Zipkin与其他Trace系统的不同之处在于:

Zipkin中针对 HttpClient、jax-rs2、jersey/jersey2等HTTP客户端封装了拦截器。可以在较小的代码侵入条件下实现URl请求的拦截、时间统计和日志记录等操作。

Cat是直接将日志发往消费集群;hydra是发给日志收集器,日志收集器推到消息队列;Zipkin的client将统计日志发往消息队列,日志收集器读取后落地存储;Dapper和Eagle eye是记录本地文件,后台进程定期扫描。

以上几款链路跟踪系统都各自满足了请求链路追踪的功能,但落实到我们自己的生产环境中时,这些Trace系统存在诸多问题:Google和alibaba的Trace系统不开源,但现阶段来说阿里是做得最好的,如果用的是阿里的服务器,可考虑直接用阿里的追踪系统以节省开发代价;

京东和点评的虽然开源,但是已经多年没有维护,项目依赖的jdk版本以及第三方框架过于陈旧等等,不适合用在生产环境中;

Twitter的OpenZipkin使用scala开发,而且其实现基于twitter内部的RPC框架finagle,第三方依赖比较多,接入和运维的成本非常高。

如果不是用阿里的服务,我们可以借鉴这些开源实现的思想, 自行开发Trace系统。那是自己从0开始开发还是基于开源方案二次开发? 这里面也要考虑到跨平台,如NET和java环境,尽量减少原系统的侵入性或只需要更改少量的代码即可接入,在这里可以基于zipkin和pinpoint进行二次开发,功能可参考阿里的系统。

Pinpoint 与 Zipkin 都是基于 Google Dapper 的那篇论文,因此理论基础大致相同。Pinpoint 与 Zipkin 有明显的差异,主要体现在如下几个方面:

因为 Brave 的注入需要依赖底层框架提供相关接口,因此并不需要对框架有一个全面的了解,只需要知道能在什么地方注入,能够在注入的时候取得什么数据就可以了。就像上面的例子,我们根本不需要知道 MySQL 的 JDBC Driver 是如何实现的也可以做到拦截 SQL 的能力。但是 Pinpoint 就不然,因为 Pinpoint 几乎可以在任何地方注入任何代码,这需要开发人员对所需注入的库的代码实现有非常深入的了解,通过查看其 MySQL 和 Http Client 插件的实现就可以洞察这一点,当然这也从另外一个层面说明 Pinpoint 的能力确实可以非常强大,而且其默认实现的很多插件已经做到了非常细粒度的拦截。    针对底层框架没有公开 API 的时候,其实 Brave 也并不完全无计可施,我们可以采取 AOP 的方式,一样能够将相关拦截注入到指定的代码中,而且显然 AOP 的应用要比字节码注入简单很多。    以上这些直接关系到实现一个监控的成本,在 Pinpoint 的官方技术文档中,给出了一个参考数据。如果对一个系统集成的话,那么用于开发 Pinpoint 插件的成本是 100,将此插件集成入系统的成本是 0;但对于 Brave,插件开发的成本只有 20,而集成成本是 10。从这一点上可以看出官方给出的成本参考数据是 5:1。但是官方又强调了,如果有 10 个系统需要集成的话,那么总成本就是 10 * 10 + 20 = 120,就超出了 Pinpoint 的开发成本 100,而且需要集成的服务越多,这个差距就越大。

从短期目标来看,Pinpoint 确实具有压倒性的优势:无需对项目代码进行任何改动就可以部署探针、追踪数据细粒化到方法调用级别、功能强大的用户界面以及几乎比较全面的 Java 框架支持。但是长远来看,学习 Pinpoint 的开发接口,以及未来为不同的框架实现接口的成本都还是个未知数。相反,掌握 Brave 就相对容易,而且 Zipkin 的社区更加强大,更有可能在未来开发出更多的接口。在最坏的情况下,我们也可以自己通过 AOP 的方式添加适合于我们自己的监控代码,而并不需要引入太多的新技术和新概念。而且在未来业务发生变化的时候,Pinpoint 官方提供的报表是否能满足要求也不好说,增加新的报表也会带来不可以预测的工作难度和工作量。

最后还要考虑日志收集(直接发送、记录到本地再上传)、日志接收(消息队列,直接进入ElasticSearch)、数据清洗(Logstach、Storm、SparkStreaming)、日志存储(Mysql、Hbase、ElasticSearch)、页面展示(自研还是直接用第三方的)。

THE END
0.十论系统与体系概念,彻底明白其相互关系“体系”与“系统”在概念上有密切联系,但也存在差异: 1.联系: 两者均强调元素的关联性和整体性。例如,汉典将“体系”解释为“不同系统组成的系统”。 体系可视为一种复杂的系统,包含多个子系统,如社会体系由政治、经济等子系统构成。 2.区别: 范围与复杂性:体系通常指更大范围或更高层级的整体,而系统可以是相对独立的功 jvzquC41yy}/onnrkct/ew47dmip<6
1.零基础系统学设计之《立体构成》视觉要素:形状、大小、色彩、质感与肌理; 关系要素:位置、方向、空间、时间、节奏、韵律、秩序、重心、骨骼。 立体构成与平面构成中的点、线、面、体的区别 (1)平面构成的点、线、面是有位置、长度、宽度而无厚度的二维形态;立体构成的点、线、面是有位置、长度、宽度且有厚度的三维立体形态。 jvzquC41yy}/lrfpuj{/exr1r1=egA=2g3jd2;
2.《毛泽东思想和中国特色社会主义理论体系概论》一、课程性质与任务 (一)课程性质 《毛泽东思想和中国特色社会主义理论体系概论》课是教育部规定的高等学校学生必修的公共基础必修课,是对大学生进行思想政治教育的核心课程,也是践行立德树人根本任务不可或缺的课程。课程主要讲授中国共产党把马克思主义基本原理与中国实际相结合、与中国优秀传统文化相结合的历史进程,充分jvzquC41yy}/jm2w0eun1|pd1ktgq8625;525=80jvs
3.创新社会治理体制时政坚持灾前预防与应急处置并重,推进常态减灾与非常态救灾结合,完善部门协同、上下联动、社会参与、分工合作的防灾减灾救灾机制,形成有效应对自然灾害的强大合力。 (四)创新立体化社会治安防控体系 坚持打防结合、预防为主、专群结合、依靠群众的方针,以社会化、网络化、信息化为重点,健全点线面结合、网上网下结合、人防物防技防结合、打防管 jvzq<84rqnouklx0rguqnn3eqo4dp8s142741:7491i2296/45?68>=50jznn
4.跨界营销论文大全11篇2.1.1 建立移动APP立体销售体系 通过移动APP同传统销售渠道进行全方面覆盖,达到立体化营销的效果,在传统平台,PC平台,移动APP平台全面覆盖。提高营销的覆盖面。 2.1.2 营销活动的精准化和实时性 通过客产渠执的大数据分析,分析用户消费习惯。能够更加精准推荐给用户适合的产品。并且通过同BSS系统进行无缝对接,实时进行产jvzquC41yy}/hjgkcq4dqv3ep1nbq€jp15=15B3jvor
5.政治理论学习心得(精选30篇)(四)我对“构建充满生命力的开放的课堂立体体系”的理解 该书指出“教育是人的教育,是科学教育与生活教育的融合。”,“要把学生的个人知识、直接经验、生活世界看成重要的课程资源,尊重‘儿童文化’,发掘‘童心’、‘童趣’的课程价值”。我认为这一点是我们教育工作者必须牢牢记住和把握的原则,我们要“鼓励学生对jvzquC41yy}/fr~khctxgw3eqo5gcw|gp1~vgnzkpjfvrmwk173997;664ivvq
6.会计助理实习计划通用12篇因为财会岗位的专业性与特殊性,多数学生在一个单位集中实习的比例不大,实习地点具有明显的分散性,使得专业实习管理更显复杂与重要。实习质量如何,要看管理规范是否全面且能够执行;实习效果需要评价来监督与反馈。本文以专业实习流程为线索,构建全方位实习管理规范与立体式评价体系。jvzquC41unyeup3zwgyiw7hqo1nbq€jp1;842:3jvor
7.“玩转数学”系列之“知识结构导图”篇🤗优秀作品展(九年级体系图画得好不好,有一个大概的标准,就是是否全面、清楚和简洁。但是,它绝没有一个惟一的标准答案,每个人都可以根据自己的思维习惯和偏好,画出自己觉得最全面最清楚而又最简洁的知识体系图。 7. 解题思路图和知识体系图的区别 简单来说,解题思路图要比知识结构图复杂。虽然它们表面看起来一样,而且也都是用来梳理jvzquC41yy}/onnrkct/ew45f8s9dlz
8.“我为企业解难题”——“晋江经验”的三元新样本三层防线构建起立体监督体系 区人大常委会重点把优化营商环境作为全年工作的重中之重,组成“我为企业解难题”督查组,每月召开一次督查会。 除了完善的运营机制,为追求实效,防止走形式、敷衍塞责、漠视企业诉求,三元区主动“革自己的命”,建立了被称为史上最严格的监督机制,构建起三层立体监督体系。 jvzquC41yy}/lrfpuj{/exr1r1?459=hf9ld6:
9.营销执行方案通用12篇3. 构建以实现战略性双赢为目标的立体沟通体系之策略 公司和大客户加强沟通,建立稳固战略关系是大客户营销的有效措施;同时,沟通体系的建立要立足于公司整体,强调立体作业。公司不但要与大客户的采购执行者、使用者、评估者和决策者建立恰当的沟通渠道,找到自己的支持者和内线,建立对应层次的管理者(企业老总对顾客决策层jvzquC41sutzl7}wgunv0lto1jgpyns1989447mvon
10.公务员职业道德规范通用12篇3.3 以公众为主体的立体监督体系 公务员道德修养的形成有赖于道德制度化,这也是基于现实的人性考虑。根据《管理学原理》可知,公务员是人,非圣人,也是经济体,时刻追求自身效用的最大化。为了防止公务员个人对行政道德的冲击,为了保障道德修养的健全,路径依赖式制度对公务员道德实施进行一定的强制,就颇为必要。要加强公务jvzquC41yy}/z~jujw4dqv4jcq}fp86529:20qyon
11.政治理论学习心得体会(精选27篇)回顾中国共产党建党以来从一大到的光辉历程,从1921—1949年,我们党在推进马克思主义中国化过程中两次历史性的飞跃,第一次飞跃是形成了毛泽东思想;第二次飞跃是在改革开放新的伟大革命中,逐步形成中国特色社会主义理论体系。这个理论体系实现了我们党的指导思想的三次与时俱进。第一次是xx大将邓小平理论列为党的指导思想jvzquC41o0jj{rkcpyko0lto1zoofnykjwo03;=785740qyon
12.课程教学实践论文样例十一篇采用多级、多层次的立体监控体系建立方式。可以分为以下方面: 1.校级层面由学校的教务处、督导办统一安排,其检查贯穿实践课教学的全过程。做到在宏观上把控学校的实践课教学质量情况,监控内容侧重实践课是否正常开展及教学理念、教学方法等内容。具体做法可以通过组织相关教师、工作人员及学生等座谈,对实践课程的开展进行jvzquC41yy}/uofdkcu/exr1jcuxgw4578:40qyon
13.清水限价11200元/㎡神农千屿神秘亮相成都楼盘评测【交通:快速通达全城的立体交通体系】 项目旁边就是绕城高速,驱车可快速到达绕城收费入口,从而快速到达三环,进出城区交通非常便捷。如您平时不想开车出行,项目周边公共交通也非常便捷,有轨电车蓉2号线支线双林村站直线距离仅1KM,可换接地铁6号线兴业北街站。 jvzq<84ef0tfy|3cpl{lg7hqo1rpwynpi/?37>63/rgo7:85484ivvq
14.海昏侯精美呈现——打造汉代文化多元立体展示体系 2015年,南昌市成立海昏侯国遗址公园筹建领导小组,2017年成立遗址公园建设指挥部,历任省委常委市委书记、市长亲自担任组长、指挥长,并筹集资金近40亿元投入遗址公园项目建设。东南大学齐康院士领衔担纲遗址公园重点项目建筑方案,将海昏侯国jvzq<84jjjsvunzo0et0j}rn1fkucrq0jvsmAyftgpzJFF::hck7c9298ej.6Aj9/c=7e6;:;h>2fo>5h5,jfF=e5ch33l2e:9k.6j<;/d79g7,bt}nengOE?m=877<7c6f65:357?8/:gl8/;62378bhlgfe
15.读懂数字人民币,这一篇就足够产品笔记数字人民币日渐贴近公民的衣食住行,但时至今日依然有人会问:什么是数字人民币?它的总体架构和运营体系如何?与微信支付/支付宝支付有什么区别?个人如何开通数字人民币钱包?商家如何接入数字人民币支付? 本文带你探秘数字人民币的“前世今生”,揭开数字人民币的神秘面纱。 jvzquC41yy}/uqfpi{kykwjk0ipo8ftvkimg8979;=367mvon
16.安全审计的类型范文[摘要]计算机网络安全建设是涉及我国经济发展、社会发展和国家安全的重大问题。本文结合网络安全建设的全面信息,在对网络系统详细的需求分析基础上,依照计算机网络安全设计目标和计算机网络安全系统的总体规划,设计了一个完整的、立体的、多层次的网络安全防御体系。 jvzquC41yy}/jjtskmgo0lto1jgpyns1656657mvon
17.这些热门MMO是如何做游戏生态和运营的?当今市场,MMORPG的用户需求越发的细致化,其用户特点和用户行为,根据不同的分类方式又可以得出更立体的认识。比如说风景党、捏脸党、副本党、社交党、收集党等等,以用户需求分类也是描述游戏生态的一个合理方向。但本文更关注长线大服生态和短线小服生态的共性与区别,所以从付费能力来对用户进行分层分析,才是更为合适jvzquC41yy}/ijrgtgy/exr1:787:?3jvor
18.《2020国内WAF产品研究报告》waf行业拦截率是多少2、与其他多款安全产品全面动态联防,形成立体防御体系,包括APT产品、大数据分析平台等产品的安全联动。 3、内置SSL硬件加速卡,提升HTTPS的处理性能 4、提供针对政务云、金融云等私有云/数据中心的超大集群Web应用安全解决方案 差异化特点 1、安恒同时提供硬件WAF及云WAF服务。基于零部署零运维的SaaS服务模式,10分钟即可jvzquC41dnuh0lxfp0tfv8SkeqrbuUjctpks1jwvkerf1mjvckrt1:6756=34;
19.网络写作论文汇总十篇具体而言,区别于传统写作体系中写作主体为中心,“互动性这一网络传播的根本特征”,让受众摆脱了单纯接受的地位,拥有了自主的选择权和发言权,因此网络新闻写作活动与传统新闻写作活动区别性的特点,集中体现于写作主体与受体地位及关系的变化上。 网络新闻文本制作阶段,写作主体主导地位与写作受体的受导地位不变。原创网络jvzquC41yy}/z~jujw4dqv3ep1nbq€jp15=38B3jvor
20.西安廉政研究2021年第1期“动态监督”可以专门针对特定领域和特定问题,从而保证监督不会滞后于形势,不会滞后于问题。“动态监督”作为监督体系的有机组成部分,既不会打乱科层制监督体系的原有结构,又能发挥监督的灵活性。它使监督体系立体化了,也使监督体系具有了职能弹性。 在监督措施上,“宽监督”形成了一个内涵比较丰富的手段体系。它jvzq<84n|{p/zj|n0gjv0ls1nnzt1fn|zp04973pm}09:8:80nuo