分布式链路追踪 对比 一

从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显,

在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,

对CPU和memory的影响都差不多在10%之内。

分布式调用跟踪系统的设计

(1)分布式调用跟踪系统的设计目标

低侵入性,应用透明:作为非业务组件,应当尽可能少侵入或者无侵入其他业务系统,对于使用方透明,减少开发人员的负担

低损耗:服务调用埋点本身会带来性能损耗,这就需要调用跟踪的低损耗,实际中还会通过配置采样率的方式,选择一部分请求去分析请求路径

大范围部署,扩展性:作为分布式系统的组件之一,一个优秀的调用跟踪系统必须支持分布式部署,具备良好的可扩展性

(2)埋点和生成日志

埋点即系统在当前节点的上下文信息,可以分为客户端埋点、服务端埋点,以及客户端和服务端双向型埋点。埋点日志通常要包含以下内容:

TraceId、RPCId、调用的开始时间,调用类型,协议类型,调用方ip和端口,请求的服务名等信息;

调用耗时,调用结果,异常信息,消息报文等;

预留可扩展字段,为下一步扩展做准备;

(3)抓取和存储日志

日志的采集和存储有许多开源的工具可以选择,一般来说,会使用离线+实时的方式去存储日志,主要是分布式日志采集的方式。典型的解决方案如Flume结合Kafka等MQ。

(4)分析和统计调用链数据

一条调用链的日志散落在调用经过的各个服务器上,首先需要按 TraceId 汇总日志,然后按照RpcId 对调用链进行顺序整理。用链数据不要求百分之百准确,可以允许中间的部分日志丢失。

(5)计算和展示

汇总得到各个应用节点的调用链日志后,可以针对性的对各个业务线进行分析。需要对具体日志进行整理,进一步储存在HBase或者关系型数据库中,可以进行可视化的查询。

 

链路跟踪Trace模型

一次典型的分布式调用过程,如下图所示:

 

Trace调用模型,主要有以下概念:

Trace:一次完整的分布式调用跟踪链路。

Span: 追踪服务调基本结构,表示跨服务的一次调用; 多span形成树形结构,组合成一次Trace追踪记录。

Annotation:在span中的标注点,记录整个span时间段内发生的事件。

BinaryAnnotation:可以认为是特殊的Annotation,用户自定义事件。

Annotation类型:保留类型

Cs CLIENT_S

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
链路追踪是一种监控和调试技术,可以追踪分布式应用程序中的请求流和代码执行路径。在PHP应用程序中,常见的链路追踪工具包括Xdebug、Blackfire和Pinpoint等。而Easyswoole是一款基于Swoole扩展的高性能PHP框架,它内置了链路追踪功能,可以帮助开发者更方便地进行应用程序的监控和调试。 Easyswoole的链路追踪功能通过在应用程序中插入一些特殊的代码来实现。在每个请求到达应用程序时,链路追踪会生成一个唯一的ID,并将该ID添加到请求头中。然后,在应用程序中的每个关键节点处,链路追踪会将该ID记录下来,以便后续的跟踪和监控。最终,链路追踪会将所有的信息汇总成一个完整的请求流,以供开发者进行分析和优化。 要使用Easyswoole的链路追踪功能,你需要在应用程序中先安装和配置Easyswoole框架。具体步骤可以参考官方文档:https://www.easyswoole.com/Manual/3.x/Cn/_book/Introduction/installation.html 安装完成后,在应用程序中引入链路追踪组件即可: ```php use EasySwoole\Tracer\Trace; // 生成唯一ID $traceId = Trace::getInstance()->newId(); // 在请求头中添加ID $httpResponse->withHeader('X-Trace-Id', $traceId); ``` 在应用程序的关键节点处,你可以使用`Trace`类来记录信息: ```php use EasySwoole\Tracer\Trace; // 记录当前节点信息 Trace::getInstance()->addNode('node1', 'some message'); // 记录子节点信息 $span = Trace::getInstance()->span('node2'); $span->log('some message'); $span->finish(); ``` 最后,你可以使用Easyswoole提供的监控面板来查看完整的请求流程和性能数据。具体使用方法请参考官方文档:https://www.easyswoole.com/Manual/3.x/Cn/_book/Components/Tracer.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值