presto启动从远程获取catalog配置做加载
启动类Server的代码变更
try {
Injector injector = app.strictConfig().initialize();
logLocation(log, "Working directory", Paths.get("."));
logLocation(log, "Etc directory", Paths.get("etc"));
injector.getInstance(PluginManager.class).loadPlugins();
injector.getInstance(CatalogStore.class).loadCatalogs();
injector.getInstance(SessionPropertyDefaults.class).loadConfigurationManager();
injector.getInstance(ResourceGroupManager.class).loadConfigurationManager();
injector.getInstance(AccessControlManager.class).loadSystemAccessControl();
injector.getInstance(PasswordAuthenticatorManager.class).loadPasswordAuthenticator();
injector.getInstance(EventListenerManager.class).loadEventListeners();
injector.getInstance(GroupProviderManager.class).loadConfiguredGroupProvider();
injector.getInstance(CertificateAuthenticatorManager.class).loadCertificateAuthenticator();
injector.getInstance(Announcer.class).start();
injector.getInstance(ServerInfoResource.class).startupComplete();
log.info("======== SERVER STARTED ========");
}
catch (Throwable e) {
log.error(e);
System.exit(1);
}
远程加载流程

presto监听远程catalog配置变化做热加载

配置类,配置写在config.properties
public class DynamicCatalogStoreConfig {
private boolean dynamic;
private String restUrl;
private long timerPeriod= 5L;
private String secretKey;
@Config("catalog.dynamic")
public DynamicCatalogStoreConfig setDynamic(boolean dynamic) {
this.dynamic = dynamic;
return this;
}
@Config("catalog.dynamic.rest-url")
public DynamicCatalogStoreConfig setRestUrl(String restUrl) {
this.restUrl = restUrl;
return this;
}
@Config("catalog.dynamic.timer-period-minutes")
public DynamicCatalogStoreConfig setTimerPeriod(long timerPeriod) {
this.timerPeriod = timerPeriod * 60 * 1000;
return this;
}
@Config("catalog.dynamic.secret-key")
public DynamicCatalogStoreConfig setSecretKey(String secretKey) {
this.secretKey = secretKey;
return this;
}
public boolean isDynamic() {
return dynamic;
}
public String getRestUrl() {
return restUrl;
}
public long getTimerPeriod() {
return timerPeriod;
}
public String getSecretKey() {
return secretKey;
}
}
key | 描述 | 默认值 |
---|
catalog.dynamic | 是否动态热加载数据源 | false |
catalog.dynamic.rest-url | 获取远程catalog数据源信息的接口 | 空 |
catalog.dynamic.secret-key | 解密从远程获取的catalog信息 | 空 |
catalog.dynamic.timer-period-minutes | 定时从远程获取catalog数据源并刷新本地内存catalog频率,单位分 | 5 |