сервер поддерживает миллионы одновременных подключений

Я создаю распределенную систему, которая потенциально может состоять из миллионов клиентов, которым всем необходимо поддерживать открытое (предпочтительно HTTP)соединение для ожидания команды с сервера (, который запущен где-то еще). Нагрузка сообщений/команд будет не очень высокой, может быть, одно сообщение/сек/1000 клиентов, что означает, что будет 1000 msg/sec @ 1 миллион клиентов. => в основном речь идет об одновременных соединениях.

Требования также просты. Односторонний обмен сообщениями (сервер->клиент), только 1 клиент на "канал".

Я довольно открыт в плане технологий (xmpp/websockets/comet/… ). Я использую Google App Engine в качестве сервера, но их "каналы" у меня, к сожалению, не работают (слишком низкие квоты и нет Java-клиента). XMPP был вариантом, но это довольно дорого. До сих пор я использовал URL Fetch и pubnub, но они только начали взимать плату за соединения (по-крупному).

Итак,:

  1. Кто-нибудь знает об услуге, которая может сделать это для меня доступным способом? Большинство из них, которые я нашел, ограничивают или сильно взимают плату за соединения.

  2. Есть ли у вас опыт самостоятельной реализации такого сервера? На самом деле я уже сделал это, и это работает довольно хорошо (на основе Tomcat и NIO ), но у меня еще не было времени, чтобы фактически настроить большую среду нагрузочного тестирования (, отчасти потому, что это все еще запасной вариант. решение, я бы предпочел закаленный в боях сервер сообщений). Есть ли опыт, сколько пользователей вы получаете за ГБ? Какие-то жесткие ограничения?

Моя архитектура также позволяет фрагментировать серверы сообщений, но я хотел бы максимально увеличить количество одновременных подключений, поскольку нагрузка ЦП на обработку сообщений минимальна.

6
задан Daniel 11 April 2012 в 23:46
поделиться