À propos du projet

Apache bRPC est un framework RPC C++ open source destiné aux systèmes distribués sensibles aux performances tels que les services de recherche, de stockage, d'apprentissage automatique, de publicité et de recommandation. Un serveur bRPC peut communiquer via plusieurs protocoles sur le même port, notamment HTTP/HTTPS, HTTP/2 et gRPC, Redis, Memcached, Thrift, RTMP/FLV/HLS, RDMA et plusieurs protocoles RPC hérités de Baidu. Il peut exposer des interfaces RESTful et assurer la correspondance entre les messages JSON et protobuf. Les serveurs peuvent traiter les requêtes de manière synchrone ou asynchrone. Les clients prennent en charge les appels synchrones, asynchrones et semi-synchrones. Les canaux combinés offrent un moyen déclaratif d'émettre des requêtes partitionnées ou parallèles. Le framework inclut également des requêtes de secours, la coupure de circuit, la limitation automatique de la concurrence et des stratégies d'équilibrage de charge telles que le tourniquet, l'aléatoire et le hachage cohérent. Les intégrations de services de nommage mentionnées incluent DNS, ZooKeeper et etcd. bRPC fournit des services intégrés accessibles via HTTP pour l'état, les variables, les connexions, les indicateurs, le traçage RPC et le profilage du CPU, du tas et des contentions. Son outillage comprend rpc_press, rpc_replay, rpc_view, l'analyse comparative HTTP et des utilitaires HTTP parallèles. Le projet documente également bthread pour le threading en espace utilisateur, bvar pour les métriques, IOBuf pour la gestion des tampons et la dissection de protocole Wireshark. Les développeurs peuvent ajouter de nouveaux protocoles ou personnaliser le nommage, l'équilibrage de charge et d'autres composants. Pour les services répliqués à haute disponibilité, le README renvoie vers braft, une implémentation distincte du consensus Raft associée au projet. La documentation couvre la prise en main, les clients, les serveurs, le RPC en streaming, la diffusion multimédia, le débogage, la gestion de la mémoire, les entrées/sorties, le threading, l'équilibrage de charge, les benchmarks de performance et des exemples.