配置管理
-
分布式環(huán)境中,配置文件同步非常常見
- 一般要求一個(gè)集群中。所有節(jié)點(diǎn)的配置信息是一致的,比如redis地址
- 我們對(duì)配置文件進(jìn)行修改后,希望能夠第一時(shí)間同步到各個(gè)節(jié)點(diǎn)上
-
配置管理可交給Zookeeper實(shí)現(xiàn)
- 可將配置信息寫入ZK上的一個(gè)Znode上
- 各個(gè)客戶端服務(wù)監(jiān)聽這個(gè)Znode
- 一旦Znode中的數(shù)據(jù)被修改,ZK服務(wù)端將通知各個(gè)客戶端服務(wù)器。
其他:攜程出了一個(gè)專門做配置管理的框架,功能更強(qiáng)大。地址:https://github.com/apolloconfig/apollo
生成分布式ID
在分布式環(huán)境中,分布式ID是必要的,一本分布式ID需滿足以下要求
- 全局唯一:必須保證ID是全局性唯一的,基本要求
- 高性能:高可用低延時(shí),ID生成響應(yīng)要塊,否則反倒會(huì)成為業(yè)務(wù)瓶頸
- 好接入:要秉著拿來即用的設(shè)計(jì)原則,在系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)上要盡可能的簡(jiǎn)單
- 趨勢(shì)遞增:最好趨勢(shì)遞增,這個(gè)要求就得看具體業(yè)務(wù)場(chǎng)景了,一般不嚴(yán)格要求
代碼如下
public long nextId(String path){
try {
Stat stat = client.setData().forPath(path, new byte[0]);
int version = stat.getVersion();
return version;
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}