欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

zookeeper在項(xiàng)目中的實(shí)際應(yīng)用-創(chuàng)新互聯(lián)

ZooKeeper所提供的服務(wù)主要是通過(guò):數(shù)據(jù)結(jié)構(gòu)Node+原語(yǔ)+watcher機(jī)制

創(chuàng)新互聯(lián)是專業(yè)的萬(wàn)安網(wǎng)站建設(shè)公司,萬(wàn)安接單;提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行萬(wàn)安網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

ZooKeeper是一個(gè)分布式小文件系統(tǒng),通過(guò)選舉算法和集群復(fù)制可以避免單點(diǎn)故障,

由于是文件系統(tǒng),所以即使所有的ZooKeeper節(jié)點(diǎn)全部掛掉,數(shù)據(jù)也不會(huì)丟失,

重啟服務(wù)器之后,數(shù)據(jù)即可恢復(fù)。

ZooKeeper所實(shí)現(xiàn)的一切功能,都是由ZK節(jié)點(diǎn)的性質(zhì)和該節(jié)點(diǎn)所關(guān)聯(lián)的數(shù)據(jù)實(shí)現(xiàn)的,

至于關(guān)聯(lián)什么數(shù)據(jù)那就要看你干什么事了

① 集群管理:利用臨時(shí)節(jié)點(diǎn)特性,節(jié)點(diǎn)關(guān)聯(lián)的是機(jī)器的主機(jī)名、IP地址等相關(guān)信息,集群?jiǎn)吸c(diǎn)故障也屬于該范疇。

② 統(tǒng)一命名:主要利用節(jié)點(diǎn)的唯一性和目錄節(jié)點(diǎn)樹(shù)結(jié)構(gòu)。

③ 配置管理:節(jié)點(diǎn)關(guān)聯(lián)的是配置信息。

④ 分布式鎖:節(jié)點(diǎn)關(guān)聯(lián)的是要競(jìng)爭(zhēng)的資源。

以下為項(xiàng)目中的實(shí)際應(yīng)用

1.利用watcher機(jī)制

vqsapi 往6個(gè)接口發(fā)數(shù)據(jù)的時(shí)候,可以用zookeeper來(lái)監(jiān)控目前存活的mongodb與api,

vqsapi 動(dòng)態(tài)獲取,往mongodb與api都存活的接口發(fā)數(shù)據(jù)

2.利用臨時(shí)節(jié)點(diǎn)的特性

運(yùn)維接口探測(cè),可以每個(gè)服務(wù)器在zookeeper注冊(cè)一個(gè)臨時(shí)節(jié)點(diǎn),當(dāng)接口掛了時(shí)候,

session斷開(kāi),達(dá)到監(jiān)控的目的

3.利用節(jié)點(diǎn)唯一性的特性

分布式鎖,同時(shí)操作同一資源,可能出現(xiàn)并發(fā)問(wèn)題時(shí)候,上一把鎖

因?yàn)樵膠ookeeper 語(yǔ)句比較繁瑣,難以理解,所以curator 框架很好的實(shí)現(xiàn)了,下面為加鎖操作

String path = String.format(LockPathScheme.STRATEGY_MODEL_ROUTE, modelId, isp,province,value);
       
	   //加鎖操作
       CuratorFramework curator = CuratorFrameworkFactory.builder().retryPolicy(new ExponentialBackoffRetry(10000, 3)).connectString(zookeeperserver).build();
       curator.start();
       InterProcessMutex lock = new InterProcessMutex(curator, path);
       try {
    	   boolean b = lock.acquire(3, TimeUnit.SECONDS);
    	   if (!b) {
    		   resultMap.put("statusCode", 300);
              resultMap.put("message", "記錄正在被操作!");
              return resultMap;
           }
           //加鎖后,該干嘛干嘛了
    	    resultMap = this.strategyRoute_dnspod_save_detail(request, id, modelId, modelName, category, province, isp, containCname, type, remark, node, value, ttl, weight, status,customerViewId);
    	   return resultMap;
    	   
       }catch(Exception e){
	    	   e.printStackTrace();
	    	   resultMap.put("statusCode", 300);
	           resultMap.put("message", "內(nèi)部錯(cuò)誤!");
	           return resultMap;
       }finally {
       
          //記得一定要釋放鎖
    	   try{
               lock.release();
           }catch (Exception e){
               System.out.println(path + "釋放鎖失敗" + e);
           }
            CloseableUtils.closeQuietly(curator);
       }

最后上一個(gè)非常完美的例子,很好的使用了zookeeper 框架的各種特性

轉(zhuǎn)自  http://www.cnblogs.com/wuxl360/p/5817549.html

假設(shè)我們的集群有:

(1) 20個(gè)搜索引擎的服務(wù)器:每個(gè)負(fù)責(zé)總索引中的一部分的搜索任務(wù)。

① 搜索引擎的服務(wù)器中的15個(gè)服務(wù)器現(xiàn)在提供搜索服務(wù)。

② 5個(gè)服務(wù)器正在生成索引。

這20個(gè)搜索引擎的服務(wù)器,經(jīng)常要讓正在提供搜索服務(wù)的服務(wù)器停止提供服務(wù)開(kāi)始生成索引,或生成索引的服務(wù)器已經(jīng)把索引生成完成可以搜索提供服務(wù)了。

(2) 一個(gè)總服務(wù)器:負(fù)責(zé)向這20個(gè)搜索引擎的服務(wù)器發(fā)出搜索請(qǐng)求并合并結(jié)果集。

(3) 一個(gè)備用的總服務(wù)器:負(fù)責(zé)當(dāng)總服務(wù)器宕機(jī)時(shí)替換總服務(wù)器。

(4) 一個(gè)web的cgi:向總服務(wù)器發(fā)出搜索請(qǐng)求。

使用Zookeeper可以保證:

(1) 總服務(wù)器:自動(dòng)感知有多少提供搜索引擎的服務(wù)器,并向這些服務(wù)器發(fā)出搜索請(qǐng)求。

(2) 備用的總服務(wù)器:宕機(jī)時(shí)自動(dòng)啟用備用的總服務(wù)器。

(3) web的cgi:能夠自動(dòng)地獲知總服務(wù)器的網(wǎng)絡(luò)地址變化。

(4) 實(shí)現(xiàn)如下:

① 提供搜索引擎的服務(wù)器都在Zookeeper中創(chuàng)建znode,zk.create("/search/nodes/node1", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

② 總服務(wù)器可以從Zookeeper中獲取一個(gè)znode的子節(jié)點(diǎn)的列表,zk.getChildren("/search/nodes", true);

③ 總服務(wù)器遍歷這些子節(jié)點(diǎn),并獲取子節(jié)點(diǎn)的數(shù)據(jù)生成提供搜索引擎的服務(wù)器列表;

④ 當(dāng)總服務(wù)器接收到子節(jié)點(diǎn)改變的事件信息,重新返回第二步;

⑤ 總服務(wù)器在Zookeeper中創(chuàng)建節(jié)點(diǎn),zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

⑥ 備用的總服務(wù)器監(jiān)控Zookeeper中的"/search/master"節(jié)點(diǎn)。當(dāng)這個(gè)znode的節(jié)點(diǎn)數(shù)據(jù)改變時(shí),把自己?jiǎn)?dòng)變成總服務(wù)器,并把自己的網(wǎng)絡(luò)地址數(shù)據(jù)放進(jìn)這個(gè)節(jié)點(diǎn)。

⑦ web的cgi從Zookeeper中"/search/master"節(jié)點(diǎn)獲取總服務(wù)器的網(wǎng)絡(luò)地址數(shù)據(jù),并向其發(fā)送搜索請(qǐng)求。

⑧ web的cgi監(jiān)控Zookeeper中的"/search/master"節(jié)點(diǎn),當(dāng)這個(gè)znode的節(jié)點(diǎn)數(shù)據(jù)改變時(shí),從這個(gè)節(jié)點(diǎn)獲取總服務(wù)器的網(wǎng)絡(luò)地址數(shù)據(jù),并改變當(dāng)前的總服務(wù)器的網(wǎng)絡(luò)地址。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:zookeeper在項(xiàng)目中的實(shí)際應(yīng)用-創(chuàng)新互聯(lián)
URL鏈接:http://chinadenli.net/article0/cdheio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站策劃、標(biāo)簽優(yōu)化外貿(mào)網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)