Об этом проекте

Apache bRPC — это C++ RPC-фреймворк с открытым исходным кодом, предназначенный для распределённых систем, чувствительных к производительности, таких как поиск, хранение, машинное обучение, рекламные и рекомендательные сервисы. Сервер bRPC может взаимодействовать по нескольким протоколам на одном порту, включая HTTP/HTTPS, HTTP/2 и gRPC, Redis, Memcached, Thrift, RTMP/FLV/HLS, RDMA и несколько унаследованных от Baidu RPC-протоколов. Он может предоставлять RESTful-интерфейсы и выполнять сопоставление между сообщениями JSON и protobuf. Серверы могут обрабатывать запросы синхронно или асинхронно. Клиенты поддерживают синхронные, асинхронные и полусинхронные вызовы. Комбинированные каналы предоставляют декларативный способ отправки сегментированных или параллельных запросов. Фреймворк также включает резервные запросы, размыкание цепи, автоматическое ограничение параллелизма и стратегии балансировки нагрузки, такие как round-robin, случайный выбор и согласованное хеширование. Среди упомянутых интеграций со службами именования — DNS, ZooKeeper и etcd. bRPC предоставляет встроенные сервисы, доступные по HTTP, для статуса, переменных, соединений, флагов, трассировки RPC, а также профилирования CPU, кучи и конкуренции за ресурсы. Его инструментарий включает rpc_press, rpc_replay, rpc_view, HTTP-бенчмаркинг и параллельные HTTP-утилиты. В проекте также описаны bthread для потоков в пользовательском пространстве, bvar для метрик, IOBuf для управления буферами и разбор протоколов в Wireshark. Разработчики могут добавлять новые протоколы или настраивать именование, балансировку нагрузки и другие компоненты. Для высокодоступных реплицируемых сервисов README указывает на braft — отдельную реализацию консенсуса Raft, связанную с проектом. Документация охватывает начало работы, клиенты, серверы, потоковый RPC, медиасервисы, отладку, управление памятью, ввод-вывод, потоки, балансировку нагрузки, тесты производительности и примеры.