
以前一直用 grpc,最近重新看了一下百度的 brpc,对比了一下优缺点。
brpc 优点,支持 status,lb,bvar,sessionlocal,threadlocal,logging,redis,http 等。 感觉这些是一个工程应用必须有的,比如状态监控,负载均衡,日志,常用的传输协议支持。
brpc 缺点,上手难度大,文档写的二流,很多功能要边猜边验证,支持的语言就要是 c++。
grpc 优点,支持的语言非常全,文档写的非常完善。
grpc 缺点,各种传输协议不支持( http/2,reids )之类的,日志要自己造,没有状态监控的 status。
1 xkeyideal 2019-09-04 16:50:47 +08:00 说缺点之前,请先查点资料或者有实践经验再说,grpc 不支持 http2 ?我只能说你菜的抠脚。 还有,任何东西都有缺点,没有银弹,任何代码都不想写,框架啥的都帮你搞定,可能么? |
2 jetyang 2019-09-04 17:09:03 +08:00 grpc 有 nginx 插件,负载均衡不是问题,ssl 证书也可以放在 nginx 下,很爽的。status code 确实没有,只能靠分析异常日志判断错误原因。其它的( logging、redis、http、threadlocal。。。)看不懂 |
3 janxin 2019-09-04 17:35:42 +08:00 brpc 和 gRPC 不是不冲突吗? B 站不是用 brpc 的生态+gRPC 吗... |
4 hellodudu86 2019-09-04 17:43:46 +08:00 楼主你也说了,grpc 支持的语言非常全,对一个 rpc 库来说这难道不是最实在的吗? |
5 momocraft 2019-09-04 17:48:20 +08:00 不是都叫 RPC 就可比较 |
6 StarkWhite 2019-09-04 18:03:23 +08:00 看到标题第一反应是 brpc 是你写的,然后来这里发帖推广,看来我也患了 apijson ptsd 了 /笑哭 |
7 StarkWhite 2019-09-04 18:04:06 +08:00 Facebook 也出了个 RPC 框架,叫 Thrift,可以一起对比啊 |
8 qq316107934 2019-09-04 18:10:15 +08:00 把我看懵了,gprc 不是可以 over http/2 么: https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md 状态监控,日志在不同语言下都有不同的包去做实现,grpc 这样其实框架侵入少,是好事。至于 redis 和 http,貌似和这个没啥关系呀... 如果你想用 http 不是应该用 protobuf 么 |
9 luozic 2019-09-04 18:25:08 +08:00 via iPhone 传输协议和服务治理是不同范围的东西。 |
10 tempdban 2019-09-04 20:09:28 +08:00 via Android 前员工答题,brpc 是可以直接走 http 输出 json 或 html 的 |
11 tempdban 2019-09-04 20:10:44 +08:00 via Android 尤其那个 bvar 用灵活了甚至可以直接显示心跳图。 |
14 iPhoneXI 2019-09-04 20:17:06 +08:00 via Android @StarkWhite 老牌 RPC 框架了 |
15 mv0x OP @tempdban 我以前也在厂里干过,brpc 比厂里以前的 ub 好用不只 10 倍,以前的 ub 框架只能算是一个半成品。 |
16 mv0x OP @qq316107934 如果仅仅是 rpc,这一块两者差不多,如果要加上服务治理,brpc 确实好用。在 c++里面,如果自己去集成 http(libcurl),redis,mongdb 之类的,其实不是不能实现,但是人家集成了,用起来确实方便很多,没必要自己去找依赖,造轮子。 |
17 qq316107934 2019-09-04 20:35:33 +08:00 @mv0x #16 哦哦,没注意到限定使用场景是 C++,我接触的还是 golang/python 偏多,仅供参考。 |
18 baixiangcpp 2019-09-04 20:42:31 +08:00 brpc 文档二流吗?明明真香 |
19 swulling 2019-09-04 23:12:20 +08:00 brpc 的问题是生态没起来,语言太限定了。厂内用的也是越来越少 |
20 swulling 2019-09-04 23:12:59 +08:00 毕竟 c++写的项目书越来越少 |
21 leon0318 2019-09-05 08:59:04 +08:00 via Android 确实 brpc 是真的优秀,百度的技术在国内还是牛逼 |
22 tomwei7 2019-09-05 10:55:16 +08:00 目前正在使用 brpc,brpc 在一些地方确实给人了一些小惊喜,比如内置的调试页面等等一些小工具确实都不错,方便了开发。但是作为一个 rpc 框架最重要的应该是能够和已有的系统结合以及良好的扩展性,brpc 在这个方面做的就很差,比如缺少多语言支持,没有 Middleware 之类的功能,内置的 bvar 监控没办法和 Prometheus 结合( bvar 支持导出 Prometheus 格式的数据但是没有 label 支持,基本不可用),rpc 框架应该是个架子,而不是一个已经装满的架子 |