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