【阿里云ACE成长记第5期】分布式链路追踪系统架构设计的经验分享

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介:

【引言】
本期由阿里云ACE(阿里云开发者社群)&成都柠檬云网络技术有限公司资深架构师 曾昌强 为大家分享个人成长经历与个人专业技术之分布式链路追踪系统架构设计
视频:https://yq.aliyun.com/live/581

Part 1:成长经历
讲述一个不知道什么叫编程的门外汉,如何穿越几千公里来到石油名校学习计算机,当家教,炸金花最终进入目标企业的故事而后又辗转几千公里进入梦想公司阿里巴巴,后来又回归家乡的故事讲述一个如何从ERP,进入互联网,又进入区块链行业的故事。

Part 2:分布式链路追踪系统架构设计

  1. 为什么需要分布式链路追踪
  2. 链路追踪核心模型
  3. 链路追踪的作用,原理
  4. 链路追踪各个模块地设计与经验分享
  5. 链路追踪产品展示
    _

【正文】
一、对程序员的感悟与成长经历
1
首先和大家讲述一下我认为的程序员有哪些境界,搬砖,就是大家所说的苦逼程序员,没有成就感,没有技术含量,年复一日,度日如年,想想这样也挺难熬的,毕竟还有几十年。情怀,有一定技术含量,也能从工作中找到一些成就感,当然也能获得可观的收入维持程序员体面的生活。快乐,以编程为快乐,只要写代码就感觉兴奋,高兴,深深地佩服自己的计算机技能,徜徉于自己的世界中。希望你能在代码中找到自己的快乐。
2
本人在上大学之前并不了解计算机编程时干啥的,由于在07年的时候考上了一所大学,无奈对所学专业的不感兴趣,不想就此决定此生的方向,就是年复一日的搬砖,在读了半年之后,毅然退学。重新高考,由于当时石油很火,就想读一个石油名校,就选择了大庆石油学院,没想到,拿到的通知书却是计算机科学与技术,想着这半年来的悬梁刺股,苦逼生活,不敢再复读了,就毅然抱着当网管的心态,去学习计算机技术了。

        到了大学,感觉挺闲的,就去找了中介,当了家教,教书育人,补贴家用,闲暇时间又通读了古今中外经典书籍(其实就是看小说),提升自己的文化修养。后来思考,为啥别人可以给我介绍家教挣我的钱,就迅速调研了家教中介的门槛,发现很简单,就去学校周边印一些广告,然后联系大学生,做一个双向沟通,遂成立天翼家教。当然还是挣了些钱,有了钱,机缘巧合之下,就去炒股了,没想到赔了不少,发现股市比较坑人(当然在我研究了股市很长时间发现,散户根本不能炒短线,一定要能熬,熬到庄家都怕你,两年之后,收益100%)。然后在隔壁班同学的怂恿下,就去砸金花了,但是还被警察抓了一回(故事很长),第一次砸金花被抓,第一次知道玩牌会被抓(四川人)。渐渐到了大三,发现明年就要找工作了,发现自己啥都不会啊,那咋办呢?想想还是去做一下项目吧,然后就去找了个相熟的教授,进了他的实验室,然后就开始接触了一些项目,渐渐的发现还有那么点意思,尤其看到自己设计的代码,真的按照自己的想法出结果了,并且还有人在用,并且还有收入,瞬间就膨胀了,发现计算机这行不错。双选会(哈工大的)的时候,进入了自己心仪的企业用友软件,待遇在当时也算非常不错的,因为当时还没有bat这一说法,由于上一届师兄的影响,认为用友软件就是当时最牛逼的企业(当然本来也很不错)。然后就去了用友工作,用友园区好大,就是偏僻了点,还包住,想想也是挺幸福的。在那度过了两年多,认识了很多好朋友。后来去了58同城,把互联网技术深入的学习了一遍。而后去了上海的饿了么,专注于数据库中间件的开发,我们是从头开始设计架构数据库中间件的,基于mysql协议,所以对mysql协议现在是非常熟悉了,同时也对数据库相关的优化,设计,性能有一些理解。再后来,就去阿里天猫,再后来由于家里的一些事情,就回到了成都。现在在柠檬云任职架构师。

3
我的梦想就是成为诗人,游侠,是不是有点像李白,对的,李白就是我的偶像。曾梦想仗剑走天涯,看一看世界的繁华。结果为什么没有去呢,就是bug太多了。怎么才能bug少一些呢,或者解决bug更容易呢?我们就需要一个非常重要的工具,链路追踪

二、专业技术分享:分布式链路追踪系统架构设计

1. 为什么需要分布式链路追踪
我们刚才也说到,解决bug需要用到链路追踪工具,下面我们来举个“较复杂的分布式调用网络”的例子。
4
这是一个很典型的分布式网络拓扑图,真实的环境可能比这个网络复杂得多,那么
我们如何能理清应用之间的调用关系?
出错之后如何快速定位?
如何监控每个服务的健康状况,性能情况?
如何监控每个调用在各个服务的调用和耗时情况?

回答以上问题需要用到Trace的一次追踪
5
可以很清晰地看到此次调用在每个服务的耗时,以及直接可以定位出性能瓶颈在哪里
6

2. 链路追踪主要核心领域模型,Opentracing核心模型
7

3.链路追踪的作用与原理说明
8
假设游客要进入每个景点,必须使用身份证扫描,并且记录一个日志在本地,有一个收集系统会定时收集所有景点的数据,汇总到一个中央日志处理系统。那么,我们就是分析这些数据,得到小明这一次去游览了哪些景点,在每个景点停留了多久。还有每个景点在某一时刻的人流量,每个景点的最大承载量是多大等等。这就是完全类似于我们的链路追踪系统。
9
现在开源或者在使用的链路追踪系统中绝大部份是参考了Google 的这篇Dapper论文,其中最重要的就是指明了一个实现方向,以及证明了实现的可能性

4. 链路追踪各个模块地设计与经验分享
10
设计目标
11
整体框架
12
TraceId设计

我们的TraceId设计了业务字段,包含起始appid,起始ip,采样标识等。大家可以思考使用UUID是否可以?

13
Span设计
span使用多级设计,清晰明确地展示每个span在追踪链中的位置。traceId一直保持不变,在所有span中传输,最终根据traceId和spanId的层级关系,准确还原整个调用链路。
14
Client设计
当请求进入某一个span之后,会创建线程上下文,然后对应的RPC,SQL,HTTP等调用,都会作为一个节点,加入到线程上下文中,当请求结束的时候,整个span会发送到异步队列中,通过线程逐渐发送到server端。
15
Server设计

server使用netty作为网络框架,接收客户端发送的数据。分析之后,全量数据发送到hbase,需要再分析的数据发送到kafka,后续使用storm集群来分析

16
Storm设计
上面为storm大致的设计拓扑图,使用kafkaSpout读取刚才server端写入kafka的的数据。然后经过统一AnalysisBolt,分析进入,EntryStatistics,ErrorStatistic等,最后再经过HbaseBolt,将分析完的数据写入Hbase。

5. 产品展示
17
18
19

相关实践学习
基于OpenTelemetry构建全链路追踪与监控
本实验将带领您快速上手可观测链路OpenTelemetry版,包括部署并接入多语言应用、体验TraceId自动注入至日志以实现调用链与日志的关联查询、以及切换调用链透传协议以满足全链路打通的需求。
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
10天前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
653 243
|
3天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
17 2
|
11天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
1月前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
5天前
|
弹性计算 Cloud Native Serverless
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品。
|
1月前
|
人工智能 Cloud Native 算法
|
1月前
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
存储 边缘计算 城市大脑
阿里云入选Gartner®分布式混合基础设施魔力象限
Gartner正式发布了《分布式混合基础设施魔力象限》(Magic Quadrant™ for Distributed Hybrid Infrastructure),阿里云在入选的中国厂商中于执行能力(纵轴)和愿景完整性(横轴)上均处在最高、最远的位置。
|
2月前
|
存储 边缘计算 城市大脑
阿里云入选Gartner®分布式混合基础设施魔力象限
Gartner正式发布了《分布式混合基础设施魔力象限》(Magic Quadrant™ for Distributed Hybrid Infrastructure),全球共9家厂商入围,阿里云成功入选,位居利基者(Niche Players)象限。
下一篇
DataWorks