0
点赞
收藏
分享

微信扫一扫

dremio 的服务管理

北冥有一鲲 2022-10-24 阅读 129

dremio 因为服务组件比较多,所以一些比较核心的可以做为服务的都会包装为一个service, 可以大大简化服务的管理,以及服务状态的统计

service

  • 接口定义

public interface Service extends AutoCloseable {
void start() throws Exception;
}

  • 一些实现
    特别多,而且庞杂,可以看出dremio 组件的复杂

dremio 的服务管理_ide

集群service 管理

主要是对于dremio 集群组件服务的定义以及管理

  • 接口定义ClusterServiceSetManager

public interface ClusterServiceSetManager extends Service {
/**
* Get a provider which returns the up-to-date list of endpoints for a given role.
*
* @param role the role to look up for
* @return a provider for a collection of endpoints
* @throws NullPointerException if role is {@code null}
*/
ServiceSet getServiceSet(ClusterCoordinator.Role role);

/**
* Get or create a {@link ServiceSet} for the given service name
* @param serviceName
* @return
*/
ServiceSet getOrCreateServiceSet(String serviceName);

/**
* Get the set of service names registered in the ClusterCoordinator ServiceSet.
* NOTE: There is no guarantee of return object consistency depending on how Dremio is tracking the registered serivces.
*
* @return An Iterable of service names.
*/
Iterable<String> getServiceNames() throws Exception;
}

  • 实现子类

dremio 的服务管理_github_02

 

 

服务管理

包含了不少的服务,就需要统一管理了,目前支持了ServiceRegistry,进行服务的注册,替换,启动以及停止GuiceServiceModule 也是一个可以管理service 的类
属于一个标准的guice 模块,同时dremio 也包装了一个SingletonRegistry可以查找服务

说明

graylog 在服务管理上就使用了guava 的ServiceManager 也是一个不错的选择,如果我们基于guava 的service 进行dremio 的service 管理也是一个不错的选择,而且代码上也会比较清晰容易维护,

参考资料

​​https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/services/coordinator/src/main/java/com/dremio/service/coordinator/ClusterServiceSetManager.java​​​
​​​https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/common/src/main/java/com/dremio/service/Service.java​​​
​​​https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/common/src/main/java/com/dremio/service/ServiceRegistry.java​​​
​​​https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemonModule.java​​​
​​​https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/common/src/main/java/com/dremio/service/SingletonRegistry.java​​

举报

相关推荐

0 条评论