SkyWalking 源码分析 Agent DictionaryManager 字典管理
1. 概述
本文主要分享 Agent DictionaryManager 字典管理。先来简单了解下字典的定义和用途:
- 字典实际上是一个 Map 映射。目前 Agent 上有两种字典:应用编码与应用编号的映射,操作名与操作编号的映射。
- 应用的定义:例如,Tomcat 启动的应用,或者程序里访问的 MongoDB 、MySQL 都可以认为是应用。
- 操作的定义:例如,访问的 URL 地址,Mongo 的执行操作。
- Agent 在每次上传调用链路 Segment 给 Collector 时,Segment 里面需要包含应用和操作相关信息。考虑到减少网络流量,应用编号少于应用编号,操作编号少于操作名。
Agent 字典,会定时从 Collector 【同步】需要( 需要的定义,下文代码会看到 )的字典。
下面,我们分成两个小节,分别从 API 的实现与调用,分享代码的具体实现。
2. Collector 同步相关 API
Collector 同步相关 API 相关有四个接口:
-
2.1 应用的同步 API
-
2.2 操作的同步 API
API处理的流程大体如下:

2.1 应用的同步 API
应用的同步 API ,实际使用的是应用的注册 API,在 「2.1 应用的注册 API」 有详细解析。
2.2 操作的同步 API
我们先来看看 API 的定义,DiscoveryService ,如下图所示:
