Я пытаюсь создать сервер, который будет обрабатывать много одновременных подключений к клиентам iPhone без многопоточности. Я буду отправлять сообщения всем клиентам примерно каждые 10-30 секунд, но большинство сообщений будут идентичными или очень похожими и их легко будет отсортировать. Учитывая настройку высокого параллелизма, но низкую потребность в сортировке данных, я пытаюсь найти лучшее решение для настройки моего сервера.
Я смотрел на управляемые событиями пакеты, такие как EventMachine, Twisted, node.js и т. Д. Кажется, что Twisted и EventMachine - это в основном вызов, и узел, вероятно, быстрее, но также не совсем готов к полной разработке , Это приводит меня к нескольким вопросам:
Является ли Node непригодным для критической разработки просто потому, что его API не хватает, и он не полностью удален? Или могут быть ошибки, которые сделают мою разработку адом?
Я рассматриваю возможность написания кода на C, поскольку дискового ввода-вывода будет очень мало, и большая его часть должна легко кэшироваться. Если так, то мне кажется, что я должен использовать неблокирующие сокеты UDP и обрабатывать ACK самостоятельно. Я посмотрел на poll (), select (), epoll (), но мне сложно определить, какой из них лучше и как их вызывать. Есть мысли?
Если я использую Twisted или EventMachine (есть ли разница, кроме языка? Я тоже пока не знаю, так что я с чистого листа), мне следует попробовать TCP или UDP? Могут ли эти языки обработать отправку 1 КБ для 10 000 клиентов менее чем за секунду?
Буду признателен за любые идеи и предложения, сейчас я безумно крутлю свои колеса вокруг слишком большого количества документации и блогов, и у меня нет опыта программирования, чтобы разобраться в этом (по крайней мере, с какой-то здравомыслием).
Спасибо!
Mike