Kylin页面System操作源码解读


声明:本文转载自https://my.oschina.net/lzhaoqiang/blog/3064115,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

System中的主要操作在AdminController和CacheController

一. 源码结构

前端源码: angular:下面为自定义方法:

* Method type is PUT
 * Additional Query parameter action=config is sent
 * The expected return type not is an Array
 */ updateConfig: {method: 'PUT', params: {action: 'config'}, isArray: false}
KylinApp.factory('AdminService', ['$resource', function ($resource, config) {
  return $resource(Config.service.url + 'admin/:action', {}, {
    env: {method: 'GET', params: {action: 'env'}, isArray: false},
    config: {method: 'GET', params: {action: 'config'}, isArray: false},
    publicConfig: {method: 'GET', params: {action: 'public_config'}, isArray: false},
    cleanStorage: {method: 'DELETE', params: {action: 'storage'}, isArray: false},
    updateConfig: {method: 'PUT', params: {action: 'config'}, isArray: false}
  });
}]);
params: {action: 'config'}对应AdminController的RequestMapping的映射

二. 探索每个按钮

1. Server Config的刷新按钮

调用的是getConfig(AdminController中的getConfig方法) getConfig操作会从ThreadLocal的KylinConfig中查找有没有此对象,如果有则获取返回,所以当set Config之后,有了KylinConfig对象,所以Server Config的刷新按钮可以获取到修改后的配置属性

2. Server Environment刷新按钮

调用的是getEnv操作(AdminController中的getEnv方法)

3. Set Config按钮

调用updateKylinConfig,会将前端也就是页面上传过来的kv值进行更新,会将数据存储到KylinConfig对象内存中。这是一个put操作,在restful中相当于调用服务器的update方法。

4. Clean Up Storage

调用(AdminController中的cleanupStorage方法) storage对应cleanupStorage,此操作的运行原理官网解释:http://kylin.apache.org/docs/howto/howto_cleanup_storage.html, 也就是会清除kylin cube构建 工作期间生成的hdfs中间文件

5. reloadConfig

调用hotLoadKylinConfig(CacheController中) 这是一个POST请求,可以热加载配置文件的更新,通过broadcast的方式 KylinConfig.getInstanceFromEnv().reloadFromSiteProperties(); cacheService.notifyMetadataChange(Broadcaster.SYNC_ALL, Broadcaster.Event.UPDATE, Broadcaster.SYNC_ALL); reloadFromSiteProperties操作会使用BackwardCompatibilityConfig的check方法,将key,value强制转换为String类型, 类似于格式化

6. Calculate Cardinality

预估某个hive表的基数,点击这个按钮会让用户填写hive表相关信息

7. Disable Cache

是将kylin.query.cache-enabled参数设为false

8. Enable Cache

是将kylin.query.cache-enabled参数设为true

9. Reload metadata

调用CacheController的announceWipeCache方法 会使用Broadcaster清除所有节点缓存

所以,当set config之后,只是将参数设置到了Properties对象中,并不持久化,而当reload时,会读取kylin.properties文件的配置,所以reload会重新刷新缓存内容

本文发表于2019年06月20日 11:00
(c)注:本文转载自https://my.oschina.net/lzhaoqiang/blog/3064115,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1602 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1