内容简介:分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件
摘要: 原创出处 http://www.iocoder.cn/SkyWalking/collector-cache-module/ 「芋道源码」欢迎转载,保留摘要,谢谢!
关注 微信公众号:【芋道源码】 有福利:
- RocketMQ / MyCAT / Sharding-JDBC 所有 源码分析文章列表
- RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
- 您对于源码的疑问每条留言 都 将得到 认真 回复。 甚至不知道如何读源码也可以请教噢 。
- 新的 源码解析文章 实时 收到通知。 每周更新一篇左右 。
- 认真的 源码交流微信群。
1. 概述
本文主要分享 SkyWalking Collector Cache Module ,缓存组件。该组件用于缓存 Application 、Instance 、ServiceName 等 常用 且 不变 的数据,以提升性能。
友情提示:本文内容较为简单,胖友可快速阅读。
Cache Module 在 SkyWalking 架构图处于如下位置( 红框 ) :
下面我们来看看整体的项目结构,如下图所示 :
-
collector-cache-define:定义缓存组件接口。 -
collector-cache-guava-provider:基于 Google Guava 的缓存组件实现。
下面,我们从 接口到实现 的顺序进行分享。
2. collector-cache-define
collector-cache-define :定义队列组件接口。项目结构如下 :
2.1 CacheModule
org.skywalking.apm.collector.cache.CacheModule ,实现 Module 抽象类,缓存 Module 。
#name() 实现 方法,返回模块名为 "cache" 。
#services() 实现 方法,返回 Service 类名:ApplicationCacheService 、InstanceCacheService 、ServiceIdCacheService 、ServiceNameCacheService 。
2.2 ApplicationCacheService
org.skywalking.apm.collector.cache.service.ApplicationCacheService ,应用数据缓存服务 接口 。
- Table :
org.skywalking.apm.collector.storage.table.register.ApplicationTable - Data :
org.skywalking.apm.collector.storage.table.register.Application
2.3 InstanceCacheService
org.skywalking.apm.collector.cache.service.InstanceCacheService ,应用实例数据缓存服务 接口 。
- Table :
org.skywalking.apm.collector.storage.table.register.InstanceTable - Data :
org.skywalking.apm.collector.storage.table.register.Instance
2.4 ServiceNameCacheService
org.skywalking.apm.collector.cache.service.ServiceNameCacheService ,服务名数据缓存服务 接口 。
org.skywalking.apm.collector.cache.service.ServiceIdCacheService ,服务编号数据缓存服务 接口 。
- Table :
org.skywalking.apm.collector.storage.table.register.ServiceNameTable - Data :
org.skywalking.apm.collector.storage.table.register.ServiceName
3. collector-cache-guava-provider
collector-cache-guava-provider ,基于 Google Guava 的缓存组件实现。
项目结构如下 :
默认配置,在 application-default.yml 已经 配置如下:
cache: guava:
3.1 CacheModuleGuavaProvider
org.skywalking.apm.collector.cache.guava.CacheModuleGuavaProvider ,实现 ModuleProvider 抽象类 ,基于 Guava 的缓存组件服务提供者。
#name() 实现 方法,返回组件服务提供者名为 "guava" 。
module() 实现 方法,返回组件类为 CacheModule 。
#requiredModules() 实现 方法,返回依赖组件为空。
#prepare(Properties) 实现 方法,执行准备阶段逻辑。
- 第 44 行 :创建 ApplicationCacheGuavaService 、InstanceCacheGuavaService 、ServiceIdCacheGuavaService 、ServiceNameCacheGuavaService 对象,并调用
#registerServiceImplementation()父类 方法,注册到services。
#start() 实现 方法,方法为空。
#notifyAfterCompleted() 实现 方法,方法为空。
3.2 ApplicationCacheGuavaService
org.skywalking.apm.collector.cache.guava.service.ApplicationCacheGuavaService ,实现 ApplicationCacheService 接口,基于 Guava 的应用数据缓存服务 实现类 。
3.3 InstanceCacheGuavaService
org.skywalking.apm.collector.cache.guava.service.InstanceCacheGuavaService ,实现 InstanceCacheService 接口,基于 Guava 的应用实例数据缓存服务 实现类 。
3.4 ServiceNameCacheGuavaService
org.skywalking.apm.collector.cache.guava.service.ServiceNameCacheGuavaService ,实现 ServiceNameCacheService 接口,基于 Guava 的服务名数据缓存服务 实现类 。
org.skywalking.apm.collector.cache.guava.service.ServiceIdCacheGuavaService ,实现 ServiceNameCacheService 接口,基于 Guava 的服务编号数据缓存服务 实现类 。
666. 彩蛋
真的是一篇水文,都写的无从下手,只好罗列了相关的类。见谅。
胖友,分享一波朋友圈可好。
以上所述就是小编给大家介绍的《分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程式之美-微軟技術面試心得
編程之美小 / 悅知文化 / 2008.06.20 / 490元
書內容分為以下幾個部分: ▓ 遊戲之樂:從遊戲和其他有趣問題出發,化繁為簡,分析總結。 ▓ 數字之魅:程式設計的過程實際上就是和數字及字元打交道的過程。這一部分收集了一些這方面的有趣探討。 ▓ 結構之法:彙集了常見的對字串、鏈表、佇列,以及樹進行操作的題目。 ▓ 數學之趣:列舉了一些不需要寫具體程式的數學問題,鍛煉讀者的抽象思考能力。 ▓ 書中絕大部分題目都提供了詳細......一起来看看 《程式之美-微軟技術面試心得》 这本书的介绍吧!