brpc又称为baidu-rpc,是百度开发一款“远程过程调用”网络框架。目前该项目已在github上开源。当然在谈这些前,需要知道什么是rpc。rpc全称是Remote Procedure Call,即远程过程调用。
百度开源的RPC框架BRPC,以其高性能、低延迟、易用性等优势,使得其在高性能的C++开发领域非常受欢迎。
为什么高性能、低延迟上能够有足够大的优势?
线程模型(Thread Module):使用bthread 用户态协程,结合N:M的调度模型,以及work-steal 抢占式调度实现;为bthread打造的butex同步组件,为实现高性能的RPC框架提供了较为高效和简洁的并发编程基础。
内存管理(Buffer & Memory Management):buffer-ManangerMent通过IOBuf(非连续零拷贝缓存)方式减少数据传递处理过程中的拷贝。各种ThreadLocal的ResoucePool,Object Pool等来优化定长的短生命周期的申请和释放。
执行队列(exec queue):多生产者单消费者无锁队列,实现了多生产者单消费者之间的的高效通信,在实现单TCP连接复用,高效发送-接收数据上发挥了很重要的作用。
超时定时器(Timer Keeping): 使用高效的定时器管理超时的RPC,并进行回调。
避免过多编码:将数据Body作为Attachment的方式,而不需要编解码
易用性体现在哪里?
ProtoBuf 支持:支持google ProtoBuf 定义RPC协议
单端口多协议支持:支持在同一端口识别不同的协议(Redis等)
高性能bvar统计:通过高性能的bvar进行方面的性能统计,并且支持导出到普罗米修斯-形成一整套监控方案。
IO模式:支持方面的同步和异步的编程模型
扩展性:支持自定义的协议实现。
千语创想-专业APP开发、app定制服务商,提供一站式移动应用解决方案,满足您的各类需求,欢迎免费评估需求和获取报价。
立即免费在线制作一个APP,新手注册即送开发大礼包
提交app定制需求,免费获取报价和周期: