SOFAArk 提供了 config-ark-plugin 对接 Zookeeper 配置中心,用于运行时接受配置,达到控制 Biz 生命周期,引入如下依赖:
参考 ,在 SOFAArk 配置文件 增加如下配置:
SOFAArk 启动后,会在 ZK 注册两个节点配置,分别是宿主应用维度和 IP 维度:
sofa-ark/${com.alipay.sofa.ark.master.biz}/
> 宿主应用维度配置,应用启动时,会拉取该维度配置,控制相关 Biz 的部署;应用重启后,配置不会丢失
通过写这两个节点的配置,可以控制相关机器和应用的 Biz 运行时状态。
多条指令使用 ;
隔开,单条指令主要由 biz 名称,biz 版本,biz 预期状态及参数组成。简单记住一点,状态配置是描述指令推送之后,所有非宿主 Biz 的状态;
例如当前 SOFAArk 容器部署了两个应用 A,B,版本均为 1.0,其中 A 应用为宿主应用,因为宿主应用不可卸载,因此不需要考虑宿主应用,可以简单认为当前容器的 Biz 状态声明为:
如果此时你希望安装 C 应用,版本为 1.0,文件流地址为 urlC,那么推送指令应为:
操作继续,如果你希望卸载 B 应用 2.0 版本,激活 B 应用 1.0 版本,卸载 C 应用,那么推送的指令声明为:
从上面的操作描述看,在推送动态配置时,只需要声明期望的 Biz 状态即可,SOFAArk 会根据状态声明推断具体的执行指令,并尽可能保持服务的连续性,以上面最后一步操作为例,SOFAArk 推断的执行指令顺序如下:+ 执行 switch 指令,激活 B 应用 1.0 版本,钝化 B 应用 2.0 版本,保证服务连续性+ 执行 uninstall 指令,卸载 B 应用 2.0 版本+ 执行 uninstall 指令,卸载 C 应用 1.0 版本
目前只有在安装新 Biz 时才可能使用指令参数 bizUrl,用于指定 Biz 文件流地址。文件流地址字符串是能够直接构建 URL 对象,例如 或者 http://xxx
. 安装新 Biz 时,参数 bizUrl 不是必须的,SOFAArk 提供了扩展点: