Допустим, у вас есть 2 сервера каждый с 8 ядрами процессора каждый.
На каждом сервере запущено 8 сетевых служб, на каждом из которых размещено произвольное количество долгоживущих клиентских подключений TCP / IP.
Клиенты отправляют сообщения в сервисы.
Сервисы делают что-то на основе сообщений и потенциально уведомляют N> 1 клиентов об изменениях состояния.
Конечно, это звучит как ботнет, но это не так. Рассмотрим, как IRC работает с соединениями c2s и s2s и ретрансляцией сообщений s2s.
- Серверы находятся в одном центре обработки данных.
- Серверы могут взаимодействовать через частную VLAN @ 1GigE.
- Размер сообщений: <1 КБ. </li>
Как бы вы координировали, какие службы на каком хосте должны получать и передавать сообщения подключенным клиентам для сообщений об изменении состояния?
Существует бесконечное множество способов эффективно решить эту проблему.
- AMQP (RabbitMQ, ZeroMQ и т. Д.)
- Spread Toolkit
- N ^ 2 соединения между всеми сервисами (плохо)
- Черт, даже запустить IRC!
- ...
Я ищу решение, которое:
- возможно, использует тот факт, что существует только небольшой замкнутый кластер
- легко администрировать
- хорошо масштабируется
- "немой" (без странных крайних случаев)
Какой у вас опыт?
Что вы рекомендуете?
Спасибо!