V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mv0x
V2EX  ›  程序员

用没有感觉 brpc 比 grpc 实在?

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

    以前一直用 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++写的项目书越来越少
    leonme
        21
    leonme  
       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   ·   实用小工具   ·   5898 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 02:02 · PVG 10:02 · LAX 18:02 · JFK 21:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.