2011-03-14 100 views
0

我必须建立一个心跳系统(即网络上的一些(大约10个)节点每隔几秒发送一次定期“心跳”到中心节点)。这些节点是ubuntu机器。那么你对下列选择有何建议:我应该使用什么技术来构建心跳系统?

  • TCP/UDP?
  • 语言/软件发送消息?
  • 服务器架构 - 多线程或多进程等?

心跳的目的是快速找到任何发生故障的节点,或者节点无法与中央服务器通信。客户端节点上的性能是一个问题,所以我不想使用java(因为那需要安装一个jvm)。 PS:我们以后可能还需要传递一些带有“心跳”信息的文本,所以我们想要开发系统,记住这一点。

+0

怎么样,定期坪他们中间节点上的shell脚本? – Tim 2011-03-14 10:10:47

+0

@Tim - 对不起,我应该提到我们可能以后需要发送一些性能指标与消息。此外,ping会通过TCP进行传输,这可能并不理想。 – apoorv020 2011-03-14 10:16:20

+0

Ping通过ICMP,而不是TCP。 – 2011-03-14 10:25:51

回答

1

一个非常简单的单向“ping”应用程序就足够了。我会在服务器上使用一个UDP套接字,在端口foo上列出传入消息,并使用单个UDP套接字在每个客户端发送来自客户端的“我还活着”消息,其中sendTo以无限循环与sleep 。没有花哨的线程/进程需要。

您可以通过服务器的地址recvFrom或通过在数据包有效负载中包含客户端ID来区分服务器上的客户端。然后,您可以跟踪每个客户端上次发送ping命令的时间。您可能需要在服务器上使用多个线程,以便在检查超时时使用阻止接收。或者使用select和一个小超时/暂停轮询套接字。

Beej具有优良的指南如何做到这一切在C:http://beej.us/guide/bgnet/output/html/multipage/index.html

相关问题