brpc
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...
中文版
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
- Report bugs, ask questions or give suggestions by Github Issues
- Subscribe 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
