亚马逊|前后端、多语言、跨云部署,全链路追踪到底有多难?
文章图片
文章图片
全链路追踪的价值 链路追踪的价值在于“关联” , 终端用户、后端应用、云端组件(数据库、消息等)共同构成了链路追踪的轨迹拓扑大图 。 这张拓扑覆盖的范围越广 , 链路追踪能够发挥的价值就越大 。 而全链路追踪就是覆盖全部关联 IT 系统 , 能够完整记录用户行为在系统间调用路径与状态的最佳实践方案 。
完整的全链路追踪可以为业务带来三大核心价值:端到端问题诊断 , 系统间依赖梳理 , 自定义标记透传 。
端到端问题诊断:VIP 客户下单失败 , 内测用户请求超时 , 许多终端用户的体验问题 , 追根溯源就是由于后端应用或云端组件异常导致的 。 而全链路追踪是解决端到端问题最有效的手段 , 没有之一 。系统间依赖梳理:新业务上线 , 老业务裁撤 , 机房搬迁/架构升级 , IT 系统间的依赖关系错综复杂 , 已经超出了人工梳理的能力范畴 , 基于全链路追踪的拓扑发现 , 使得上述场景决策更加敏捷、可信 。自定义标记透传:全链路压测 , 用户级灰度 , 订单追溯 , 流量隔离 。 基于自定义标记的分级处理数据关联 , 已经衍生出了一个繁荣的全链路生态 。 然而 , 一旦发生数据断链、标记丢失 , 也将引发不可预知的逻辑灾难 。 全链路追踪的挑战与方案 全链路追踪的价值与覆盖的范围成正比 , 它的挑战也同样如此 。 为了最大程度地确保链路完整性 , 无论是前端应用还是云端组件 , 无论是 Java 语言还是 Go 语言 , 无论是公有云还是自建机房 , 都需要遵循同一套链路规范 , 并实现数据互联互通 。 多语言协议栈统一、前/后/云(多)端联动、跨云数据融合是实现全链路追踪的三大挑战 , 如下图所示:
1、多语言协议栈统一
在云原生时代 , 多语言应用架构越来越普遍 , 利用不同语言特性 , 实现最佳的性能和研发体验成为一种趋势 。 但是 , 不同语言的成熟度差异 , 使得全链路追踪无法做到完全的能力一致 。 目前业界的主流做法是 , 先保证远程调用协议层格式统一 , 多语言应用内部自行实现调用拦截与上下文透传 , 这样可以确保基础的链路数据完整 。
但是 , 绝大部分线上问题无法仅通过链路追踪的基础能力就能够有效定位并解决 , 线上系统的复杂性决定了一款优秀的 Trace 产品必须提供更加全面、有效的数据诊断能力 , 比如代码级诊断、内存分析、线程池分析、无损统计等等 。 充分利用不同语言提供的诊断接口 , 最大化的释放多语言产品能力是 Trace 能够不断向前发展的基础 。
透传协议标准化:全链路所有应用需要遵循同一套协议透传标准 , 保证链路上下文在不同语言应用间能够完整透传 , 不会出现断链或上下文缺失的问题 。 目前主流的开源透传协议包括 Jaeger、SkyWalking、ZipKin 等 。最大化释放多语言产品能力:链路追踪除了最基础的调用链功能外 , 逐步衍生出了应用/服务监控 , 方法栈追踪 , 性能剖析等高阶能力 。 但是不同语言的成熟度导致产品能力差异较大 , 比如 Java 探针可以基于 JVMTI 实现很多高阶的边缘侧诊断 。 优秀的全链路追踪方案会最大化的释放每种语言的差异化技术红利 , 而不是一味的追求趋同平庸 。 感兴趣的同学可以阅读之前这篇文章《开源自建/托管与商业化自研 Trace , 如何选择》 。
- 5G|关于5G,华为赢了
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- 迈克尔·杰克逊 45 度前倾是怎么做到的?
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- GitHub|目前最值得入手的三款鸿蒙手机,全部都在降价,最后一款仅1239元
- 玉兔二号发现的“神秘小屋”前不久|玉兔二号拍到的月球背面的房子到底是什么,终于揭晓了
- 支付宝集五福活动 1 月 19 日正式开始,现可提前领福
- 腾讯|前腾讯员工爆料:鹅厂的末位淘汰制让人心理崩溃!
- |为什么以前在飞机上不能开手机,而现在可以了?
- 快来领取随日本亿万富翁进行月球旅行的免费入场券!仅限前8人