Repository: apache/brpc
Stars: 17484
README.md


!brpc logo (light)
!brpc logo (dark)
bRPC is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc.
"bRPC" means "better RPC".
You can use it to:
* Build a server that can talk in multiple protocols (on same port), or access all sorts of services
* restful http/https, h2/gRPC. using http/h2 in bRPC is much more friendly than libcurl. Access protobuf-based protocols with HTTP/h2+json, probably from another language.
* redis and memcached, thread-safe, more friendly and performant than the official clients.
* rtmp/flv/hls, for building streaming services.
* hadoop_rpc (may be opensourced)
* rdma support
* thrift support, thread-safe, more friendly and performant than the official clients.
* all sorts of protocols used in Baidu: baidu_std, streaming_rpc, hulu_pbrpc, sofa_pbrpc, nova_pbrpc, public_pbrpc, ubrpc and nshead-based ones.
* Build HA distributed services using an industrial-grade implementation of RAFT consensus algorithm which is opensourced at braft
* Servers can handle requests synchronously or asynchronously.
* Clients can access servers synchronously, asynchronously, semi-synchronously, or use combo channels to simplify sharded or parallel accesses declaratively.
* Debug services via http, and run cpu, heap and contention profilers.
* Get better latency and throughput.
* Extend bRPC with the protocols used in your organization quickly, or customize components, including naming services (dns, zk, etcd), load balancers (rr, random, consistent hashing)
Try it!
* Read overview to know where bRPC can be used and its advantages.
* Read getting started for building steps and play with examples.
* Docs:
* Performance benchmark
* bvar
* bvar_c++
* bthread
* bthread or not
* thread-local
* Execution Queue
* bthread tracer
* bthread tagged task group
* Client
* Basics
* Error code
* Combo channels
* Access http/h2
* Access gRPC
* Access thrift
* Access UB
* Streaming RPC
* Access redis
* Access memcached
* Backup request
* Dummy server
* Server
* Basics
* Serve http/h2
* Serve gRPC
* Serve thrift
* Serve Nshead
* Debug server issues
* Server push
* Avalanche
* Auto ConcurrencyLimiter
* Media Server
* json2pb
* Builtin Services
* status
* vars
* connections
* flags
* rpcz
* cpu_profiler
* heap_profiler
* contention_profiler
* Tools
* rpc_press
* rpc_replay
* rpc_view
* benchmark_http
* parallel_http
* Others
* IOBuf
* Streaming Log
* FlatMap
* Coroutine
* Circuit Breaker
* RDMA
* Bazel Support
* Wireshark baidu_std dissector plugin
* bRPC introduction(training material)
* A tutorial on building large-scale services(training material)
* bRPC internal(training material)
* RPC in depth
* New Protocol
* Atomic instructions
* IO
* Threading Overview
* Load Balancing
* Locality-aware
* Consistent Hashing
* Memory Management
* Timer keeping
* bthread_id
* Use cases
* User cases
Contribute code
Please refer to here.
Feedback and Getting involved
* Report bugs, ask questions or give suggestions by Github Issues
* Subscribe to the mailing list([email protected]) to get updated with the project
Code of Conduct
We follow the code of conduct from Apache Software Foundation, please refer it here Link