Масштабируемый серверный фреймворк в C++
Я ищу написать серверное приложение на C++, предназначенное для одновременной работы с десятками тысяч клиентов. Он должен работать под Windows и Linux. Я искал фреймворки и библиотеки и наткнулся на Boost Asio, который кажется очень зрелой и широко используемой альтернативой. У меня просто проблемы с тем, чтобы обернуть голову вокруг пулов нитей / потоков, в основном из-за миллионов шаблонов. Мой опыт в основном в C, так что я не очень привык к шаблонному беспорядку, которым Boost в целом кажется полным. Я пытался найти кого-то, кто разработал бы относительно тонкую оболочку для Boost Asio, которая бы позаботилась о аспектах многопоточности / синхронизации, используя пряди, связывание и тому подобное, но пока не смог найти кого-то, кто мог бы сделать это в рамках моего бюджета (2 или 300 долларов США).
Кто-нибудь из вас может порекомендовать другие библиотеки, которые масштабируются так же, как и Boost Asio (например, с IOCP в Windows, epoll в Linux и т. Д.), Или источник, где я мог бы найти опытных разработчиков Boost, ищущих небольшие фрилансеры?
Заранее большое спасибо за любую помощь.
С уважением,
Филип Беннефолл
4 ответа
Лучшие 4 варианта, которые я знаю
Мне очень нравится zeromq.. но libuv кажется интересным.. (libev и libevent тоже очень хороши)
ACE - это структура, которую вы ищете. Даже импульс Asio - это просто реализация шаблона Proactor, который был представлен Дугласом Шмидтом. Он наиболее известен как автор POSA Vol.2 и создатель платформы ACE.
Библиотека Boost.Asio предлагает параллельную поддержку для синхронных и асинхронных операций... на основе шаблона проектирования Proactor [POSA2].
Хотя это кроссплатформенная сетевая структура C++ и использует шаблон, используется только простой шаблон. (или не совсем)
Мой опыт также в основном на C, и мне не нравится массивный стиль программирования шаблонов Boost. Однако, ACE не был таким.
Попробуйте libevent для размера. Весь его смысл в том, чтобы решить проблему C10K. Я бы сказал, что он, вероятно, более легкий, чем буст.
Попробуйте Pulsar Server Framework. Основное преимущество заключается в том, что она построена на сетевой библиотеке libuv (используемой node.js), которая использует асинхронный ввод-вывод на основе циклов событий.
Это отлично масштабируется. Вы можете просто добавлять серверы по мере увеличения вашей пользовательской базы.
Он предназначен для работы с серверной фермой.
Легко настраиваемый и простой в использовании
В настоящее время он построен для сервера Windows x64.