1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-29 16:22:21 +00:00
advanced-go-programming-book/ch6-web/ch6-12-load-balance.md
2018-05-30 17:27:14 +08:00

20 lines
978 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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