分布式系統技術概要
現在網際網路應用,尤其是大型網際網路公司的應用已經發展為大規模或超大規模的分布式的,集群化的應用。而中小規模的分布式應用也已廣泛出現在各個領域。未來,隨著雲計算向社會生活的方方面面去滲透,分布式應用將更加地普及。所以,任何乙個要從事伺服器端應用開發的人員,都有具備對分布式應用的基本認識。
1. 集群管理
關鍵字:apache zookeeper、paxos 演算法、etcd、raft、apache curator
在乙個分布式系統中,存在著一些和系統執行,以及重要業務緊密相關的資料,如節點相關的資料、應用服務和資料服務相關的資料等,這些資料對集群的正常執行至關重要。
這些重要的資料在分布式系統中存在著多份拷貝,以保證高可用性。但這產生了另外乙個問題,就是如何保證這些資料的一致性。因為這些資料是如此重要,不一致的資料會產生嚴重甚至致命的錯誤。在乙個小規模的分布式系統中,因為可以用一兩台伺服器去做集群管理,所以資料的一致性容易實現。但是對於乙個大規模的分布式系統,一兩台集群配置管理伺服器無法支撐整個集群所帶來的大量併發讀寫操作,所以要使用幾台、十幾台,甚至更多的伺服器去支撐這些請求。此時,就需要乙個保持這些伺服器中集群配置資料的一致性的方案了。
這眾多方案中,paxos 演算法算是最佳方案之一。關於 paxos 演算法的內容,不在這裡詳述了。簡單描述就是集群中各節點相互以提議的方式通訊(對一項資料的修改),提議中帶有不斷增加的 id 號,節點永遠同意當前 id 號最大的提議,並拒絕其它提議。當有半數以上節點同意一項提議之後,這個提議便被整個節點所接受並採納。
1.1. apache zookeeper
paxos 演算法的語言表述看上去不難,但是其中的技術難點並不少。好在現在已經有了很多的解決方案,其中最為著名的便是 apache zookeeper。zookeeper 不僅可以用來儲存配置資料,還可以用來實現集群 master 選舉、分布式鎖等場景。apache curator 是 zookeeper 的客戶端,可以簡化對 zookeeper 的使用,實現各式的場景。
zookeeper 是乙個分布式的服務管理框架。zookeeper 的典型的應用場景包括配置檔案的管理、集群管理、分布式鎖、leader 選舉、佇列管理等。zookeeper 可工作在集群模式下,zoo.cfg 中記錄著集群中所有 zookeeper 伺服器的位址,每個伺服器有自己唯一的 id。同時,每個伺服器在自己的 datadir 目錄下還要有乙個 myid 檔案,以標示自己的 id。在 zookeeper 中,資料以樹狀的結構儲存,類似於 ldap 資料庫。
現在類似 zookeeper 的專案還有使用 go 語言實現的 etcd。
分布式(集群)的基本概念以及分布式的應用場景
概念 分布式是指將不同的業務分布在不同的地方。而集群指的是將幾台伺服器集中在一起,實現同一業務。分布式中的每乙個節點,都可以做集群。而集群並不一定就是分布式的。前面放乙個響應伺服器,後面幾台伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪台伺服器的負載不是很重,就將給哪一台去完成。而分布式,...
Redis分布式鎖的應用及實現
實際工作場景中可以出現多執行緒情況下多資料庫的某一條記錄進行處理操作,會導致資料出現異常,例如,庫存超賣情況,這種情況就要使用到鎖機制,可以根據不同的應用場景來使用不同的鎖。1.使用資料庫樂觀鎖,樂觀鎖就是在資料庫表中新增version欄位,在查詢的時候將version一併查詢出來,在更新的時候通過...
Kafka 分布式訊息佇列的特點及應用場景
1 速度快 高吞吐量 分布式 多分割槽。2 無需停機即可擴充套件機器。3 通過將資料持久化到硬碟以及replication防止資料丟失。4 支援多消費者 重要特點 5 支援online 實時消費 和offline 離線消費,比如按天消費 的場景。6 依賴zookeeer集群,狀態資訊都寫在zooke...