一、 分佈式集羣
集羣和分佈式的區別
(1)從解決問題的角度看:分佈式是以縮短單個任務的執行時間來提升效率的;集羣則是通過提高單位時間內執行的任務數來提升效率。
(2)從軟件部署的角度看:分佈式是指將不同的業務分佈在不同的地方;集羣則是將幾臺服務器集中在一起,實現同一業務。
分佈式中的每一個節點,都可以做集羣,集羣不一定就是分佈式。
一個分佈式系統,是通過多個節點組成,各節點都是集羣化,並且各集羣還是分佈式。
二、 負載均衡
集羣服務器之間如何分工,需要藉助的是負載均衡。
負載均衡是指將請求分攤到多個操作單元也就是分開部署的服務器上,Nginx 是常用的反向代理服務器,可以用來做負載均衡。
常見的負載均衡策略
輪詢
這是最常用也是最簡單的策略,平均分配,人人都有、一人一次。
加權輪詢
在輪詢的基礎上,增加了一個權重的概念。權重是一個泛化後的概念,可以用任意方式來體現,本質上是能者多勞的思想。比如,可以根據宿主的性能差異配置不同的權重。
最快響應
這也是一種動態負載均衡策略,它的本質是根據每個節點對過去一段時間內的響應情況來分配,響應越快分配的越多。具體的運作方式也有很多,上圖的這種可以理解爲:將最近一段時間的請求耗時的平均值記錄下來,結合前面的加權輪詢來處理,所以等價於 2:1:3 的加權輪詢。
Hash 法
Hash 法的負載均衡與之前的幾種不同在於,它的結果是由客戶端決定的。通過客戶端帶來的某個標識經過一個標準化的散列函數進行打散分攤。上圖中的散列函數運用的是最簡單粗暴的取餘法。
三、 小結
1.負載均衡和分佈式的區別又是什麼?
負載均衡:請求是不可拆分的,是獨立的一個請求,被服務器當中的任何一臺接收並處理即可。
分佈式:任何一個任務(請求)需要節點相互協作共同完成,是可以拆分的。
2.概念
集羣:多個人做一件事
分佈式:一個任務多人協作
負載均衡:將一系列任務逐項分發給多個人,完成任務的能力增加,而且讓大家都還不閒着(提高資源利用率),減少任務等待的時間(降低延遲)。