zookeeper分布式鎖 -- 讀鎖和寫鎖實現方式

讀鎖和寫鎖

讀鎖: 是共享鎖,讀鎖與讀鎖是可以兼容的,所以同時有多個請求都可以持有

寫鎖: 是獨占鎖,寫鎖與任何鎖都互斥,所以只有一個請求持有,這個請求釋放寫鎖其他請求才能持有

一旦持有寫鎖,說明數據在發送變化就不能讀了,自然一個請求就不能出現讀鎖和寫鎖共存的情況

總結: 讀鎖與讀鎖之間兼容,其他都是互斥

讀寫鎖的實現邏輯轉換如下

讀鎖: 請求要判斷是否可以持有共享資源的讀鎖,需要判斷之前是否有請求持有這個共享資源的寫鎖

寫鎖: 請求要判斷是否可以持有寫鎖,需要判斷是否有請求持有這個共享資源的讀鎖或者寫鎖,就是沒有請求持有這個共享資源的任何的鎖

zookeeper區分分布式鎖

區分是那個共享資源的鎖,是通過zookeeper路徑來區分的
區分一個共享資源是讀鎖還是寫鎖這種鎖的類型,是通過zookeeper節點名的前綴來區分的

zookeeper實現分布式寫鎖

1、請求過來的時候都會創建一個臨時序號節點

2、獲取zookeeper中所有的臨時序號節點

3、判斷自己是否是最小的節點

????????如果是,說明在這個請求之前是沒有其他請求獲取并持有這個共享資源的讀鎖或者寫鎖,目前共享資源訪問的第一個請求,我可以獲取并持有這個共享資源的寫鎖

????????如果不是,說明已經有請求在我之前獲取并持有這個共享資源的寫鎖或者讀鎖了,前面有請求獲取到寫鎖或者讀鎖,我都互斥,自然就獲取寫鎖失敗

? ? ? ? 獲取鎖失敗之后,監聽最小的臨時序號節點,如果最小的臨時序號節點出現變化,則回到第二步進行執行

zookeeper實現分布式讀鎖

1、請求過來的時候都會創建一個臨時序號節點

2、獲取到zookeeper中比自己序號小的所有臨時節點

3、判斷最小節點是否為讀鎖(根據寫鎖的實現原理可知,如果寫鎖存在,必然是最小臨時序號節點)

? ? ? ? 如果是讀鎖,說明這個共享資源目前沒有請求持有寫鎖,直接獲取并持有讀鎖

????????如果不是讀鎖,說明目前第一個請求持有寫鎖,讀鎖寫鎖互斥,獲取并持有讀鎖失敗

????????獲取讀鎖失敗之后,監聽最小的臨時序號節點,如果最小的臨時序號節點出現變化,則回到第二步進行執行

? ? ? ??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91913.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91913.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91913.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第二篇:Linux 文件系統操作:從基礎到進階

目錄 一、文件與目錄管理基礎 創建文件 創建目錄 目錄結構查看 二、鏈接文件深入理解 創建軟鏈接 創建硬鏈接 核心區別對比 三、文件壓縮與解壓縮全攻略 1、壓縮命令對比 2、解壓縮命令 3、三種壓縮方式性能對比 4、通用解壓技巧 四、文件查找與搜索 1、按文件名…

嗶哩嗶哩招游戲內容產品運營

游戲內容產品運營【2026屆】(崗位信息已獲jobleap.cn授權轉發到csdn)嗶哩嗶哩集團 上海收錄時間: 2025年08月01日職位描述1、負責研究B站游戲創作者的創作過程、動機及遇到的問題,產出研究報告; 2、結合用研分析和相關…

談談Flutter中的Key

目錄 前言 一、什么是Key 1.StatelessWidget 2.StatefulWidget 3.加入Key后的效果 二、什么時候應該使用 Key? 1.Flutter判斷widget的邏輯 1.Flutter判斷組件身份的規則 1.Widget的類型(runtimeType)相同 2. Key相同(ke…

重生之我在暑假學習微服務第八天《OpenFeign篇》

個人主頁:VON文章所屬專欄:微服務 微服務系列文章 重生之我在暑假學習微服務第一天《MybatisPlus-上篇》重生之我在暑假學習微服務第二天《MybatisPlus-下篇》重生之我在暑假學習微服務第三天《Docker-上篇》重生之我在暑假學習微服務第四天《Docker-下篇…

風光儲綜合能源系統雙層優化規劃設計【MATLAB模型實現】

本模型基于雙層優化框架,利用KKT條件、大M法、對偶理論求解,專注于綜合能源系統(微電網)多電源容量優化配置的模型介紹。代碼采用CPLEX求解器,注釋詳盡,非常適合新手學習該類問題的建模與求解思路。 模型總…

雪花算法重復id問題

原理解析 雪花算法實現簡單、適配性強,無論是電商訂單、日志追蹤還是分布式存儲,都能滿足 “唯一、有序、高效、可擴展” 的核心需求,因此成為分布式ID主流選擇。雪花算法生成的ID是一個64位的整數,由多段不同意義的數字拼接而成&…

MQTT 入門教程:三步從 Docker 部署到 Java 客戶端實現

在物聯網(IoT)與邊緣計算快速發展的今天,設備間的高效通信成為核心需求。MQTT 作為一種輕量級的發布 / 訂閱模式協議,憑借其低帶寬占用、強穩定性和靈活的消息路由能力,已成為物聯網通信的事實標準。無論是智能家居的設…

公網服務器上Nginx或者Openresty如何屏蔽IP直接掃描

0x01 背景云服務器很多時候為了通信需要設置公網訪問,但是網絡當中存在很多的掃描器,無時無刻在掃描,當80,443端口暴露時,成了這些掃描IP的攻擊對象,無時無刻收到威脅。0x02 掃描攻擊方式1.直接通過公網IP地址進行一些…

C語言(長期更新)第8講 函數遞歸

C語言(長期更新) 第8講:函數遞歸 跟著潼心走,輕松拿捏C語言,困惑通通走,一去不回頭~歡迎開始今天的學習內容,你的支持就是博主最大的動力。 目錄 C語言(長期更新) 第8講 函數遞歸…

[硬件電路-129]:模擬電路 - 繼電器的工作原理、關鍵指標、常用芯片與管腳定義

一、工作原理繼電器是一種基于電磁感應原理的自動開關裝置,通過控制小電流電路實現大電流電路的通斷。其核心結構包括:電磁鐵(線圈鐵芯):通電時產生磁場,吸引銜鐵動作。觸點系統:包含常開觸點&a…

Haproxy調度算法 - 靜態算法介紹與使用

文章目錄一、概述二、socat工具三、static-rr四、firstHAProxy通過固定參數 balance 指明對后端服務器的調度算法,該參數可以配置在listen或backend選項中。HAProxy的調度算法分為靜態和動態調度算法,但是有些算法可以根據參數在靜態和動態算法中相互轉換…

模擬激光相機工作站版本6.0 5.2.32 6.0.44 6.031 5.2.20

模擬激光相機工作站版本6.0 5.2.32 6.0.44 6.031 5.2.20

AWS Blockchain Templates:快速部署企業級區塊鏈網絡的終極解決方案

無需精通底層架構,一鍵搭建Hyperledger Fabric或以太坊網絡!AWS Blockchain Templates 可幫助您快速基于不同的區塊鏈框架在 AWS 上創建和部署區塊鏈網絡。區塊鏈是一種分布式數據庫技術,用于維護不斷增長的交易記錄和智能合約集合&#xff0…

Vue 服務端渲染 Nuxt 使用詳解

Nuxt 是基于 Vue 的高層框架,專注于服務器端渲染應用開發。它封裝了繁瑣的配置和通用模式,提供了開箱即用的 SSR 功能,使開發者能夠專注于編寫業務邏輯。 1. Nuxt 的核心特性 SSR 支持:默認支持服務端渲染,提高應用性…

使用ACK Serverless容器化部署大語言模型FastChat

核心概念 阿里云ACK Serverless:是一種基于 Kubernetes 的無服務器容器服務。用戶無需管理底層節點和服務器,即可快速部署容器化應用,并根據實際使用的 CPU 和內存資源按需付費,只專注于應用本身而非基礎設施管理。 FastChat&…

最新Android Studio漢化教程--兼容插件包

[ ] 軟件版本:Android Studio Meerkat Feature Drop | 2024.3.2 Build #AI-243.25659.59.2432.13423653, built on April 30, 2025 Runtime version: 21.0.613368085-b895.109 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Toolkit: sun.awt.windows.WT…

Unity_數據持久化_IXmlSerializable接口

Unity數據持久化 三、XML數據持久化 3.5 IXmlSerializable接口 3.5.1 IXmlSerializable接口基礎概念 什么是IXmlSerializable接口: IXmlSerializable 是.NET框架提供的一個接口,允許類自定義XML序列化和反序列化的過程。當默認的XML序列化行為無法滿足需…

如何快速解決PDF解密新方法?

有時從網絡下載的PDF文檔會帶有加密限制,導致無法編輯、復制或打印。它的體積僅約10MB,無需安裝,解壓即用。遇到受限制的文件時,只需將其拖入界面,選擇是否覆蓋原文件,點擊執行,瞬間完成解密。「…

譯|數據驅動智慧供應鏈的構成要素與關聯思考

數據質量,通過識別關鍵決策和瓶頸構建信息供應鏈。該模型適用于優化庫存管理、自動化物流、預測需求、實現產品全生命周期追溯及應對突發風險。例如,通過AI機器人自動管理倉庫,或利用數字孿生模擬和優化全球采購網絡。 匯總來自三篇文章&…

OS21.【Linux】環境變量

目錄 1.與環境變量有關的實驗 A.對比命令和自制程序的運行 為什么.像ls、pwd這樣的命令運行是不需要加路徑? 執行自制程序而不加路徑的方法,看看PATH環境變量 方法1:將自制程序移動到系統的搜索路徑下 方法2:臨時修改PATH環境變量 B.查看系統中所有環境變量 解釋幾個常…