Многопоточная кометная серверная библиотека - PullRequest
0 голосов
/ 09 июня 2011

Я ищу многопоточную библиотеку комет-сервера - мне нужно, чтобы async io (используя epoll) работал с пулом потоков (4-8 потоков).Торнадо было бы идеально, если бы он был многопоточным.

Почему многопоточность?Мне нужно обрабатывать и обслуживать данные, которые могут поступать от каждого подключенного пользователя - они могут быть синхронизированы между экземплярами торнадо с использованием базы данных, но даже nosql будет слишком большим замедлением - почти каждый запрос будет заканчиваться записью / обновлением базы данных - что даже при использовании асинхронногоВодители не очень хорошая идея.Я могу хранить все в локальной оперативной памяти, так что это может быть очень быстрым, но должно выполняться на одном процессе, чтобы избежать межпроцессного взаимодействия.Мне не нужно масштабировать - достаточно одной коробки - но она ДОЛЖНА быть быстрой.Некоторые данные будут храниться в MongoDB, но количество монго-запросов будет составлять 5% от обычных запросов.

И важно то, что семафоры (и другие подходы более высокого уровня) не являются для меня ракетостроением, поэтому яне боится синхронизации.

Требования:

  • асинхронный ввод
  • неблокирование
  • тысячи одновременных подключений
  • FAST
  • базовые функции HTTP (GET, POST, cookie)
  • способность обрабатывать запрос асинхронно (делать что-то, асинхронный вызов с обратным вызовом (например, запрос к базе данных), обратный вызов процесса, возвращать данные)
  • пул потоков
  • C ++ / Java / Python
  • простой и легкий

Было бы неплохо также иметь драйвер асинхронного монго

Я посмотрел на Boost ASIO, и он, кажется, способен делать то, что мне нужно - но я хочу сосредоточиться на приложении - не писать обработку запросов http.

Я читал о Tornado (кажется идеальным, но однопоточным), Простой (не уверен, что он может обрабатывать запрос асинхронно и возвращать данные после асинхронного вызова), BOOST ASIO (очень хороший, но слишком низкий уровень)

1 Ответ

1 голос
/ 16 июня 2011

Ну, после дальнейших раскопок я решил сменить технологию ... Я решил создать свой собственный протокол поверх TCP и Netty

...