zookeeper讓服務配置變得更簡單
zookeeper是hadoop下的乙個子專案,它是乙個針對大型分布式系統的可靠的協調系統,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。zookeeper是可以集群複製的,集群間通過zab(zookeeper atomic broadcast)協議來保持資料的一致性。
基於zookeeper的持久和非持久節點,我們能夠近乎實時的感知到後端伺服器的狀態(上線、下線、宕機)。通過集群間zab協議,使得服務配置資訊能夠保持一致。而zookeeper本身容錯特性以及leader選舉機制,能保障我們方便的進行擴容。通過zookeeper來實現的服務動態註冊、機器上線與下線的動態感知,擴容方便,容錯性好,且無中心化結構能夠解決之前使用負載均衡裝置所帶來的單點故障問題,只有當配置資訊更新時才會去zookeeper上取最新的服務位址列表,其他時候使用本地快取即可。
服務負載均衡—常見的負載均衡演算法
輪詢 (round robin) 法,輪詢很容易理解,將請求按順序輪流的分配到後端伺服器上,它均衡的對待後端每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。
隨機 (random) 法,通過系統隨機函式,根據後端伺服器列表的大小值,來隨機選取其中一台進行訪問,由概率統計的理論可以得知,隨著呼叫量的增大,其實際效果越來越接近於平均分配流量到每一台後端伺服器,也就是輪詢的效果。
源位址雜湊 (hash) 法,源位址雜湊的思想是獲取客戶端訪問的ip位址值,通過雜湊函式計算得到乙個數值,用該數值對伺服器列表的大小進行取模運算,得到的結果便是要訪問的伺服器的序號。採用雜湊法進行負載均衡,同一ip位址的客戶端,當後端伺服器列表不變的時候,它每次都會被對映到同一台後端伺服器進行訪問。
加權輪詢 (weight round robin) 法,不同的後端伺服器,可能機器的配置和系統當前的負載並不相同,因此他們抗壓能力也不盡相同,給配置高負載低的機器配置更高的權重,讓其處理更多的請求,而低配置負載高的機器,則給其分配較低的權重,降低其系統負載,加權輪詢能很好的處理這一問題,並將請求順序且按照權重分配到後端。
加權隨機 (weight random) 法,與加權輪詢法類似,加權隨機法也根據後端伺服器不同的配置和負載情況,配置不同的權重,不同的是,其實按照權重來隨機選取伺服器,而非順序。
最小連線數 (least connections) 法,最小連線數演算法比較靈活和智慧型,由於後端伺服器配置不盡相同,對於請求的處理有快有慢,它正是根據後端伺服器當前的連線情況,動態的選取其中一台當前積壓連線數最少的伺服器,來處理當前請求,盡可能的提高後端伺服器的利用效率,將負載合理的分流到每一台機器。
分布式系統
分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...
分布式系統
分布式,一來就直接看書,除非你有比較深厚的技術功底,要不還是很晦澀難懂的。先想想為什麼會有分布式,分布式怎麼來的。傳統的電信 銀行業,當業務量大了之後,普通伺服器cpu io 網路到了100 請求太慢怎麼辦?最直接的做法,公升級硬體,反正也不缺錢,ibm小型機,大型機,採購了堆硬體。但是網際網路不能...
分布式系統
集中式 集中式只有乙個伺服器或者多個伺服器 只能有乙個機架 組成乙個整體 處理所有的業務 分布式系統是由硬體和軟體組分布在不同的網路計算機中 ip網段可能不一樣 彼此之間僅僅通過訊息傳遞 協調整個系統服務 分布式系統與概念設計 缺點 節點故障 計算程式是分布式的,如果乙個maptask掛了會導致hd...