百度正式开源其RPC框架brpc
极客时间编辑部
讲述:丁婵大小:1.61M时长:03:31
近日,百度正式在 GitHub 上基于 Apache 2.0 协议开源了其 RPC 框架 brpc。brpc 是一个基于 protobuf 接口的 RPC 框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有的 RPC 协议,并支持多种第三方协议,从目前的性能测试数据来看,brpc 的性能领跑于其他同类 RPC 产品。
brpc 开发于 2014 年,主要使用的语言是 C++ 和 Java,是百度内部使用最为广泛的 RPC 框架,它经受了高并发高负载的生产环境验证,并支撑了百度内部大约 75 万个同时在线的实例。据 InfoQ 了解,百度内部曾有多款 RPC 框架,甚至在 2014 年时还开源过另外一款 RPC 框架 sofa-pbrpc。那么 brpc 有什么样的优势?又为何要选择开源呢?就这些问题,InfoQ 记者采访了 brpc 负责人戈君。
戈君表示,brpc 主打的是深度和易用性,在他看来,RPC 真正的痛点是可靠性、易用性和定位问题的便利性。服务中不要出现不可解释的长尾,程序的可变项要尽量少,各种诡异问题要有工具支持快速排查。而这些在目前开源的 RPC 框架中做的并不好,那么 brpc 又是如何做的呢?
首先是易用性,有种设计是什么选择都做成选项丢给用户,号称功能全面,但一旦出问题,就甩锅是用户“配置错了”。这样的框架实际上非常依赖开发团队,没有开发团队的支持基本都用不了,这么做其实非常不负责任,用户面对海量的选项也很难受。brpc 对于增加选项非常谨慎,框架能自己做判断的绝不扔给用户,所有用户选项都有最合理的默认值,不设也能用,这对用户体验来说非常重要。
其次是定位问题的便利性,在戈君看来,这点上其它开源框架目前做的都不好,正常使用是可以的,但一旦出问题就麻烦了,RPC 框架对用户是个黑盒,用户根本不知道里面发生了什么。
brpc 的解决办法是给 server 内加入各种 HTTP 接口的内置服务,通过这些服务,用户可以很快看到 server 的延时、错误、连接、跟踪某个 RPC、CPU 热点、内存分配、锁竞争等信息,用户还可以使用 bvar 来自定义各类统计信息,并在百度的运维平台 NOAH 上汇总。这样大部分问题用户都可以自助解决。
谈到为什么要将 brpc 开源,戈君表示,主要是因为接下来还有不少依赖 RPC 的百度系统要开源,而 RPC 作为最基础的组件,开源不仅仅是为了自身,也是为其它开源项目铺路。同时,这些年百度对开源的认识也在不断加深,开源看似曝光了百度的核心技术,但带来的生态影响力更为重要。
brpc 的开源版和内部版本很接近,只是去掉了对百度内部一些独有的基础设施的支持,甚至 brpc 团队在内网写的深入分析 RPC 技术细节的文档也都一并开源了,后续也会及时推送改动,戈君笑着表示,请大家放心,这是一个活项目,不会拉个开源分支就不管了。
GitHub 地址:https://github.com/brpc/brpc
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论