Skip to content

Commit

Permalink
pinpoint原理
Browse files Browse the repository at this point in the history
  • Loading branch information
studeyang committed Aug 14, 2024
1 parent 9e21967 commit e8588fa
Showing 1 changed file with 75 additions and 3 deletions.
78 changes: 75 additions & 3 deletions B类/B20-其他/Pinpoint.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,87 @@
>
> - https://pinpoint-apm.gitbook.io/pinpoint

# 一、插件开发指南
# 一、介绍

## 1.1 追踪数据
## 1.1 概述

如今的服务通常由许多不同的组件组成,它们之间进行通信并对外部服务进行 API 调用。每笔交易的执行方式通常都是一个黑匣子。 Pinpoint 跟踪这些组件之间的事务流,并提供清晰的视图来识别问题区域和潜在瓶颈。

**服务拓扑图** - 通过可视化组件互连的方式来了解您的分布式系统。

**实时活动线程图表** - 实时监控应用程序内的活动线程。

**请求/响应散点图** - 随着时间的推移,可视化的请求数和响应可以发现潜在问题。

![image-20240814224503164](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142245214.png)

**调用堆栈** - 分布式环境中,可以看见每个事务的堆栈,在单个视图中识别瓶颈和故障点。

![image-20240814224745001](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142247050.png)

**检查器** - 查看应用程序的其他详细信息,例如 CPU 使用情况、内存/垃圾收集、TPS 和 JVM 参数。

![image-20240814224830622](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142248683.png)

**架构**

![image-20240814225000579](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142250645.png)

## 1.2 Pinpoint 的特性

Pinpoint 是一个分析大规模分布式系统的平台。它自2012年7月开始开发,并于2015年1月9日作为开源项目启动。

- 分布式事务跟踪以跟踪分布式应用程序之间的消息
- 自动检测应用程序拓扑,帮助您了解应用程序的配置
- 水平扩展,支持大规模服务器组
- 提供代码级可见性以轻松识别故障点和瓶颈
- 使用字节码检测技术添加新功能而无需修改代码

## 1.3 技术细节

### 1、分布式事务跟踪在 Google Dapper 中的工作原理

> 有关 Google Dapper 的更多信息,请参阅“ [Dapper,大规模分布式系统跟踪基础设施](http://research.google.com/pubs/pub36356.html)”。

![image-20240814230711675](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142307748.png)

### 2、Pinpoint 中的数据结构



### 3、TraceId 的工作原理

![image-20240814231618802](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142316860.png)

### 4、字节码检测的工作原理

![image-20240814232929329](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142329400.png)

### 5、Pinpoint 应用示例



![image-20240814233452161](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142334212.png)



![image-20240814234304982](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142343040.png)







# 二、插件开发指南

## 2.1 追踪数据

在 Pinpoint 中,一个事务由一组`Spans`组成。每个`Span`代表事务已经历的单个逻辑节点的踪迹。

为了帮助理解,我们假设有一个如下所示的系统。前端服务接收用户的请求,然后将请求发送到后端服务,后端服务查询数据库。

![image-20240812224605691](../../../../Library/Application Support/typora-user-images/image-20240812224605691.png)
![image-20240812224605691](https://technotes.oss-cn-shenzhen.aliyuncs.com/2024/202408142241240.png)

当请求到达前端服务时,Pinpoint Agent 会生成一个新的事务 ID 并用它创建一个`Span` 。为了处理该请求,前端服务调用后端服务。此时,Pinpoint Agent 将事务 ID(加上一些用于传播的其他值)注入到调用消息中。当后端服务收到此消息时,它会从消息中提取事务 ID(以及其他值)并使用它们创建一个新的`Span` 。结果,单个事务中的所有`Spans`共享相同的事务 id。

Expand Down

0 comments on commit e8588fa

Please sign in to comment.