























使用 DNS 进行负载均衡。在 DNS 回复中提供多个 A 记录或者 AAAA 记录。
虽然 DNS 看起来简单,但是存在不少问题。
需要在 DNS 负载后面增加一层虚拟 IP 地址,我们常说的 VIP。
使用 VIP 进行负载均衡
虚拟 IP(VIP) 不是绑定在某一个特定的网络接口上的。很多设备共享。外界看 VIP 是一个独立的普通 IP。VIP 是网络负载均衡器。负载均衡器接收网络数据包,转发给 背后的某个服务器。
负载的方案:
某个服务的负载会完全均匀的分发给所有的后端服务。任何时间点,最忙和最不忙的任务消耗相同数量的 CPU。
子集划分:限制某个客户端任务需要连接的后端数量。
Google 的 RPC 框架对于每个客户端都会维持一个长连接。如果一个集群的规模过大,客户端就要维护很多长连接。
造成效果差的因素如下:
客户端追踪子集中每个后端任务的活跃请求数量,在活跃请求最小的任务中进行轮询。
最危险的坑:如果一个任务不健康,可能 100% 返回错误。取决于错误的类型,错误回复可能延迟非常低。从而给异常任务分配的大量的请求。
需要将错误信息计算为活跃请求,剔除异常任务。
限制:
实践中发现,效果很差。
每个客户端为子集中的每个后端任务保持一个“能力”值。请求仍以轮询方式分发,客户端按照能力值权重比例调节。
实践中效果较好。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。