algorithm - 在一组服务器之间分配请求的最佳负载平衡算法?

标签 algorithm load-balancing

哪种负载平衡算法可以更好地在一组服务器之间分配传入请求?我读过它们是一些像循环算法这样的算法..但我想知道您对哪种算法更好或至少最常用的算法的看法。

希望大家能帮帮我。

最佳答案

答案是:这取决于情况。当考虑特定于服务的多个因素时,可以实现最佳的负载平衡。例如,假设您有一个服务提供 API 来对字符串进行编码,其中编码完全取决于字符串的内容。您有 N 个正在运行的服务副本。

一种简单的方法是让客户端选择服务索引 i = hash(string)/N。假设输入字符串均匀分布在哈希空间上,这将很好地工作并且非常容易实现。

现在说由于某种原因字符串在散列空间上分布不均匀(例如,可能有很多字符串重复)。在这种情况下,您可以使用进行循环或随机选择索引的简单方法。您还可以测量来自服务器的背压:例如,如果 RPC 调用是同步的,您可以在客户端测量它需要多长时间,并且在字符串编码的情况下,将其除以字符串;如果客户端注意到此数字上升,则可能意味着服务无法跟上,客户端可以减少发送给此类客户端的流量。这显然有点复杂。

TLDR:负载平衡有很多选项,哪一个是“最好的”取决于要扩展的问题的具体性质。

关于algorithm - 在一组服务器之间分配请求的最佳负载平衡算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004502/

相关文章:

algorithm - 在批处理脚本中实现的蛮力算法的优化

c++ - 如何控制socket速率?

amazon-web-services - 可以在没有负载均衡器的情况下使用 AWS Fargate 吗?

amazon-ec2 - thrfit 服务上 ec2 实例的 vpc 中的内部负载平衡

python - 在Python中禁止执行compute_resilience函数

algorithm - 旅行商 (TSP) : what is the Relation with number of vertices and length of the found route?

java - 获取所有子文件夹的列表

load - 单个 EC2 弹性负载均衡器可以服务多少个节点

linux - 通过 JIRA 中的 groovy 关闭工单

java - 负载均衡器可扩展非 Web 服务器应用程序