SkyWalking 已经提供了多种存储解决方案. 在本文档中, 您可以学习如何轻松实现新存储.
- 定义一个类扩展
org.apache.skywalking.oap.server.library.module.ModuleProvider
. - 让此存储提供者继承存储模块(
StorageModule
).
@Override
public Class<? extends ModuleDefine> module() {
return StorageModule.class;
}
下面是所有数据存储所需实现的 DAO 接口
- IServiceInventoryCacheDAO
- IServiceInstanceInventoryCacheDAO
- IEndpointInventoryCacheDAO
- INetworkAddressInventoryCacheDAO
- IBatchDAO
- StorageDAO
- IRegisterLockDAO
- ITopologyQueryDAO
- IMetricQueryDAO
- ITraceQueryDAO
- IMetadataQueryDAO
- IAggregationQueryDAO
- IAlarmQueryDAO
- IHistoryDeleteDAO
在 public void prepare()
方法中, 使用 this#registerServiceImplementation
方法去注册绑定您的接口实现.
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider
或 org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider
就是一个很好的例子.
您不必为了实现数据存储而克隆主托管库, 您可以轻松地依赖我们的 Apache 发布版本. 看一下 OpenSkywalking/SkyWalking-With-Es5x-Storage 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现.