网站建设全包,wordpress 音乐播放器插件,wordpress瀑布流代码,wordpress 图片自动加2023 年 1 月 26 日#xff0c;Apache 软件基金会 (ASF) 官方正式宣布Apache bRPC 正式毕业#xff0c;成为 Apache的顶级项目。
我听到这个消息是挺开心的#xff0c;毕竟是又一款由国人主导的apche顶级项目#xff0c;再次证明国内在开源界正在发挥越来越重要的作用。
…2023 年 1 月 26 日Apache 软件基金会 (ASF) 官方正式宣布Apache bRPC 正式毕业成为 Apache的顶级项目。
我听到这个消息是挺开心的毕竟是又一款由国人主导的apche顶级项目再次证明国内在开源界正在发挥越来越重要的作用。
Apache bRPC的历史
Apache bRPC的前身是百度内部的一个RPC框架采用C语言编写号称工业级别在百度内部众多基础和业务系统中得到大规模的应用是属于实战出来的有很好的落地效果和底子。
2017年的时候正式在Github上开源2018年捐赠给了Apache软件基金会这真是一个非常好的选择进入了Apache孵化器直到最近正式毕业。
bRPC功能全面、可扩展性强、性能强、易于使用目前社区热度还是很不错的在Github上有14.5K Star开发者数量超过130社区活跃度也不错。 Apache bRPC目前在搜索、推荐、直播等领域被广泛使用国内不少互联网公司也公开了使用情况例如小红书、欢聚时代、作业帮等据说线上服务实例数已超过 600W已成为业界广受欢迎的开源 RPC 框架之一github上有登记了一部分bRPC的应用企业和情况参考如下链接
https://github.com/apache/brpc/blob/master/community/cases.md
Apache bRPC 社区官方链接
Apache bRPC 官方网站https://brpc.apache.org/Apache bRPC GitHubhttps://github.com/apache/brpc
为什么重复造轮子
说起RPC框架估计大家一下子能念叨出来很多比如gRPC、Thrift、Apache Avro、Apache Dubbo等等那么Apache bRPC有什么不一样呢为什么要重复造这个轮子bRPC究竟有什么优势呢
这个点也是我所疑惑的跟一些朋友交流了一圈加上网络上能查到的创始团队公开的一些信息总结如下(若有失偏颇之处还请指正):
每个RPC框架都有自己所考虑认为非常重要的能力有一些考虑功能丰富而强大、有一些考虑使用方便、有一些考虑支持多语言、有一些考虑性能而很难有一个框架在所有方便都做得最为强大也许这也是同时有这么多RPC框架存在的原因。bRPC考虑更多的是可靠性、易用性、问题排查方便、性能高、尽量扩展性强。
1、可靠性强
以Google gRPC为例从功能上来说百度bRPC和Google gRPC都是用来构建分布式系统的RPC框架它们都宣称可以提供可靠性的服务不过百度bRPC比Google gRPC在可靠性方面有更多的投入比如可靠消息传递、流式数据传输、消息发布订阅等而Google gRPC更加注重性能和多语言的开发可以说Google gRPC是大而全的而bRPC则在可靠性方面下了比较大功夫。个人觉得无法断言哪种更好例如某些情况下你需要更好的对多语言的支持有些时候则不需要例如只需要支持C的情况下bRPC可能就更合适。
2、易用性高
创始团队认为易于使用对用户才是负责任的而不是什么都做成选项丢给用户增加用户的学习和使用成本。对于此无比赞同很多开源软件使用以后某个参数的使用不正确就很容易发生问题大量时间消耗在了排查上面~
所以bRPC配置项尽量少能默认的尽量设置默认值使用简单和方便尽量考虑在一些用户场景上的异常处理例如自动处理RPC请求的超时和重试。
3、问题定位方便
bRPC内置了各种HTTP探测的接口通过这些接口可以查询到延时情况、连接、内存、CPU热点等问题个人觉得有点类似于Springboot的Endpoint设计。
对于这个功能我疯狂点赞因为这对于问题排查确实是非常方便的曾经我做了相当长一段时间关于应用性能的排查分析深切感受到“黑盒”对于排查问题的困难。
4、高性能
这个我就不废话了看官方提供的测试对比结果吧 同机单client→单server在不同请求下的QPS越高越好 同机单client→单server在不同线程数下的QPS越高越好 跨机多client→单server的QPS越高越好 跨机多client→多server在固定QPS下的延时CDF越左越好越直越好
可以看到无论在吞吐、延时和长尾的处理上bRPC都表现得比其他的RPC框架更加优秀gRPC在各项指标都垫底未自己独立进行测试抱一定怀疑的态度得抽时间自己测试一下特别是gRPC的表现~有测试过的朋友们来分享一下。
5、可扩展性
虽然bRPC专注于可靠性、易用性和问题定位方便性但是不意味着其他的就拉跨在扩展性方面的设计也是比较好的例如通过语言包装可以支持java、go、python等多种语言同时它支持多种协议如HTTPgRPCthriftflv等等,在百度内部一个 brpc server 同端口可以支持二十几种协议这对于服务的平滑迁移就非常方便。