Skip to content

参数配置 动态参数

ShenJW edited this page Jul 1, 2016 · 75 revisions
  • 什么是动态参数
    服务发布后可以通过@See[Kepler Admin]实时调整的参数集合,包括:
    • @See[常用参数]及其他特性中声明支持动态参数的框架配置
    • @Config声明的业务服务配置

  • @Config
    读取kepler.dynamic配置文件,当动态参数触发后回调对应方法并将最新配置回写至kepler.dynamic
     	name=kepler
    
    • 在服务中添加@Config标签配置:
     	@Config(name = "name", init = true)
     	public void name(String name) {
     		this.name = name;
     	}
    
    @Config.value表示动态参数配置文件的Key,@Config.init表示是否在初始化期间进行赋值
  • 配置文件备份
    • 动态参数触发最新配置回写时会对历史配置进行备份。通过添加应用启动参数可以关闭备份
      java -jar -Dbackup=false [启动包].jar

  • 配置文件定位
    • 默认从ClassPath加载。通过添加应用启动参数可以修改加载文件
      java -jar -Ddynamic=[(file://|url://)] [启动包].jar
      @See[加载路径的支持格式]

  • 动态参数回调 动态参数默认同一时刻仅允许一个线程进行回调(基于ZooKeeper Watcher)
    • 通过添加@Async可以使回调异步化:
     	@Async  
     	@Config(name = "trigger")
     	public void dosomthing(String name) {
     		// todo
     	}
    
    由于动态参数最终会同步至内存及物理磁盘。使用@Async如果失败,将无法保证配置的强一致性。
  • 配置变更通知
    单次动态参数回调可能包含多个配置,通过实现(@See[ConfigAware])可以感知所有配置变化
     	public void changed(Map<String, String> current, Map<String, String> newconfig);
    



  • 动态参数解析
    • 默认支持
      • String
      • Boolean
      • Long
      • Integer
      • Short
      • Byte
      • File
      • Date
    • 通过注册@See[ConfigParser]解析自定义类型
      • @See[示例下载], 可用于对照以下流程
         	<bean class="com.kepler.impl.AppParser" />
        
Clone this wiki locally