HTTP проталкивает более 100 000 соединений - PullRequest
1 голос
/ 15 марта 2011

Я хочу использовать клиент-серверный протокол для передачи данных клиентам, которые всегда будут оставаться на связи, 24/7.

HTTP - это хороший клиент-серверный протокол общего назначения. Я не думаю, что семантика может сильно отличаться для любого другого протокола, и существует много хороших HTTP-серверов.

Критическим фактором является количество подключений: приложение будет постепенно масштабироваться до очень большого числа клиентов, скажем, до 100 000. Они не могут быть серверами, поскольку имеют динамические IP-адреса и могут находиться за брандмауэрами. Таким образом, ссылка на сокет должна быть установлена ​​и сохранена, что приводит нас к HTTP push. Лишь в редких случаях данные фактически будут передаваться данному клиенту, поэтому мы также хотим минимизировать издержки соединения.

Сервер должен справиться с этим, приняв соединение, вставив удаленный IP-адрес и порт в таблицу и оставив его бездействующим. Нам не нужно запускать 100 000 потоков, просто столько записей таблиц и файловых дескрипторов.

Есть ли способ достичь этого, используя готовый HTTP-сервер, без записи на уровне сокетов?

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

LightStreamer (http://www.lightstreamer.com/) - это инструмент, созданный специально для операций HTTP PUSH.

. Он должен решить эту проблему.

2 голосов
/ 28 марта 2011

Использование Push Framework: http://www.pushframework.com. Он был разработан для этой цели управления большим количеством долгоживущих асинхронных полнодуплексных соединений.

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

Вы также можете посмотреть на Причал + Продолжения .

...