pinpoint Agent-TCP连接分析
2017-01-19 18:09
375 查看
核心的代码入口都在DefaultAgent的构造方法中,所以从此方法入口。
主要是createTcpDataSender方法,在此方法中首先创建PinpointClientFactory。
而在createPinpointClientFactory方法中,就是创建netty的实现,注册监听的事件。
而在创建PinpointClientFactory的具体代码中,就是创建一个标准的netty实例,增加Handler
而在增加的Handler中核心的代码就是创建DefaultPinpointClientHandler
建立连接时,触发channelConnected事件。在channelConnected方法中连接collector写入数据。其中有一些定时任务,比如执行ping的等。在此方法中。创建handshakeJob和collector握手
Collector接收到数据保存AgentLifeCycle和AgentEvent两个表的数据,(web查询时(拓扑结构),会从AgentLifeCycle中过滤所有状态为Running的数据)。
TCP传输数据还有一部分是,这部分代码有意思,就是线程之间的调用,并非start,首先构建agentInfoSender,让后启动线程,调用Start(在defaultAgent的start方法中)
在agentInfoSender的start中有一个单线程定时执行sumbit函数。然后包装AgentInfoSendRunnable,最终调用的是AgentInfoSendRunnable的run方法(只是调用,并没有start线程),最终调用dataSender的request方法。
TCPDatasender中的executor也是比较有意思的一个线程。其初始化时在创建tcpDataSender时,而AgentInfoSendRunnable线程中的exector方法只是简单的把数据加到队列中。
具体实现可以看一下。
首先是创建一个,然后注册监听的事件。
其创建的代码如下,核心的this.createExecuteThread(executorName)就是此方法。此方法创建一个线程,并且启动线程。而此方法的实现就是调用监听事件的方法。而最终调用的是TCPDataSender的sendPacket方法。而参数对象就是AgentInfoSendRunnable 传递的两个参数构造的RequestMarker对象,然后请求collector。
Pinpoint
TCP 握手,第一次握手管理Agent的生命周期,写入AgentLifeCycle表和AgentEvent表。
request请求发送agentInfo信息 application_REQUEST包 写入AgentInfo表ApplicationIndex表
当调用具体插件类,进行二进制转换时,当缓存时会request到collector中。
主要是createTcpDataSender方法,在此方法中首先创建PinpointClientFactory。
而在createPinpointClientFactory方法中,就是创建netty的实现,注册监听的事件。
而在创建PinpointClientFactory的具体代码中,就是创建一个标准的netty实例,增加Handler
而在增加的Handler中核心的代码就是创建DefaultPinpointClientHandler
建立连接时,触发channelConnected事件。在channelConnected方法中连接collector写入数据。其中有一些定时任务,比如执行ping的等。在此方法中。创建handshakeJob和collector握手
Collector接收到数据保存AgentLifeCycle和AgentEvent两个表的数据,(web查询时(拓扑结构),会从AgentLifeCycle中过滤所有状态为Running的数据)。
TCP传输数据还有一部分是,这部分代码有意思,就是线程之间的调用,并非start,首先构建agentInfoSender,让后启动线程,调用Start(在defaultAgent的start方法中)
在agentInfoSender的start中有一个单线程定时执行sumbit函数。然后包装AgentInfoSendRunnable,最终调用的是AgentInfoSendRunnable的run方法(只是调用,并没有start线程),最终调用dataSender的request方法。
TCPDatasender中的executor也是比较有意思的一个线程。其初始化时在创建tcpDataSender时,而AgentInfoSendRunnable线程中的exector方法只是简单的把数据加到队列中。
具体实现可以看一下。
首先是创建一个,然后注册监听的事件。
其创建的代码如下,核心的this.createExecuteThread(executorName)就是此方法。此方法创建一个线程,并且启动线程。而此方法的实现就是调用监听事件的方法。而最终调用的是TCPDataSender的sendPacket方法。而参数对象就是AgentInfoSendRunnable 传递的两个参数构造的RequestMarker对象,然后请求collector。
Pinpoint
TCP 握手,第一次握手管理Agent的生命周期,写入AgentLifeCycle表和AgentEvent表。
request请求发送agentInfo信息 application_REQUEST包 写入AgentInfo表ApplicationIndex表
当调用具体插件类,进行二进制转换时,当缓存时会request到collector中。
相关文章推荐
- pinpoint Agent-启动加载插件分析
- symbian 网络连接网络 IAP(Internet Access Point)缺省选择及CommDB分析
- symbian 网络连接网络 IAP(Internet Access Point)缺省选择及CommDB分析
- 检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析
- Linux 下TCP连接关闭情况分析
- Linux 下TCP连接关闭情况分析
- 用TCP连接分析TUXEDO的WS模式
- TCP/IP 协议简单分析(建立连接握手过程)
- TCP终止连接时状态分析
- Linux 下TCP连接关闭情况分析
- TCP连接状态分析
- symbian 网络连接网络 IAP(Internet Access Point)缺省选择及CommDB分析
- 对tcp连接的第三次握手的分析
- 对tcp连接的第二次握手的分析
- TCP连接一异常现象分析
- 检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析
- 用TCP连接分析TUXEDO的WS模式
- 抓包分析tcp连接
- 对服务器上出现大量的SYN_RECV状态的TCP连接的问题分析