我一直在寻找从/池模块,它似乎相似,我 想要的,但它似乎也像我有失败的单点我 应用程序(如果主节点出现故障)。

在客户端有网关的列表(用于回退的缘故 - 所有都 该接受连接,和一个同样的事情)选自 随机由客户端。当客户端连接的所有节点 检查,以了解其具有至少负载,然后将最不的IP 负载的服务器转发回客户端。然后客户端 连接到该服务器,一切都在那里执行。

总之,我想所有节点充当两个网关和实际 处理客户请求。负载均衡只是做的时候 客户端最初连接 - 所有实际的数据包和处理上 客户端的“家”节点。

我会怎么做呢?

有帮助吗?

解决方案

我不知道是否有这个模块来实现的,但还没有什么我可以说,负载均衡是高估了。我可以说是,作业随机配售是最好的选择,除非你知道更多的信息负载怎么会在将来,在大多数情况下,你确实没有。你写什么:

  

当客户端连接的所有节点被检查,看其具有至少负载,然后将最不加载的服务器的IP转发回给客户机。

你怎么知道,所有这些负载最少的节点将不只是最高在明年毫秒装?你怎么知道的一切,你不会在列表中包括那些高负载的节点将不只是在下一毫秒降负荷?你真的不知道它,除非你有非常罕见的情况。

只需测量(或计算)的节点的性能,并设置节点的概率来选择取决于它。选择节点随机无论电流负载。以此为初步做法。当你设置它,那么你可以尝试做一些更复杂的算法。我敢打赌,这将是非常困难的工作,以打败这个最初的方法。相信我,非常辛苦。

修改:要在一个微妙的细节更清晰,我强烈地认为,你不能从当前和历史负载预测未来的负载,但是你应该使用约持续时间的概率任务和当前分解知识任务的一生。这项工作是如此难以实现试

其他提示

监督树的目的是不一定管理流程的请求转发。没有任何理由,你不能使用不同的代码直接发送请求到可用进程列表中的成员。看到池:get_nodes或池:get_node()函数为一个的方式来获得这些列表

您可以让池模块处理过程(重新启动,监控和查杀处理)的管理和使用一些其他模块透明地重定向请求的处理池。也许你正在寻找分布式池虽然?这将是很难得到从主客场的过程在二郎山内部消除将分布式节点。整个运行系统是相当多的一个大的监督树。

我最近想起pg模块,它允许你设置过程的基团。发送到该组的消息到组中的每个过程。它可能让你一部分的方式向你想要的东西。你必须编写代码来决定哪些进程处理真正的请求,但你会用它获得一个游泳池没有了主人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top