我应该使用哪些技术来构建心跳系统?

时间:2011-03-14 10:08:55

标签: networking

我必须构建心跳系统(即网络上的一些(大约10个)节点每隔几秒向中心节点发送常规“心跳”)。这些节点是ubuntu机器。那么你会对以下选择提出什么建议:

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

心跳的目的是快速找到任何关闭的节点,或者节点是否无法与中央服务器通信。客户端节点上的性能是一个问题,因此我不想使用java(因为这需要安装jvm)。

PS:我们以后可能还需要传递一些带有“心跳”消息的文本,因此我们希望开发系统时要记住这一点。

1 个答案:

答案 0 :(得分:1)

一个非常简单的单向“ping”应用程序就足够了。我在服务器上使用单个UDP套接字,列出端口 foo 上的传入消息,并在每个客户端使用单个UDP套接字从客户端发送“i'm alive”消息{{1在sendTo的无限循环中。不需要花哨的线程/流程。

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

Beej有一个很好的指导如何在C中完成所有这些:http://beej.us/guide/bgnet/output/html/multipage/index.html