Как выбрать лучший сервер> 10000 клиентов iPhone с сервера (не веб-сервера) - PullRequest
1 голос
/ 16 июля 2010

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

Я смотрел на управляемые событиями пакеты, такие как EventMachine, Twisted, node.js и т. Д. Кажется, что Twisted и EventMachine - это в основном вызов, и узел, вероятно, быстрее, но также не совсем готов к полной разработке , Это приводит меня к нескольким вопросам:

  1. Является ли Node непригодным для критической разработки просто потому, что его API не хватает, и он не полностью удален? Или могут быть ошибки, которые сделают мою разработку адом?

  2. Я рассматриваю возможность написания кода на C, поскольку дискового ввода-вывода будет очень мало, и большая его часть должна легко кэшироваться. Если так, то мне кажется, что я должен использовать неблокирующие сокеты UDP и обрабатывать ACK самостоятельно. Я посмотрел на poll (), select (), epoll (), но мне сложно определить, какой из них лучше и как их вызывать. Есть мысли?

  3. Если я использую Twisted или EventMachine (есть ли разница, кроме языка? Я тоже пока не знаю, так что я с чистого листа), мне следует попробовать TCP или UDP? Могут ли эти языки обработать отправку 1 КБ для 10 000 клиентов менее чем за секунду?

Буду признателен за любые идеи и предложения, сейчас я безумно крутлю свои колеса вокруг слишком большого количества документации и блогов, и у меня нет опыта программирования, чтобы разобраться в этом (по крайней мере, с какой-то здравомыслием).

Спасибо! Mike

1 Ответ

3 голосов
/ 16 июля 2010

Я предлагаю вам разработать свой сервер на C на Mac OS X snow leopard, используя kqueue () и kevent () или kevent64 () для мультиплексирования входящих клиентских соединений.

Взгляните на свободно доступный исходный код IRC-серверов.Эти серверы обрабатывают даже более 10 000 клиентов одновременно.

Начните читать эту страницу .Несмотря на то, что он немного устарел, с него все же стоит начать.

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