Zookeeper分散式協調即分散式鎖機制

来源:https://www.cnblogs.com/JaxYoun/archive/2020/02/20/12334848.html
-Advertisement-
Play Games

主要用到的Zookeeper機制: 臨時+有序節點,節點watch機制 過程: 1. 發生分散式鎖競爭時,參與競爭的各個客戶端服務都到Zookeeper的同一父節點(代表著同一把鎖)下建立自己的臨時+有序子節點,創建成功後子節點名被zk返回給客戶端,各客戶端保存在本地。 2. 所有客戶端服務都拉取父 ...


主要用到的Zookeeper機制:

臨時+有序節點,節點watch機制

過程:

  1. 發生分散式鎖競爭時,參與競爭的各個客戶端服務都到Zookeeper的同一父節點(代表著同一把鎖)下建立自己的臨時+有序子節點,創建成功後子節點名被zk返回給客戶端,各客戶端保存在本地。
  2. 所有客戶端服務都拉取父節點下的子節點列表,通過對列表排序,將自己本地存儲的節點名與列表中的節點名比較:
    • 若本地節點與列表中最小的節點相同則表示拿到了鎖,此服務得到執行後續邏輯的機會。
    • 若本地節點不是列表中最小的,則表明拿鎖失敗,轉而監聽比自己小1位的節點在zookeeper中的實際節點,其餘節點亦然,從而完成了整體的監聽與排隊等待。
    • 成功得鎖的服務執行完畢後就斷開與zookeeper的session,zookeeper中與之對應的節點自動刪除,此時觸發監聽。
    • 刪除節點的事件被下一個服務監聽到,又觸發它拉取一次列表,做同樣的比較,發現自己是最小的節點,此時它拿到了鎖,獲得執行許可權,以此類推各服務互斥的逐個得到執行。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、spark的一大特性就是基於記憶體計算,Driver只保存任務的巨集觀性的元數據,數據量較小,且在執行過程中基本不變,不做重點分析,而真正的計算任務Task分佈在各個Executor中,其中的記憶體數據量大,且會隨著計算的進行會發生實時變化,所以Executor的記憶體管理才分析的重點。 2、在執行Sp ...
  • 1、Redis數據持久化的必要性 由於redis是基於記憶體的資料庫,面臨數據掉電易失的風險,要避免數據丟失,最好將記憶體數據持久化到磁碟等永久存儲介質上。服務重啟時,會先載入磁碟文件內的數據到記憶體,完成數據恢復。 2、RDB(RedisDB) 對記憶體中的redis全量數據進行 時點快照 並序列化,以文 ...
  • 1、常見的三種數據的集群存儲模式 1. full mirror:全量鏡像模式,單純備份模式,各個節點數據相同,都包含了全量數據,僅主節點可寫,保證了數據冗餘和讀的負載均衡。數據安全性高,橫向擴展能力差,資源利用率不高。 2. pure sharding:數據分片,每個節點的數據不相同,所有節點中數據 ...
  • 1、環境說明 | 操作系統 | CentOS Linux release 7.4.1708 (Core) | | | : : | | Ambari | 2.6.x | | HDP | 2.6.3.0 | | Spark | 2.x | | Phoenix | 4.10.0 HBase 1.2 | 2 ...
  • 本文是自己對MySQL的 索引的理解,如有錯誤,還望不吝指出。 1 索引 索引這兩個字著實有些太泛,而在我的理解中,其就是一個查字典的過程,比方說現在我們要從一本字典中查一個 字,那麼我們可以從目錄中的 字母找到這個 字,發現在 頁,然後翻到 就可以看到關於 這個的解釋、用法等。 可以看到我們不是從 ...
  • HDFS架構(Master Slave) 幾個進程的角色 1. nameNode(master):用於保存、管理、持久化文件的元數據(文件名、文件副本數、文件塊大小、文件塊列表),同時還要接收客戶端的文件讀寫請求。 2. secondaryNameNode:用於實時同步文件元數據,給nameNode ...
  • Yarn架構(Master Slave) 進程角色: resourceManager(Master):任務調度和集群資源管理。 nodeManager(Slave):單個節點的資源管理。 applicationMaster:為任務程式申請資源,任務程式運行狀態監控、錯誤恢復。 container:對 ...
  • 顧名思義 zookeeper 就是動物園管理員,他是用來管 hadoop(大象)、Hive(蜜蜂)、pig(小 豬)的管理員, Apache Hbase 和 Apache Solr 的分散式集群都用到了 zookeeper;Zookeeper: 是一個分散式的、開源的程式協調服務,是 hadoop ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...