兩種方案的優缺點比較
學完了兩種分布式鎖的實現方案之後,本節需要討論的是 redis 和 zk 的實現方案中各自的優缺點。
對於 redis 的分布式鎖而言,它有以下缺點:
但是另一方面使用 redis 實現分布式鎖在很多企業中非常常見,而且大部分情況下都不會遇到所謂的「極端複雜場景」。
所以使用 redis 作為分布式鎖也不失為一種好的方案,最重要的一點是 redis 的效能很高,可以支撐高併發的獲取、釋放鎖操作。
對於 zk 分布式鎖而言:
但是 zk 也有其缺點:如果有較多的客戶端頻繁的申**鎖、釋放鎖,對於 zk 集群的壓力會比較大。
一些建議
通過前面的分析,實現分布式鎖的兩種常見方案:redis 和 zk,他們各有千秋。應該如何選型呢?
就個人而言的話,我比較推崇 zk 實現的鎖:因為 redis 是有可能存在隱患的,可能會導致資料不對的情況。但是,怎麼選用要看具體在公司的場景了。
如果公司裡面有 zk 集群條件,優先選用 zk 實現,但是如果說公司裡面只有 redis 集群,沒有條件搭建 zk 集群。
那麼其實用 redis 來實現也可以,另外還可能是系統設計者考慮到了系統已經有 redis,但是又不希望再次引入一些外部依賴的情況下,可以選用 redis。這個是要系統設計者基於架構來考慮了。
Redis和ZK實現分布式鎖
1 使用redis分布式鎖的原因 redis效能好 命令支援比較好,實現方便。2 實現方式 直接用int setnx寫key,如果成功了,說明獲取鎖成功,否則拿鎖失敗。拿鎖成功之後對key設定超時時間,操作完成時可通過del key釋放鎖。1 通過建立zk的znode節點進行控制。檢查zookeep...
Linux中的兩種檔案鎖 協同鎖與強制鎖
檔案鎖是一種檔案讀寫機制,在任何特定的時間只允許乙個程序訪問乙個檔案。利用這種機制能夠使讀寫單個檔案的過程變得更安全。在這篇文章中,我們將 linux中不同型別的檔案鎖,並通過示例程式來理解它們之間的不同之處。我們將採取以下的例子來解釋為什麼需要使用檔案鎖。1 程序 a 開啟和讀取乙個檔案,此檔案包...
Linux下面的兩種檔案鎖
檔案鎖是一種檔案讀寫機制,在任何特定的時間只允許乙個程序訪問乙個檔案。利用這種機制能夠使讀寫單個檔案的過程變得更安全。在這篇文章中,我們將 linux中不同型別的檔案鎖,並通過示例程式來理解它們之間的不同之處。我們將採取以下的例子來解釋為什麼需要使用檔案鎖。1 程序 a 開啟和讀取乙個檔案,此檔案包...