链路追踪 SkyWalking 源码分析 —— Collector Jetty Server Manager

点击上方“芋道源码”,选择“设为星标

做积极的人,而不是积极废人!

源码精品专栏

 

摘要: 原创出处 http://www.iocoder.cn/SkyWalking/collector-jetty-server-module/ 「芋道源码」欢迎转载,保留摘要,谢谢!

因为微信文章无法外链,所以文章很多方法无法点击,跳转到对应的代码。

本文主要基于 SkyWalking 3.2.6 正式版

  • 1. 概述

  • 2. JettyManagerModule

  • 3. JettyManagerProvider

  • 4. JettyManagerService

  • 666. 彩蛋


1. 概述

本文主要分享 Collector Jetty Server Manager。Collector 通过该管理器,管理启动的多个 Jetty Server,例如 Agent Jetty Server、Naming Jetty Server、UI Jetty Server。

友情提示:建议胖友已经读过 《SkyWalking 源码分析 —— Collector Server Component 服务器组件》

Jetty Server Manager 在 SkyWalking 架构图处于如下位置( 红框 ) :

FROM https://github.com/apache/incubating-skywalking 

下面我们来看看整体的项目结构,如下图所示 :

???? 代码量非常少,考虑到这是个单独的项目,所以单独成文。

2. JettyManagerModule

org.skywalking.apm.collector.jetty.manager.JettyManagerModule ,实现 Module 抽象类,Jetty 管理器 Module 。

#name() 实现方法,返回模块名为 "jetty_manager" 。

#services() 实现方法,返回 Service 类名:JettyManagerService 。

3. JettyManagerProvider

org.skywalking.apm.collector.jetty.manager.JettyManagerProvider ,实现 ModuleProvider 抽象类,Jetty 管理器组件服务提供者。

#name() 实现方法,返回组件服务提供者名为 "jetty" 。

module() 实现方法,返回组件类为 JettyManagerModule 。

#requiredModules() 实现方法,返回依赖组件为空。


#prepare(Properties) 实现方法,执行准备阶段逻辑。

  • 第 55 行 :创建 JettyManagerServiceImpl 对象,并调用 #registerServiceImplementation(…) 父类方法,注册到 services 。

#start() 实现方法,执行启动阶段逻辑。目前是个空方法

#notifyAfterCompleted() 实现方法,执行启动完成逻辑。

  • 第 63 至 69 行 :遍历注册的服务器列表,逐个调用 JettyServer#start() 方法,进行启动。

4. JettyManagerService

org.skywalking.apm.collector.jetty.manager.service.JettyManagerService ,继承 Service 接口,Jetty 管理器服务接口

#createIfAbsent(host, port, contextPath) 接口方法,创建 Jetty Server ,若不存在。

#addHandler(host, port, serverHandler) 接口方法,添加 Jetty Server 请求处理器。

4.1 JettyManagerServiceImpl

org.skywalking.apm.collector.jetty.manager.service.JettyManagerServiceImpl ,Jetty 管理器服务实现类

构造方法 ,使用来自 JettyManagerProvider 的 servers 服务器数组。这是为什么 JettyManagerProvider 没有对 servers 做新增操作,结果里面有数据的原因

#createIfAbsent(host, port, contextPath) 实现方法,创建 Jetty Server ,若不存在。判断方式为 host + port 为唯一。

#addHandler(host, port, serverHandler) 实现方法,添加 Jetty Server 请求处理器。判断方式为 host + port 为唯一。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:


如果你喜欢这篇文章,喜欢,转发。

生活很美好,明天见(。・ω・。)ノ♡

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值