链接跟踪的价值在于“协会”。最终用户,后端应用程序,云组件(数据库,消息等)共同构成了链接跟踪的轨迹拓扑。该拓扑的范围越大,链接跟踪的值越大。完整的-link跟踪是涵盖所有相关IT系统的最佳实用解决方案,可以将用户行为完全记录以调用系统之间的路径和状态。
完整的完整链接跟踪可以为业务带来三个核心价值:末端 - 端问题的诊断,系统间系统取决于梳理和自定义标记。
完整链接跟踪的价值与覆盖范围成正比,其挑战是相同的。为了确保最大程度地确保链接的完整性,无论是前端应用程序还是云组件,是它是Java语言还是GO语言,无论是公共云还是自行设计的计算机室,都必须遵循相同的链接规格并实现数据互连。多语言协议堆栈统一,前面/后/云(多)结束链接和越野数据融合是实现完整链接跟踪的三个主要挑战,如下图所示:
1.多语言协议堆栈统一
在云时代,多语言应用架构变得越来越普遍。使用不同语言特征来实现最佳性能和研发经验已成为一种趋势。但是,不同语言的成熟度的差异使得完整的链接跟踪不能完全一致。在现在,行业的主流实践是为了确保远程呼叫协议层格式统一,并在实现呼叫,拦截和上下文传输的内部应用程序的内部应用,这可以确保基本链接数据的完整性。
但是,大多数在线问题无法通过链接跟踪有效地定位和解决基本功能。在线系统的复杂性确定出色的痕量产品必须提供更全面和有效的数据诊断功能,例如Ascode级别的诊断,内存分析,线程池分析,非毁灭性统计等。通过不同的语言,最大化多语言产品功能的释放是痕迹继续开发的基础。
2.前云和后云之间的连接(多个)结束
当前的开源链接跟踪主要集中在后端业务应用程序层中,并且在用户终端和云组件(例如云数据库)的侧面缺乏有效的掩埋手段。主要原因是后两个是通常由云服务提供商或三个政党制造商提供,依靠制造商是否友好地兼容开源兼容性。企业很难直接参与开发。
上述情况的直接影响是前端页面响应很慢。很难直接找到后端的应用程序或服务。以相同的方式,云组件的异常也很难直接与业务应用程序异常直接分配,尤其是在多个应用程序的情况下以共享相同的数据库实例,并且需要验证更多的回旋处,并且检查效率非常低。
为了解决此类问题,首先,云服务提供商需要更好地支持开源链接标准,将核心方法添加到掩埋点上,并支持开源协议堆栈传输和数据返回(例如Alibaba Cloud Arm支持Jaeger协议透明度以及方法和方法刺激跟踪)。
其次,由于由于归属等问题而可能无法统一不同的系统,因此完整的链接协议堆栈是统一的。为了实现多末端链接,需要痕量系统为异构协议堆栈提供传递解决方案。
为了实现异质协议堆栈的打开(Jaeger,Skywalking,Zipkin),痕量系统需要支持两个功能:首先,协议堆栈转换和动态配置,例如从前端,Jaeger协议传输,新访问下游外部系统使用了Zipkin B3协议。两者之间的Node.js应用程序可以接收Jaeger协议并向下发送Zipkin协议,以确保完整的链接标记透明度的完整性。服务器数据格式转换可以转换转换不同的数据格式与均匀格式进行存储,或在查询侧兼容。以前的维护成本相对较小,而后者的兼容成本更高,但相对灵活。
3.越野数据融合
由于稳定或数据安全性和其他因素,许多大型企业都选择了多个云部署,例如在阿里巴巴云中部署的国内系统,海外系统被部署在AWS云中,涉及企业涉及的敏感数据的系统部署在自我中。- 建造的计算机室。专心部署已成为典型的云部署体系结构,但是不同环境的网络隔离以及基础架构的差异也为操作和维护人员带来了巨大的挑战。
由于云环境只能通过公共网络进行通信,因此为了实现多云部署结构的链接完整性,链接数据可用于在云和cross -cloud查询上报告。无论如何,目标是用于实现统一的云数据,并通过完整的链接数据快速定位或分析问题。
云上链接数据的实现相对难以实现,这很容易维护和管理。目前,它是云制造商采用的主流实践。例如,阿里巴巴云武器是通过横界数据实现的云数据融合。
Cross -Cloud报告的优点是部署成本很低,一组服务器易于维护;缺点是,越野传输将占据公共网络带宽,公共网络流量的成本和稳定性是重要的限制。越野报纸更适合师父和多个体系结构。大多数节点都部署在云环境中。其他云/自我制造的计算机房仅占少量业务流量。对于审查,自我制造的计算机室更适合在云上报告,如下图所示。
Cross -Cloud查询意味着原始链接数据存储在当前的云网络中,用户查询分别发送,然后将查询结果收集以进行统一处理以降低公共网络传输成本。
Cross -Cloud查询的优点是数据传输量很小,尤其是实际查询的链接数据量通常少于原始数据量的10,000个中的一小部分,这可以大大节省公共网络带宽。缺点是需要部署多个数据处理终端,并且不支持复杂的计算,例如除法和总体顶部。它更适合多媒体体系结构。可以支持简单的链接缝线和最大/最小/平均统计信息。有两种跨云查询模式,一种是在云网络内构建一组集中式数据处理终端,并通过内部网络打开用户网络专用行,可以同时处理多个用户。一个用户分别设置了VPC中的一组数据处理终端。前者保持低成本和更大的容量弹性;后者更加隔离。
除上述两个方案外,混合模式或仅透明模式也可以在实际应用中使用。
混合模式是指通过公共网络的统计数据统一报告,并进行集中处理(较小的数据量和高精度要求),而链接数据使用横云查询方法进行检索(大数据量,低查询频率,)。
只有通过传输模式意味着链接的上下文只能在每个云环境之间的链接上完全传输,并且链接数据的存储和查询是独立实现的。该模型的优点是成本非常低。每个云仅需要遵循相同的透明度协议,并且特定的实施计划可以是完全独立的。通过相同的TraceID或应用程序名称的人工序列更适合于库存系统的快速集成,并且转换成本是最小。
上一篇文章详细介绍了各种情况下各种情况下面临的挑战和响应计划。接下来,以阿里巴巴云武器为例,以介绍如何构建一组前端,网关,服务器,容器,容器和云从0到1构建组件的完整观察系统。
阿里巴巴云武器的当前完整链接跟踪方案基于Jaeger协议,并正在开发Skywalking协议,以支持Skywalking的自我建造用户的无损迁移。应用程序完整 - 链接跟踪如下图所示:
1.前端访问练习
武器正面 - 末端监视支持Web/H5,WEEX,Alipay和微信Mini计划。本文使用Web应用程序来访问通过CDN进行武器前端监视。简要说明访问过程,详细的访问指南引用了武器前端监控官的文档。
为了实现前后链接链接,上述探针代码必须包括以下两个参数:
另外,如果API与当前应用程序不同,则有必要添加启用者:true参数,而后端服务器也需要支持交叉域请求和自定义标题值。有关详细信息,请参阅前后链接相关文档。如果您需要验证前后链接跟踪配置是否有效,则可以打开控制台以检查是否存在Uber-Trace-ID的迹象相应的API请求。
2. Java应用程序访问实践
Java申请建议访问武器Javaagent。它被用作侵入性探针。它不需要修改业务代码,详细的访问指南请参阅《武器申请监视官方网站》文档。
3.非Java应用程序访问实践
非Java应用程序可以通过开源SDK(例如Jaeger)向ARMES访问点报告数据,并参考武器申请监控官的文档。
从2010年的Google的Dapper论文开始,链接跟踪已经开发了十多年。但是,关于链接跟踪的书籍总是很少,或者在深入的文章中。大多数博客只是介绍一些开源概念或快速入门。大型企业如何构建真正可用的,易于使用和易于使用的链接跟踪系统。它需要需要一些坑才能填充并避免使用哪种雷声,很难找到系统的和全面的答案。
完整的链接跟踪访问只是跟踪的起点。选择适合其自己的业务架构的解决方案可以避免一些绕组。观察领域?如何观察并与基础架构下降并提前找到资源风险?以后有很多工作要做,我期待更多的学生共享共享。
相关链接
1.武器正面 - 末端监视官方网站文件:https://help.aliyun.com/document_detail/106086.html?SPM = ATA.21736010.0.0.5D3A7F117O1LTY 2,FRONT-END LINK关联文档文档:https://help.aliiun.com.com/document_detail/91409.html#tital-6rx-6rx-6rx-0lb-p1o 3,官方应用程序监控文档:https://help.aliyun.com/document_detail/97924.html 4..aliyun.com/document_detail/118912.html 5,武器控制台:https://arms.console.aliyun.com/?SPM = ATA.21736010.0.0.5D3A7O1LTY
作者|Yahai资料来源:阿里巴巴云