Масштабируемый серверный фреймворк в C ++ - PullRequest
12 голосов
/ 15 июля 2011

Я хочу написать серверное приложение на C ++, предназначенное для одновременной работы с десятками тысяч клиентов.Он должен работать под Windows и Linux.Я искал фреймворки и библиотеки и наткнулся на Boost Asio, который кажется очень зрелой и широко используемой альтернативой.Я просто не могу обернуть голову вокруг пулов нитей / потоков, в основном из-за миллионов шаблонов.Мой опыт в основном на C, поэтому я не очень привык к шаблонному беспорядку, которым Boost в целом кажется полным.Я попытался найти кого-то, кто разработал бы относительно тонкую оболочку для Boost Asio, которая бы позаботилась о аспектах потоков / синхронизации, используя пряди, связывание и тому подобное, но пока не смог найти кого-то, кто мог бы сделать это в рамках моего бюджета (2 или300 долларов США).

Может ли кто-нибудь из вас порекомендовать любые другие библиотеки, которые масштабируются так же, как и Boost Asio (например, с IOCP в Windows и epoll в Linux и т. Д.), Или источник, где я могу найти опытных разработчиков Boost, ищущихдля небольших внештатных вакансий?

Большое спасибо заранее за любую помощь.

С уважением,

Филип Беннфолл

Ответы [ 4 ]

11 голосов
/ 15 июля 2011

Лучшие 4 варианта, которые я знаю

Мне очень нравится zeromq .. но libuv кажется интересным .. (libev и libevent тоже очень хороши)

4 голосов
/ 22 июля 2011

ACE - это структура, которую вы ищете. Даже повышение Asio - это просто реализация шаблона Proactor, который был представлен Дугласом Шмидтом. Он наиболее известен как автор POSA Vol.2 и создатель платформы ACE.

Библиотека Boost.Asio предлагает параллельную поддержку синхронного и асинхронные операции ... на основе шаблона проектирования Proactor [POSA2].

Хотя это кроссплатформенная сетевая среда C ++ и использует шаблон, просто простой шаблон используется. (или не совсем)

Мой опыт также в основном на C, и мне не нравится массивный стиль программирования шаблонов Boost. Однако, ACE не был таким.

3 голосов
/ 15 июля 2011

Попробуйте libevent для размера. Весь его смысл в том, чтобы решить проблему C10K . Я бы сказал, что он, вероятно, более легкий, чем наддува.

0 голосов
/ 04 июля 2018

Попробуйте Pulsar Server Framework .Основное преимущество заключается в том, что она построена на сетевой библиотеке libuv (используемой node.js), которая использует асинхронный ввод-вывод на основе циклов событий.

  1. Она отлично масштабируется.Вы можете просто добавлять серверы по мере увеличения вашей пользовательской базы.

  2. Он предназначен для работы с фермой серверов.

  3. Широкие возможности настройки и простота настройкииспользовать

В настоящее время он построен для сервера Windows x64.

...