哪种更好的负载平衡算法可以在一组服务器上分配传入请求?我已经读过他们是像Round Robin这样的算法..但是我想知道你对哪个是更好或至少最常用的算法的看法。
希望你们能帮助我。
答案是:这取决于。在考虑特定于服务的多个因素时,实现了最佳负载平衡。例如,假设您有一个提供API来编码字符串的服务,其中编码完全取决于字符串的内容。您有N个服务正在运行的副本。
一种简单的方法是简单地使用客户端选择服务索引i = hash(string)/ N.假设输入字符串在散列空间上均匀分布,这将很好地工作并且非常容易实现。
现在说出于某种原因,由于某种原因,字符串在散列空间上分布不均匀(例如,可能会重复很多字符串)。在这种情况下,您可以使用简单的循环方法,或随机选择索引。您还可以从服务器获得一定的背压:例如,如果RPC调用是同步的,您可以在客户端测量需要多长时间,并且在字符串编码的情况下,可以将其除以串;如果客户端注意到这个数字上升,则可能意味着该服务无法跟上,客户端可能会减少它发送给此类客户端的流量。这显然有点复杂。
TLDR:负载平衡有很多选项,其中一个是“最好的”取决于被缩放问题的具体性质。