IPC между несколькими процессами на нескольких серверах - PullRequest
1 голос
/ 25 февраля 2010

Допустим, у вас есть 2 сервера каждый с 8 ядрами процессора каждый.

На каждом сервере запущено 8 сетевых служб, на каждом из которых размещено произвольное количество долгоживущих клиентских подключений TCP / IP.

Клиенты отправляют сообщения в сервисы.

Сервисы делают что-то на основе сообщений и потенциально уведомляют N> 1 клиентов об изменениях состояния.

Конечно, это звучит как ботнет, но это не так. Рассмотрим, как IRC работает с соединениями c2s и s2s и ретрансляцией сообщений s2s.

  • Серверы находятся в одном центре обработки данных.
  • Серверы могут взаимодействовать через частную VLAN @ 1GigE.
  • Размер сообщений: <1 КБ. </li>

Как бы вы координировали, какие службы на каком хосте должны получать и передавать сообщения подключенным клиентам для сообщений об изменении состояния?

Существует бесконечное множество способов эффективно решить эту проблему.

  • AMQP (RabbitMQ, ZeroMQ и т. Д.)
  • Spread Toolkit
  • N ^ 2 соединения между всеми сервисами (плохо)
  • Черт, даже запустить IRC!
  • ...

Я ищу решение, которое:

  • возможно, использует тот факт, что существует только небольшой замкнутый кластер
  • легко администрировать
  • хорошо масштабируется
  • "немой" (без странных крайних случаев)

Какой у вас опыт?

Что вы рекомендуете?

Спасибо!

1 Ответ

0 голосов
/ 07 июля 2011

Как насчет эфирного вещания и фильтрации Ethernet на стороне клиента?

...