zookeeper 在項(xiàng)目中的六大應(yīng)用之配置管理、分布式ID

配置管理

  • 分布式環(huán)境中,配置文件同步非常常見

    1. 一般要求一個(gè)集群中。所有節(jié)點(diǎn)的配置信息是一致的,比如redis地址
    2. 我們對(duì)配置文件進(jìn)行修改后,希望能夠第一時(shí)間同步到各個(gè)節(jié)點(diǎn)上
  • 配置管理可交給Zookeeper實(shí)現(xiàn)

    1. 可將配置信息寫入ZK上的一個(gè)Znode上
    2. 各個(gè)客戶端服務(wù)監(jiān)聽這個(gè)Znode
    3. 一旦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;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容