An industrial-grade RPC framework for building reliable and high-performance services.

Why bRPC?

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.

You can use it to:

  • Build a server that can talk in multiple protocols (on same port), or access all sorts of services.
    1. 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.
    2. redis and memcached, thread-safe, more friendly and performant than the official clients.
    3. rtmp/flv/hls, for building streaming services.
    4. hadoop_rpc (may be opensourced)
    5. rdma support (will be opensourced)
    6. thrift support, thread-safe, more friendly and performant than the official clients.
    7. all sorts of protocols used in Baidu: baidu_std, streaming_rpc, hulu_pbrpc, sofa_pbrpc, nova_pbrpc, public_pbrpc, ubrpc and nshead-based ones.
    8. 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)
  • The Apache Software Foundation

    bRPC is an Apache incubation project.

    Apache Annotator is an effort undergoing incubation at The Apache Software Foundation (ASF) sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.