brpc icon indicating copy to clipboard operation
brpc copied to clipboard

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...

中文版

Build Status

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.

"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 (will be opensourced)
    • 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
    • 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
      • brpc外功修炼宝典(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 inside Baidu
      • 百度地图api入口
      • 联盟DSP
      • ELF学习框架
      • 云平台代理服务

Contribute code

Please refer to here.

Feedback and Getting involved

Code of Conduct

We follow the code of conduct from Apache Software Foundation, please refer it here Link