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

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

内容简介:分布式追踪 & 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 缓存组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Head First jQuery

Head First jQuery

Ryan Benedetti , Ronan Cranley / O'Reilly Media / 2011-9 / USD 39.99

Want to add more interactivity and polish to your websites? Discover how jQuery can help you build complex scripting functionality in just a few lines of code. With Head First jQuery, you'll quickly g......一起来看看 《Head First jQuery》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具