我正在查看从属/池模块,它看起来与我的类似
想要,但似乎我的系统中存在单点故障
应用程序(如果主节点出现故障)。
客户端有一个网关列表(为了后备 - 全部都做
相同的东西)接受连接,并且从其中选择一个
由客户随机。当客户端连接所有节点时
检查哪个负载最少,然后查看负载最少的 IP
加载的服务器被转发回客户端。那么客户
连接到该服务器,一切都在那里执行。
总之,我希望所有节点都充当网关,并且实际上
处理客户请求。仅当以下情况时才进行负载平衡
客户端最初连接 - 所有实际数据包并在
客户端的“主”节点。
我该怎么做?
我不知道是否已经实现了这个模块,但我可以说,负载平衡被高估了。我可以说的是,随机分配工作是最好的选择,除非您知道更多的信息,了解未来的负载情况,而在大多数情况下,您确实不知道。你写的:
当客户端连接时,将检查所有节点以确定哪个节点的负载最小,然后将负载最小的服务器的 IP 转发回客户端。
您如何知道所有那些负载最少的节点不会在下一个毫秒内负载最高?您如何知道您不会包含在列表中的所有高负载节点不会在下一个毫秒内降低负载?除非你遇到非常罕见的情况,否则你真的无法知道这一点。
只需测量(或计算)节点的性能并根据它设置节点被选择的概率。无论当前负载如何,随机选择节点。将此作为初始方法。当你设置好它之后,你就可以尝试编写一些更复杂的算法。我敢打赌,要击败这个最初的方法将是非常困难的工作。相信我,非常难。
Edit:为了在一个微妙的细节上更清楚,我强烈认为您无法根据当前和历史负载预测未来负载,但您应该使用有关任务持续时间概率和任务生命周期当前分解的知识。这项工作很难实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)