分佈式系統與分佈式鎖簡析

有80%的程序員對於分佈式系統,並無一個很清晰的概念。分佈式系統涉及到不少的技術、理論與協議,不少人也說,分佈式系統是「入門容易,深刻難」,有一些人簡歷上寫着熟悉分佈式系統,可是其實只能算是管中窺豹,只見得其中一斑。程序員

 

那麼究竟什麼是分佈式系統?

分佈式系統是由一組經過網絡進行通訊、爲了完成共同的任務而協調工做的計算機節點組成的系統。分佈式系統的出現是爲了用廉價的、普通的機器完成單個計算機沒法完成的計算、存儲任務。其目的是利用更多的機器,處理更多的數據。算法

 

分佈式架構圖:數據庫

 

 

首先須要明確的是,只有當單個節點的處理能力沒法知足日益增加的計算、存儲任務的時候,且硬件的提高(加內存、加磁盤、使用更好的CPU)高昂到得不償失的時候,應用程序也不能進一步優化的時候,咱們才須要考慮分佈式系統。網絡

 

分佈式系統的幾個特性:可擴展性、高性能、高可用、一致性。這幾個特性也是分佈式系統的衡量指標,正是爲了在不一樣的程度上知足這些特性(或者說達到這些指標),纔會設計出各類各樣的算法、協議,而後根據業務的需求在這些特性間平衡。架構

 

那麼分佈式鎖又是怎麼產生的呢?

現現在大多數互聯網系統都是分佈式部署的,分佈式部署確實能帶來性能和效率上的提高,可是當某個資源在多系統之間,具備共享性的時候,爲了保證你們訪問這個資源數據是一致的,這個時候咱們須要用分佈式鎖來讓多客戶端互斥的對共享資源進行訪問。分佈式

 

目前主流的有三種分佈式鎖,從實現的複雜度上來看,從上往下難度依次增長:性能

  • 基於數據庫實現
  • 基於 Redis 實現
  • 基於 ZooKeeper 實現

不管哪一種方式,其實都不完美,可是不一樣的業務也要根據本身的狀況進行選型,它們之間沒有最好只有更適合!優化

相關文章
相關標籤/搜索