3个开源分布式跟踪系统,都很不错!

3个开源分布式跟踪系统,都很不错!

作者:云智时代 2018-09-29 08:44:24

开源

分布式 分布式跟踪系统使用户能够通过分布在多个应用程序,服务和数据库以及代理等中介上的软件系统来跟踪请求。这样可以更深入地了解软件系统中发生的情况。这些系统生成图形表示,显示请求在每个步骤上花费了多少时间并列出每个已知步骤。

分布式跟踪系统使用户能够通过分布在多个应用程序,服务和数据库以及代理等中介上的软件系统来跟踪请求。这样可以更深入地了解软件系统中发生的情况。这些系统生成图形表示,显示请求在每个步骤上花费了多少时间并列出每个已知步骤。

 

用户可以确定系统在哪里遇到延迟或阻塞。当请求开始失败时,操作员和开发人员可以确切地看到问题的开始位置,而不是像二进制搜索树那样测试系统。这还可以揭示从部署到部署可能发生的性能变化。通过警告异常行为而不是让客户告诉你,***自动捕获回归。

跟踪事件是如何工作的?每个请求都会获得一个特殊的ID,通常会将其注入到标头中。此ID唯一标识该事务。此事务通常称为跟踪。跟踪是整个事务的整体抽象概念。每个跟踪都由span组成。这些span是正在执行的实际工作,如服务调用或数据库请求。每个span也有一个唯一的ID。span可以创建称为子span的后续span,并且子span可以具有多个父级。

[[245045]]

OpenTracing API

OpenTracing是一种源自Zipkin的规范,旨在提供跨平台兼容性。它提供了供应商中立的API,用于向应用程序添加跟踪并将数据传递到分布式跟踪系统。为OpenTracing规范编写的库可以与任何符合OpenTracing的系统一起使用。Zipkin,Jaeger和Appdash是采用开放标准的开源工具的例子,但即使是像Datadog和Instana这样的专有工具也在采用它。随着OpenTracing无处不在,这种情况有望继续下去。

OpenCensus

有OpenTracing,但是OpenCensus呢?它是竞争标准,完全不同的东西,还是互补的东西?

OpenTracing专注于建立开放的API和规范,而不是针对每种语言和跟踪系统的开放实现。OpenCensus不仅提供规范,还提供语言实现和有线协议。它还包括通过包含通常在分布式跟踪系统范围之外的其他度量标准来进行跟踪。

OpenCensus允许在运行应用程序的主机上查看数据,但它还具有可插拔的导出系统,用于将数据导出到中央聚合器。

二者有重叠。一个不一定比另一个好,但重要的是要知道每个做什么和不做什么。OpenTracing主要是一个规范。OpenCensus为本地组件提供了一种整体方法,具有更多的观点,但仍需要其他系统进行远程聚合。

Zipkin

是最早的此类系统之一。它是由Twitter基于Google Dapper论文开发的,内容涉及Google使用的内部系统。Zipkin是使用Java编写的,它可以使用Cassandra或ElasticSearch作为可扩展的后端。大多数公司应该对其中一种选择感到满意。支持***的Java版本是Java 6.它还使用Thrift二进制通信协议,该协议在Twitter堆栈中很流行,并作为Apache项目托管。

该系统由reporters(客户端),收集器(collectors),查询服务和Web UI组成。Zipkin通过在事务上下文中仅传输跟踪ID来通知接收者正在进行跟踪,从而保证生产中的安全。然后将每个报告器中收集的数据异步传输到收集器。收集器将这些span存储在数据库中,并且Web UI以可使用的格式将该数据呈现给最终用户。向收集器传递数据可以通过三种不同的方法进行:HTTP,Kafka和Scribe。

Zipkin与OpenTracing标准兼容,流行的Spring框架有一个名为Spring Cloud Sleuth的组件,它与Zipkin兼容。

Jaeger

Jaeger是Uber Technologies的一个新项目,CNCF已将其作为孵化项目采用。它是用Golang编写的,因此你不必担心在主机上安装依赖项或者解释器或语言虚拟机的任何开销。与Zipkin类似,Jaeger也支持Cassandra和ElasticSearch作为可扩展的存储后端。Jaeger还完全兼容OpenTracing标准。

Jaeger的架构与Zipkin类似,包括客户端(reporters),收集器,查询服务和Web UI,但它在每个主机上都有一个本地聚合数据的代理。代理通过UDP连接接收数据,并将其批处理并发送给收集器。收集器以Thrift协议的形式接收该数据,并将该数据存储在Cassandra或ElasticSearch中。查询服务可以直接访问数据存储并将该信息提供给Web UI。

默认情况下,用户不会从Jaeger客户端获取所有跟踪。系统会对通过每个客户端的0.1%(1/1000)跟踪进行采样。保留和传输所有跟踪对于大多数系统来说有点压力。但是,可以通过配置客户端进行配置的代理来增加或减少这种情况。然而,这种抽样并不是完全随机的,它正在变得越来越好。Jaeger使用概率抽样,试图对是否应该对新踪迹进行抽样进行有根据的猜测。自适应采样是其路线图,它将通过添加额外的上下文来制定决策来改进采样算法。

Appdash

Appdash是一个用Golang编写的分布式跟踪系统,就像Jaeger一样。它是由Sourcegraph基于Google的Dapper和Twitter的Zipkin创建的。与Jaeger和Zipkin类似,Appdash支持OpenTracing标准。

Appdash的架构主要由三个部分组成:客户端,本地收集器和远程收集器。没有很多文档,所以这个描述来自测试系统和查看代码。Appdash中的客户端会添加到你的代码中。 Appdash提供Python,Golang和Ruby实现,但OpenTracing库可以与Appdash的OpenTracing实现一起使用。客户端收集span并将它们发送到本地收集器。然后,本地收集器将数据发送到运行其自己的本地收集器的集中式Appdash服务器,该收集器是系统中所有其他节点的远程收集器。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/295783.html<

(0)
运维的头像运维
上一篇2025-05-21 17:10
下一篇 2025-05-21 17:11

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注