繼續Nginx WRR負載均衡演算法的優化

2021-08-19 13:29:01 字數 1365 閱讀 6322

溫州皮鞋廠老闆告訴我乙個新的wrr演算法,基於陣列雜湊,但還是有點過度設計了,我說對於3,2,1這樣權重的3個元素,搞3個元素1,2個元素2,1個元素3,一共6個元素揉成一把,隨機扔到6個格仔裡完事,只要足夠隨機,這個演算法應該就是最好的!不是想當然最好,是必然最好的,因為它就是最大熵結論,宇宙是懶惰的,低熵體的維持需要努力!

好吧,後來我承認了,我就是用的這個演算法來做的reuseport優化,只是增加了一點一致性雜湊的味道!

現在來看第二個問題。

負載均衡器並不是指單獨的一台機器,否則他就是單點!它本身也可能是被負載均衡的或者是自負載的。我們假設3臺負載均衡

x x

,y' role="presentation">yy,

z z

分別負載集合g=

' role="presentation">g=g

=o(n

) o(n

)化o(

1)o (1

)的預處理方法,假設集合

g g

在wrr演算法的作用下生成了序列s=

(aab

cabc

abaa

bcab

c)' role="presentation">s=(

aabc

abca

baab

cabc

)s=(

aabc

abca

baab

cabc

)。那麼3個負載均衡器將共享這個序列

s s

,流向對

a' role="presentation">a

a的壓力將會從序列

s s

的2個上公升到2×

3' role="presentation">2×3

2×3個,隨著負載均衡器的數量增加到

n n

個,這個數字將會變成2×

n' role="presentation">2×n

2×n。乙個隨機的結果再怎麼也經不起疊加。怎麼辦?

好辦!再隨機唄!

再按照負載均衡器的數量

n n

生成乙個隨機序列s2

=(m1

,m2,

....

mn)' role="presentation">s2=

(m1,

m2,.

...m

n)s2

=(m1

,m2,

....

mn),其中mi

m

i只是序列

s s

中的起始元素索引。這樣,不同的負載均衡器收到的請求將會進行不同的輪詢順序,雖然只是一次凱撒密碼變換,但總比直接用好!

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...

軟負載均衡和F5負載均衡(硬負載均衡)區別

分割線,以下是原文內容 負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件 網路裝置 和伺服器 的頻寬 增加 吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web 伺服器 ftp...

負載均衡(一)為什麼需要負載均衡

通常我們專案開發都是在tomcat上完成的,當然這樣是有優點的,比如就是開發簡單,部署簡單,但是單個的tomcat有時候有時候就會有問題,它的容量有峰值,大概在300之間,可以用測試軟體jemeter進行壓力測試。而且如果tomcat出現問題的話,那麼整個專案就會出現故障,這是不可容忍的 單點故障,...