微服务利剑之APM平台(二)Pinpoint

Pinpoint是一个高性能、无入侵的Java分布式事务跟踪平台,提供详细的应用架构和代码级别可见性。它利用字节码增强技术,无需修改代码即可实现功能扩展,对系统性能影响小。Pinpoint包括Agent、Collector、Web UI和HBase存储组件,支持与不同版本的Java、HBase和Spring Cloud的兼容性,便于在大规模分布式系统中进行监控和性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Pinpoint概述
    Pinpoint是一个由韩国人编写的为大型分布式系统服务的链路跟踪平台,并提供大量链路跟踪数据分析汇总解决方案。自2012年7月开始开发,与2015年1月做为一个开源项目推出。

  2. Pinpoint主要特性
    分布式事务跟踪,跟踪跨分布式应用的消息。
    自动检测应用拓扑,帮助你搞清楚应用的架构。
    水平扩展以便支持大规模服务器集群。
    提供代码级别的可见性以便轻松定位失败点和瓶颈。
    使用字节码增强技术,添加新功能而无需修改代码。

  3. Pinpoint优势
    无入侵:采用字节码增强技术,新增功能无需修改代码。
    性能高:对性能的影响非常小(资源使用量最小仅增加3%),异步数据传输,采用UDP协议让出网络连接优先级。

  4. Pinpoint架构简介
    先看一下官方提供的架构图,如图:
    在这里插入图片描述

Pinpoint主要包含了4个组件:

Pinpoint Agent:探针,附加到用于分析的Java服务
Pinpoint Collector:数据收集组件,部署在Web容器上
Pinpoint Web UI:数据展示组件,部署在Web容器上
HBase Storage:数据存储组件
架构图从上往下看,首先是通过Agent组件收集需要的数据,通过UPD/TCP的方式将数据发送给Collector,由Collector将数据分析整理过后存入HBase,通过Web UI组件将分析好的数据从HBase中读出,展示在现代化的UI界面上。

  1. Pinpoint数据结构简介
    Pinpoint中,核心数据结构由Span, Trace, 和 TraceId组成。

Span: RPC (远程过程调用/remote procedure call)跟踪的基本单元; 当一个RPC调用到达时指示工作已经处理完成并包含跟踪数据。为了确保代码级别的可见性,Span拥有带SpanEvent标签的子结构作为数据结构。每个Span包含一个TraceId。
Trace: 多个Span的集合; 由关联的RPC (Spans)组成. 在同一个trace中的span共享相同的TransactionId。Trace通过SpanId和ParentSpanId整理为继承树结构.
TraceId: 由 TransactionId, SpanId, 和 ParentSpanId 组成的key的集合. TransactionId 指明消息ID,而SpanId 和 ParentSpanId 表示RPC的父-子关系。
TransactionId (TxId): 在分布式系统间单个事务发送/接收的消息的ID; 必须跨整个服务器集群做到全局唯一.
SpanId: 当收到RPC消息时处理的工作的ID; 在RPC请求到达节点时生成。
ParentSpanId (pSpanId): 发起RPC调用的父span的SpanId. 如果节点是事务的起点,这里将没有父span – 对于这种情况, 使用值-1来表示这个span是事务的根span。
6. Pinpoint版本依赖
Pinpoint所需要的Java版本兼容:
Pinpoint Version Agent Collecto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值