Какие технологии я должен использовать для создания системы сердцебиения? - PullRequest
0 голосов
/ 14 марта 2011

Мне нужно построить систему пульса (т.е. некоторые (около 10) узлов в сети посылают регулярные «пульсы» каждые несколько секунд на центральный узел). Эти узлы являются машинами Ubuntu. Итак, что бы вы предложили для следующих вариантов:

  • TCP / UDP?
  • Язык / программное обеспечение для отправки сообщений?
  • Архитектура сервера - несколько потоков или несколько процессов и т. Д.

Целью пульса является быстрый поиск любых узлов, которые выходят из строя, или если узлы не могут обмениваться данными с центральным сервером. Производительность на клиентских узлах является проблемой, поэтому я не хочу использовать java (потому что это потребует установки jvm).

PS: Возможно, позже нам также понадобится передать текст с сообщениями «сердцебиение», поэтому мы хотим разработать систему, помня об этом.

1 Ответ

1 голос
/ 14 марта 2011

Достаточно простого однонаправленного приложения "ping".Я бы использовал один сокет UDP на сервере, перечисляя входящие сообщения на порт foo и отправляя сообщения "я жив" от клиентов с одним сокетом UDP на каждом клиенте с sendTo вбесконечный цикл с sleep.Не нужно никаких необычных потоков / процессов.

Вы можете различать клиентов на сервере либо по их recvFrom адресу, либо по включению идентификатора клиента в полезную нагрузку пакета.Затем вы можете отслеживать последний раз, когда каждый клиент отправил пинг.Вам может потребоваться более одного потока на сервере, чтобы использовать блокировку приема при проверке таймаутов.Или используйте select и небольшой тайм-аут / пауза для опроса сокета.

У Beej есть отличное руководство, как сделать все это в C: http://beej.us/guide/bgnet/output/html/multipage/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...