[Golang] [筆記] 用Golang來做一個簡單的負載平衡器(Load Balancer) (一)
最近看到一篇有關用Golang來做一個簡單的負載平衡器(Load Balancer)覺得滿有趣的,所以大概翻譯一下原本但我會只翻譯我覺得重要的部分。
原文
https://kasvith.github.io/posts/lets-create-a-simple-lb-go/#use-of-context參考
- 網站服務效能持續負荷的幕後英雄 https://www.ithome.com.tw/node/65773
- 負載均衡(Load Balancing)學習筆記 https://kknews.cc/zh-tw/education/n569k5q.html
- 權重輪詢調度算法 https://www.twblogs.net/a/5b8a00562b71775d1ce4dd0e
負載平衡器是如何工作
負載平衡器有不同的策略來分配request到後端多組的機器,所以策略有:
- Round Robin( 輪詢調度) :平均的分配request到後端(假設後端有相同的處理能力)
- Weighted Round Robin (權重輪詢調度) :根據後端的機器的處理能力給予權重,使得機器依照權重分配相對應的request
- Least Connections (最少連接法):將request分配到連線數到最少的機器
原文在這三個策略中實作了Round Robin,以下是示意圖:
Round Robin Selection (輪詢調度選擇)
Round Robin原理很簡單,他在輪流的情況下以相同的機會來讓後端的機器完成任務。
Round Robin Selection
當後端有機器不能工作的時候該怎麼辦呢?我們應該不會想要request流向不能工作的機器,所以上圖表示是不能直接使用的除非加上一些條件 。那麼條件就是我們需要將流量導向正常運作的機器。
當後端有機器不能工作的時候該怎麼辦呢?我們應該不會想要request流向不能工作的機器,所以上圖表示是不能直接使用的除非加上一些條件 。那麼條件就是我們需要將流量導向正常運作的機器。
如果文章對你有幫助在幫我按一下廣告來讓我有額外收入這也是對我來說是一種鼓勵。
未完待續......
未完待續......
留言