ID服务的配置原创
金蝶云社区-ooodz
ooodz
2人赞赏了该文章 803次浏览 未经作者许可,禁止转载编辑于2020年11月16日 17:32:46

ID服务不做任何配置即可用,但有些情况下需要做定制化配置。

因为是ID是基础服务,运行过程中是不可变的,配置变更后需要重启微服务节点才生效。


ID服务初始化需要用分布式锁(ID服务内置功能),来获取唯一种子。

种子最多为8192个,服务简单宕机后,对应的种子会暂时“轮空”,但以后会被新启节点复用起来,通常无需维护。


1. 配置ZK存储

默认ID服务使用配置服务的ZooKeeper作为存储,存储的数据用途:锁、种子、心跳时间。

zk中存储路径为:${zkrootpath}/${clusterName}/runtime/ids

可指定zk:

IDService.store.zookeeper=xxx.xxx.xxx.xxx:2181



2.配置worker数

ID服务由多个worker一起提供值,默认worker个数为1个 (做高可靠用的,通常不需要多个,除非zk经常断连):

IDService.worker=1

每个worker自行维护自己的可用性,若所在服务节点出现“时间回拨”的情况,未避免产生重复ID,worker检测到回拨后自行重启,获取新的种子继续服务。



3.配置跨集群服务

ID服务若要在两个或以上的集群内,保持唯一,则需要把相关的集群的IDService.store.zookeeper指向同一个zk, 且各集群${zkrootpath}值一致

同时,设置以下参数:

#开启支持跨集群服务(默认关闭)
bos.supportMultiCluster=true

这样,ID服务存储路径变为:${zkrootpath}/cross_cluster/runtime/ids


其中cross_cluster也可以再配置为可变量 (方便一个zk为多个集群提供服务):

#zk共享存储根路径,默认值:cross_cluster
bos.crossClusterPath=cross_cluster


跨集群服务在V3.0版本开始支持。

应用场景:蓝绿升级。




赞 2