ID服务的配置原创
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版本开始支持。
应用场景:蓝绿升级。
推荐阅读