最近,我在自己编写的一个软件中添加了一些负载平衡功能。它是一个网络应用程序,根据来自 SQL 数据库的输入执行一些数据处理。由于处理可能非常密集,我添加了让该应用程序的多个实例在不同服务器上运行以分割负载的功能,但现在负载平衡是手动操作。用户必须指定哪些实例占用输入域的哪个部分。
我想将其提升到一个新的水平并对实例进行编程以自动协商输入数据的潜水并识别其中一个是否“消失”(已崩溃或已断电),以便剩余的实例可以使用在失败实例的工作负载上。
为了实现这一点,我正在考虑在实例之间使用简单的心跳协议来确定谁在线,谁不在线,虽然这不是很复杂,但我想知道是否有任何已建立的心跳网络协议(基于UDP、TCP 或两者)。
显然,在集群、故障转移和高可用性技术的网络世界中,这种情况经常发生,所以我想最后我想知道是否有任何我应该了解或实施的既定协议或算法。
编辑
根据答案,似乎要么没有完善的心跳协议,要么没有人知道它们(这意味着它们毕竟还没有那么完善)在这种情况下,我只会滚动我自己的。
虽然没有一个答案提供了我正在寻找的具体内容,但我将投票支持Matt Davis 的答案,因为它是最接近的,并且他指出了使用多播的好主意。
谢谢大家的时间~