SkyWalking has already provided several storage solutions. In this document, you could learn how to easily implement a new storage.
org.apache.skywalking.oap.server.library.module.ModuleProvider
.@Override public Class<? extends ModuleDefine> module() { return StorageModule.class; }
Here's a list of all DAO interfaces in storage:
IServiceInventoryCacheDAO
IServiceInstanceInventoryCacheDAO
IEndpointInventoryCacheDAO
INetworkAddressInventoryCacheDAO
IBatchDAO
StorageDAO
IRegisterLockDAO
ITopologyQueryDAO
IMetricsQueryDAO
ITraceQueryDAO
IMetadataQueryDAO
IAggregationQueryDAO
IAlarmQueryDAO
IHistoryDeleteDAO
IMetricsDAO
IRecordDAO
IRegisterDAO
ILogQueryDAO
ITopNRecordsQueryDAO
IBrowserLogQueryDAO
IProfileTaskQueryDAO
IProfileTaskLogQueryDAO
IProfileThreadSnapshotQueryDAO
UITemplateManagementDAO
In public void prepare()
, use this#registerServiceImplementation
method to register and bind with your implementation of the above interfaces.
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider
and org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider
are good examples.