mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-29 16:22:21 +00:00
20 lines
978 B
Markdown
20 lines
978 B
Markdown
# 6.12. Load-Balance 负载均衡
|
||
|
||
本节将会讨论常见的 web 后端服务之间的负载均衡手段。
|
||
|
||
## 常见的负载均衡思路
|
||
|
||
如果我们不考虑均衡的话,现在有 n 个 endpoint,我们完成业务流程实际上只需要从这 n 个中挑出其中的一个。有几种思路:
|
||
|
||
1. 按顺序挑: 例如上次选了第一台,那么这次就选第二台,下次第三台,如果已经到了最后一台,那么下一次从第一台开始。这种情况下我们可以把 endpoint 都存储在数组中,每次请求完成下游之后,将一个索引后移即可。在移到尽头时再移回数组开头处。
|
||
|
||
2. 随机挑一个: 每次都随机挑,真随机伪随机均可。设选择第 x 台机器,那么 x 可描述为 `rand.Intn() % n`。
|
||
|
||
3. 根据某种权重,对下游 endpoints 进行排序,选择权重最大/小的那一个。
|
||
|
||
## 一种随机负载均衡算法
|
||
|
||
## 有没有什么问题?
|
||
|
||
## 修正后的负载均衡算法
|