用没有感觉 brpc 比 grpc 实在? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mv0x
V2EX    程序员

用没有感觉 brpc 比 grpc 实在?

  •  
  •   mv0x 2019-09-04 15:27:58 +08:00 17078 次点击
    这是一个创建于 2277 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前一直用 grpc,最近重新看了一下百度的 brpc,对比了一下优缺点。

    brpc 优点,支持 status,lb,bvar,sessionlocal,threadlocal,logging,redis,http 等。 感觉这些是一个工程应用必须有的,比如状态监控,负载均衡,日志,常用的传输协议支持。

    brpc 缺点,上手难度大,文档写的二流,很多功能要边猜边验证,支持的语言就要是 c++。

    grpc 优点,支持的语言非常全,文档写的非常完善。

    grpc 缺点,各种传输协议不支持( http/2,reids )之类的,日志要自己造,没有状态监控的 status。

    22 条回复    2019-09-05 10:55:16 +08:00
    xkeyideal
        1
    xkeyideal  
       2019-09-04 16:50:47 +08:00   1
    说缺点之前,请先查点资料或者有实践经验再说,grpc 不支持 http2 ?我只能说你菜的抠脚。

    还有,任何东西都有缺点,没有银弹,任何代码都不想写,框架啥的都帮你搞定,可能么?
    jetyang
        2
    jetyang  
       2019-09-04 17:09:03 +08:00   1
    grpc 有 nginx 插件,负载均衡不是问题,ssl 证书也可以放在 nginx 下,很爽的。status code 确实没有,只能靠分析异常日志判断错误原因。其它的( logging、redis、http、threadlocal。。。)看不懂
    janxin
        3
    janxin  
       2019-09-04 17:35:42 +08:00
    brpc 和 gRPC 不是不冲突吗? B 站不是用 brpc 的生态+gRPC 吗...
    hellodudu86
        4
    hellodudu86  
       2019-09-04 17:43:46 +08:00
    楼主你也说了,grpc 支持的语言非常全,对一个 rpc 库来说这难道不是最实在的吗?
    momocraft
        5
    momocraft  
       2019-09-04 17:48:20 +08:00
    不是都叫 RPC 就可比较
    StarkWhite
        6
    StarkWhite  
       2019-09-04 18:03:23 +08:00
    看到标题第一反应是 brpc 是你写的,然后来这里发帖推广,看来我也患了 apijson ptsd 了 /笑哭
    StarkWhite
        7
    StarkWhite  
       2019-09-04 18:04:06 +08:00
    Facebook 也出了个 RPC 框架,叫 Thrift,可以一起对比啊
    qq316107934
        8
    qq316107934  
       2019-09-04 18:10:15 +08:00   1
    把我看懵了,gprc 不是可以 over http/2 么: https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md
    状态监控,日志在不同语言下都有不同的包去做实现,grpc 这样其实框架侵入少,是好事。至于 redis 和 http,貌似和这个没啥关系呀... 如果你想用 http 不是应该用 protobuf 么
    luozic
        9
    luozic  
       2019-09-04 18:25:08 +08:00 via iPhone
    传输协议和服务治理是不同范围的东西。
    tempdban
        10
    tempdban  
       2019-09-04 20:09:28 +08:00 via Android
    前员工答题,brpc 是可以直接走 http 输出 json 或 html 的
    tempdban
        11
    tempdban  
       2019-09-04 20:10:44 +08:00 via Android
    尤其那个 bvar 用灵活了甚至可以直接显示心跳图。
    mv0x
        12
    mv0x  
    OP
       2019-09-04 20:11:43 +08:00
    @xkeyideal 你就是个智商 B,你看文档了没?
    mv0x
        13
    mv0x  
    OP
       2019-09-04 20:16:56 +08:00
    @jetyang 是的,brpc 服务治理确实很方便。
    iPhoneXI
        14
    iPhoneXI  
       2019-09-04 20:17:06 +08:00 via Android
    @StarkWhite 老牌 RPC 框架了
    mv0x
        15
    mv0x  
    OP
       2019-09-04 20:19:15 +08:00
    @tempdban 我以前也在厂里干过,brpc 比厂里以前的 ub 好用不只 10 倍,以前的 ub 框架只能算是一个半成品。
    mv0x
        16
    mv0x  
    OP
       2019-09-04 20:31:37 +08:00
    @qq316107934 如果仅仅是 rpc,这一块两者差不多,如果要加上服务治理,brpc 确实好用。在 c++里面,如果自己去集成 http(libcurl),redis,mongdb 之类的,其实不是不能实现,但是人家集成了,用起来确实方便很多,没必要自己去找依赖,造轮子。
    qq316107934
        17
    qq316107934  
       2019-09-04 20:35:33 +08:00
    @mv0x #16 哦哦,没注意到限定使用场景是 C++,我接触的还是 golang/python 偏多,仅供参考。
    baixiangcpp
        18
    baixiangcpp  
       2019-09-04 20:42:31 +08:00
    brpc 文档二流吗?明明真香
    swulling
        19
    swulling  
       2019-09-04 23:12:20 +08:00
    brpc 的问题是生态没起来,语言太限定了。厂内用的也是越来越少
    swulling
        20
    swulling  
       2019-09-04 23:12:59 +08:00
    毕竟 c++写的项目书越来越少
    leon0318
        21
    leon0318  
       2019-09-05 08:59:04 +08:00 via Android
    确实 brpc 是真的优秀,百度的技术在国内还是牛逼
    tomwei7
        22
    tomwei7  
       2019-09-05 10:55:16 +08:00   1
    目前正在使用 brpc,brpc 在一些地方确实给人了一些小惊喜,比如内置的调试页面等等一些小工具确实都不错,方便了开发。但是作为一个 rpc 框架最重要的应该是能够和已有的系统结合以及良好的扩展性,brpc 在这个方面做的就很差,比如缺少多语言支持,没有 Middleware 之类的功能,内置的 bvar 监控没办法和 Prometheus 结合( bvar 支持导出 Prometheus 格式的数据但是没有 label 支持,基本不可用),rpc 框架应该是个架子,而不是一个已经装满的架子
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2709 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 06:41 PVG 14:41 LAX 22:41 JFK 01:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86