百度内最常使用的工业级RPC框架, 有1,000,000+个实例(不包含client)和上千种多种服务, 在百度内叫做"baidu-rpc". 目前只开源C++版本。
你可以使用它:
- 搭建能在一个端口支持多协议的服务, 或访问各种服务
- restful http/https, h2/h2c (与grpc兼容, 即将开源). 使用brpc的http实现比libcurl方便多了。
- redis和memcached, 线程安全,比官方client更方便。
- rtmp/flv/hls, 可用于搭建直播服务.
- hadoop_rpc(可能开源)
- 支持rdma(即将开源)
- 支持thrift , 线程安全,比官方client更方便
- 各种百度内使用的协议: baidu_std, streaming_rpc, hulu_pbrpc, sofa_pbrpc, nova_pbrpc, public_pbrpc, ubrpc和使用nshead的各种协议.
- 从其他语言通过HTTP+json访问基于protobuf的协议.
- 基于工业级的RAFT算法实现搭建高可用分布式系统,已在braft开源。
- Server能同步或异步处理请求。
- Client支持同步、异步、半同步,或使用组合channels简化复杂的分库或并发访问。
- 通过http界面调试服务, 使用cpu, heap, contention profilers.
- 获得更好的延时和吞吐.
- 把你组织中使用的协议快速地加入brpc,或定制各类组件, 包括名字服务 (dns, zk, etcd), 负载均衡 (rr, random, consistent hashing)
- 通过概述了解哪里可以用brpc及其优势。
- 阅读编译步骤了解如何开始使用, 之后可以运行一下示例程序.
- 文档:
- 性能测试
- bvar
- bthread
- Client
- Server
- 内置服务
- 工具
- 其他
- IOBuf
- Streaming Log
- FlatMap
- brpc外功修炼宝典(培训材料)
- 搭建大型服务入门(培训材料)
- brpc内功修炼宝典(培训材料)
- 深入RPC
- Use cases inside Baidu
如果你可以修复某个issue或增加一个新功能, 欢迎给我们发送PR. 如果对应的PR被接受了, 你的贡献将会根据难度和质量在0-5区间内打分(越高越好). 如果你累计获得了10分, 可以联系我们获得面试机会或为你写推荐信。
提交PR前请确认你的代码符合如下要求:
- 符合google C++代码规范, 且一次缩进为4个空格。
- 代码出现的位置和其定位相符。比如对于某特定协议的扩展代码不该出现在server.cpp, channel.cpp这些较为通用的类中,而一些非常通用的改动也不该深藏在某个特定协议的cpp中。
- 有对应的单测代码。
提交PR后请检查如下内容:
- travis-ci中的编译和单测均已成功。
bug、修改建议、疑惑都欢迎提在issue中,或加入qq群498837325交流源码方面的问题。