91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大數據生態之zookeeper(原理)

發布時間:2020-07-13 10:54:48 來源:網絡 閱讀:270 作者:原生zzy 欄目:大數據

1.  集群的角色描述:

大數據生態之zookeeper(原理)

角色

描述

領導者(leader)

領導者負責進行公布決議,主要處理寫請求

跟隨者(follower)

Follower用于接收客戶端請求并向客戶端返回結果(只能處理讀請求,如果接收到寫請求,
將寫請求轉發給leader),當leader宕機時,發起選主,有投票和被投票權

觀察者(observer)

Observer可以接收客戶端連接,將寫請求轉發給leader節點,幫助follower減輕讀的壓力
但Observer不參加選舉和被選舉。Observer的目錄是為了擴展系統,提高讀取速度

客戶端

請求發起方

 

2. zookeeper的選主過程

(1)全新集群的選主:

             根據啟動的順序和id進行選主(過半機制:集群中超過半數的集群可使用時,才開始選主)

             以hadoop01(id=1)—hadoop02(id=2)---hadoop03(id=3)----hadoop04(id=r)----hadoop05(id=5)為例:

  • 當hadoop01啟動時,此時只有它一臺服務器,,他發出取的報告沒有任何相應,所有它的選舉一直是looking狀態。

  • Hadoop02啟動:它與最開始啟動的hadoop01進行通信,相互交換自己的選舉結果,由于兩者都沒有歷史數據,所以id值較大的服務器勝出,但是由于沒有達到超過半數以上的服務器同意選舉它(這個例子中的半數以上是 3),所有hadoop01、hadoop02還是繼續保持looking狀態。

  • Hadoop03啟動,根據前面的分析,服務器 3 成為服務器 1,2,3 中的老大,而與上面不 同的是,此時有三臺服務器(超過半數)選舉了它,所Hadoop03它成為了這次選舉的 leader

  • 服hadoop04啟動,根據上面的分析,理論上,hadoop04應該是服務器中id最大的,但是由前面已近有超過半數的服務器選舉了hadoop03,所以hadoop04只能是follower

  • Hadoop05啟動,與hadoop04一樣,也是follower

          zookeeper server的三種工作狀態:

    • LOOKING:當前 Server 不知道 leader 是誰,正在搜尋,正在選舉

    • LEADING:當前 Server 即為選舉出來的 leader,負責協調事務

    • FOLLOWING:leader 已經選舉出來,當前 Server 與之同步,服從 leader 的命令


(2)非全新集群的選主

         leader 已經選舉出來,當前 Server 與之同步,服從 leader 的命令,但是由于某種原因主節點宕機:

         此時我們根據三個維度來選主:數據version、serverid、邏輯時鐘

  • 數據version:數據新的version就大,數據每次更新,同時會更新它的version

  • Serverid:就是我們配置的 myid 中的值,每個機器一個

  • 邏輯時鐘:這個值從0開始,每一次選舉對應一個值,也就是說,如果在同一次選舉中,這個值應該一致,邏輯時鐘越大,說明這一次選舉leader人的進程更新,也就是每次選舉擁有一個 zxid,投票結果只取 zxid 最新的

        選舉的標準:

  • 邏輯時鐘小的選舉結果被忽略,重新投票

  • 統一邏輯時鐘后數據version大的勝出

  • 邏輯時鐘統一,version也相同,,server id 大的勝出。

       根據以上的規則,快速選出集群的主節點。

 

3. zookeeper寫數據的流程:

  • 客戶端發送寫入數據的請求,這個請求最終會被leader處理

  • leader會先寫入數據,寫入完成之后通知follower進行數據的同步

  • follower就會開始進行數據的同步(并行,多臺follower并行同步)

  • 每一個follower只要數據同步完成就會向leader發送數據同步成功信息

  • leader接收到超過半數以上的成功信息后,則認為這次寫數據成功

  • 其他節點慢慢進行同步,在數據同步的過程中,不對外提供讀寫服務

 

4. zookeeper的數據的同步過程

  • follower連接leader并發送自己最大的zixd

  • leader進行對比,將自己最大的zxid和follower發送過來的zxid進行對比,如果leader的zxid大于follower的,則通知follower進行數據同步

  • follower發送數據同步請求

  • leader確定當前的follower的數據同步點(從follower最大的zxid到leader最大的zxid之間數據需要同步)

  • follower開始同步數據,這個過程不對外提供讀寫服務

  • follower同步完成,發送消息給leader

  • leader就會修改當前的follower的狀態為update,這個時候follower就可以接受客戶端的讀寫請求,但是只能讀,如果是寫入請求,需要轉發給leader

 

5. ZooKeeper 中各個角色的工作職責

   (1)Leader

  • 恢復數據

  • 維持與follower的心跳,接收follower請求并判斷follower的請求消息類型

  • 根據不同的消息類型,進行不同的處理

    (2)follower

  • 向leader發送請求(同步數據,寫入請求)

  • 接收leader的消息并進行相應的處理

  • 接收client的讀寫請求,如果是寫入的請求轉發給leader處理

  • 返回client的讀請求,查詢的結果      

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

壤塘县| 丰城市| 湘潭市| 巴林右旗| 奎屯市| 滨海县| 灯塔市| 青川县| 增城市| 乾安县| 墨竹工卡县| 乐安县| 康马县| 宁阳县| 金昌市| 扶绥县| 杭锦旗| 高唐县| 雅安市| 崇礼县| 南丰县| 信丰县| 滁州市| 茂名市| 昆明市| 仁布县| 公安县| 南丹县| 安丘市| 韶关市| 高平市| 渭源县| 西林县| 金门县| 延安市| 桂林市| 靖江市| 台南县| 南乐县| 偏关县| 浏阳市|