【阿里云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

相关实践学习
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
1月前
|
存储 数据挖掘 BI
2-5 倍性能提升,30% 成本降低,阿里云 SelectDB 存算分离架构助力波司登集团实现降本增效
波司登集团升级大数据架构,采用阿里云数据库 SelectDB 版,实现资源隔离与弹性扩缩容,查询性能提升 2-5 倍,总体成本降低 30% 以上,效率提升 30%,助力销售旺季高效运营。
134 9
|
1月前
|
存储 弹性计算 运维
AI时代下阿里云基础设施的稳定性架构揭秘
计算、存储、网络作为云计算基础 IaaS 服务,一直是阿里云的核心产品,承载着百万客户的 IT 基础设施。曾经我们认为应用高可用、服务分布式可以满足客户对 IaaS 所有的稳定性诉求。
249 2
AI时代下阿里云基础设施的稳定性架构揭秘
|
2月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
24天前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
|
8天前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
85 0
|
1月前
|
存储 弹性计算 运维
AI 时代下阿里云基础设施的稳定性架构揭秘
十五年磨一剑,稳定性为何是今天的“命门”?
|
4月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
1331 57
|
2月前
|
SQL 运维 数据挖掘
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
森马引入阿里云 SelectDB 替换原 Elasticsearch + 业务库混合架构,统一分析 16+ 核心业务,打通 BI 组件,大幅简化数据同步链路和分析系统架构。实现复杂查询 QPS 提升 400%,响应时间缩短至秒级,亿级库存流水聚合查询缩短至 8 秒内的显著收益,有效驱动森马全渠道运营效率持续增长与业务创新。
95 0
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
|
3月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。

热门文章

最新文章