分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

栏目: Java · 发布时间: 7年前

内容简介:分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

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

分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

关注 微信公众号:【芋道源码】 有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有 源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言 将得到 认真 回复。 甚至不知道如何读源码也可以请教噢
  4. 新的 源码解析文章 实时 收到通知。 每周更新一篇左右
  5. 认真的 源码交流微信群。

1. 概述

本文主要分享 SkyWalking Collector Cache Module ,缓存组件。该组件用于缓存 Application 、Instance 、ServiceName 等 常用不变 的数据,以提升性能。

友情提示:本文内容较为简单,胖友可快速阅读。

Cache Module 在 SkyWalking 架构图处于如下位置( 红框 ) :

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

分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

  • collector-cache-define :定义缓存组件接口。
  • collector-cache-guava-provider :基于 Google Guava 的缓存组件实现。

下面,我们从 接口到实现 的顺序进行分享。

2. collector-cache-define

collector-cache-define :定义队列组件接口。项目结构如下 :

分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

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 ,应用数据缓存服务 接口

2.3 InstanceCacheService

org.skywalking.apm.collector.cache.service.InstanceCacheService ,应用实例数据缓存服务 接口

2.4 ServiceNameCacheService

org.skywalking.apm.collector.cache.service.ServiceNameCacheService ,服务名数据缓存服务 接口

org.skywalking.apm.collector.cache.service.ServiceIdCacheService ,服务编号数据缓存服务 接口

3. collector-cache-guava-provider

collector-cache-guava-provider ,基于 Google Guava 的缓存组件实现。

项目结构如下 : 分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件

默认配置,在 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 缓存组件

胖友,分享一波朋友圈可好。


以上所述就是小编给大家介绍的《分布式追踪 & APM 系统 SkyWalking 源码分析 —— Collector Cache 缓存组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

现代信息检索

现代信息检索

(西班牙) Ricardo Baeza-Yates、(巴西)Berthier Ribeiro-Neto / 机械工业出版社 / 2011-3 / 78.00元

本书不仅详细介绍了信息检索的所有主要概念和技术,以及有关信息检索面的所有新变化,而且其组织使读者既可以对现代信息检索有一个全面的了解,又可以获取现代信息检索所有关键主题的详细知识。本书的主要内容由信息检索领域的代表人物Baeza-Yates和Ribeiro-Neto编写,对于那些希望深入研究关键领域的读者,书中还提供了由其他主要研究人员编写的关于特殊主题的发展现状。 与上一版相比,本版在内容......一起来看看 《现代信息检索》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具