本篇內(nèi)容主要講解“zk集群版服務(wù)啟動實現(xiàn)Leader和Follower之間數(shù)據(jù)交互”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“zk集群版服務(wù)啟動實現(xiàn)Leader和Follower之間數(shù)據(jù)交互”吧!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、江干網(wǎng)站維護、網(wǎng)站推廣。
集群版服務(wù)啟動過程
LeaderElection算法
完成自己投票和投票算法的獲取
集群特有,zookeeper首先會根據(jù)自身服務(wù)器id(sid)
最新的zxid(lastloggedZxid)和當前的服務(wù)器epoch(currentEpoch)
來生成一個初始化投票
初始化過程中,每個服務(wù)都會給自己投票,然后,根據(jù)zoo.cfg的配置
創(chuàng)建相應(yīng)Leader選舉算法實現(xiàn)
zk配置中提供默認三種算法(Leaderelection,AuthFastLeaderElection,FastLeaderElection).通過zoo.cfg的electionalg屬性指定,默認支持FastLeaderElection
在初始化階段,會創(chuàng)建選舉需要的網(wǎng)絡(luò)i/o層 QuorumCnxManager,等待其他服務(wù)的連接
@Override public synchronized void start() { if (!getView().containsKey(myid)) { throw new RuntimeException("My id " + myid + " not in the peer list"); } //加載數(shù)據(jù)庫 loadDataBase(); //啟動服務(wù)連接工廠 startServerCnxnFactory(); try { adminServer.start(); } catch (AdminServerException e) { LOG.warn("Problem starting AdminServer", e); System.out.println(e); } //開始選舉 startLeaderElection(); startJvmPauseMonitor(); super.start(); } public synchronized void startLeaderElection() { try { if (getPeerState() == ServerState.LOOKING) { //認為當前是leader currentVote = new Vote(myid, getLastLoggedZxid(), getCurrentEpoch()); } } catch (IOException e) { RuntimeException re = new RuntimeException(e.getMessage()); re.setStackTrace(e.getStackTrace()); throw re; } this.electionAlg = createElectionAlgorithm(electionType); }
Leader和Follower啟動交互過程
到此,相信大家對“zk集群版服務(wù)啟動實現(xiàn)Leader和Follower之間數(shù)據(jù)交互”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!