栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

presto热加载catalog配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

presto热加载catalog配置

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();
            // 变更代码 presto原生加载catalog
            // injector.getInstance(StaticCatalogStore.class).loadCatalogs();
            // 变更代码 动态加载catalog
            injector.getInstance(CatalogStore.class).loadCatalogs();

            // 
            // 变更代码  去掉在Server类加载ConnectorIds信息,统一在热加载模版更新
//            updateConnectorIds(injector.getInstance(Announcer.class), injector.getInstance(CatalogManager.class));

            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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号