[视频] SkyWalking 8.7.0 源码分析
SkyWalking 的美妙不仅在于其强大的功能,还在于其优秀的代码实现。
如果要讨论提高自己系统设计能力的方式,我想大多数人都会选择去阅读优秀开源项目的源代码。近年来我参与了多个监控服务的开发工作,并在工作中大量地使用了 SkyWalking 并对其进行二次开发。在这个过程中,我发现 SkyWalking 天然的因其国产的身份,整套源代码地组织和设计非常符合国人的编程思维。由此我录制了本套课程,旨在和大家分享我的一些浅薄的心得和体会。
本套课程分为两个阶段,分别讲解 Agent 端和 OAP 端地设计和实现。每个阶段的内容都是以启动流程作为讲解主线,逐步展开相关的功能模块。除了对 SKyWalking 本身内容进行讲解,课程还针对 SKyWalking 使用到的一些较为生僻的知识点进行了补充讲解(如 synthetic、NBAC 机制、自定义类加载器等),以便于大家更清晰地掌握课程内容。
SkyWalking8.7.0 源码分析 - 视频课程直达链接
目前课程已更新完 Agent 端的讲解,目录如下:
- 01-开篇和源码环境准备
- 02-Agent 启动流程
- 03-Agent 配置加载流程
- 04-自定义类加载器 AgentClassLoader
- 05-插件定义体系
- 07-插件加载
- 06-定制 Agent
- 08-什么是 synthetic
- 09-NBAC 机制
- 10-服务加载
- 11-witness 组件版本识别
- 12-Transform 工作流程
- 13-静态方法插桩
- 14-构造器和实例方法插桩
- 15-插件拦截器加载流程(非常重要)
- 16-运行时插件效果的字节码讲解
- 17-JDK 类库插件工作原理
- 18-服务-GRPCChanelService
- 19-服务-ServiceManagementClient
- 20-服务-CommandService
- 21-服务-SamplingService
- 22-服务-JVMService
- 23-服务-KafkaXxxService
- 24-服务-StatusCheckService
- 25-链路基础知识
- 26-链路 ID 生成
- 27-TraceSegment
- 28-Span 基本概念
- 29-Span 完整模型
- 30-StackBasedTracingSpan
- 31-ExitSpan 和 LocalSpan
- 32-链路追踪上下文 TracerContext
- 33-上下文适配器 ContextManager
- 34-DataCarrier-Buffer
- 35-DataCarrier-全解
- 36-链路数据发送到 OAP