• 请不要在回答技术问题时复制粘贴 AI 生成的内容
0vv0
V2EX  ›  程序员

把公司内部服务通讯的 http 全改成了 grpc,看着连接数过山车式的下降,真舒坦

  •  2
     
  •   0vv0 · Jan 7, 2020 · 15199 views
    This topic created in 2323 days ago, the information mentioned may be changed or developed.

    改之前内部服务的连接数比用户的连接数还多

    lcafLd.jpg

    Supplement 1  ·  Jan 8, 2020
    还是 java 开发者的天下啊,我们主要语言是 go
    59 replies    2023-03-24 15:13:46 +08:00
    lxd152
        1
    lxd152  
       Jan 7, 2020
    棒棒棒
    optional
        2
    optional  
       Jan 7, 2020
    这 tps/qps 没变少吧,,只是 grpc 走了 http/2
    0ZXYDDu796nVCFxq
        3
    0ZXYDDu796nVCFxq  
       Jan 7, 2020 via Android
    有性能对比吗
    TypeError
        4
    TypeError  
       Jan 7, 2020 via Android
    连接复用了?
    meteor957
        5
    meteor957  
       Jan 7, 2020
    这也太夸张了吧
    fox1955
        6
    fox1955  
       Jan 7, 2020   ❤️ 5
    经历过 http -> grpc. 性能的提升远不及联调开发效率的降低, 最后换回去了.
    ofooo
        7
    ofooo  
       Jan 7, 2020
    不是只换了一种链接方式么? 通讯量应该一样才对吧?
    dcalsky
        8
    dcalsky  
       Jan 7, 2020 via Android
    各个服务之间共用 protoc 吗,protoc gen 等基础设施经验能分享一下吗?
    diveIntoWork
        9
    diveIntoWork  
       Jan 7, 2020
    改成 gRpc 后,不走 Http 协议了,统计出来的连接数当然变少了,要看 cpu 利用率、内存占用、吞吐才有意义
    outoftimeerror
        10
    outoftimeerror  
       Jan 7, 2020
    grpc 不也是基于 http2 吗
    0vv0
        11
    0vv0  
    OP
       Jan 7, 2020
    @TypeError #4 是的 http2 的多路复用
    0vv0
        12
    0vv0  
    OP
       Jan 7, 2020
    @ofooo #7
    @diveIntoWork #9
    是的 不过改造的目的就只是为了降低连接数,以及因为连接太多带来的内存占用大。监控平台中能最直观看出来改造前后区别的也就这个
    0vv0
        13
    0vv0  
    OP
       Jan 7, 2020
    @outoftimeerror #10 是呀 只是因为 http2 支持多路复用,不搞连接池的话也就只有一个连接
    luozic
        14
    luozic  
       Jan 7, 2020 via iPhone
    这种得开发配套的工具链,否则出问题联调,apm 接入,debug 等等一堆的工具链需要开发配套,如过涉及到 cdn,网络硬件等更深远的坑,就等着哭吧。restful with http 主要是生态,别的东西有个 JB 生态
    0vv0
        15
    0vv0  
    OP
       Jan 7, 2020 via Android
    @luozic 服务之间通讯使用 rpc 框架不是很正常的吗,grpc 虽然没 http 生态好但也是很成熟的了,也不至于差很多到了会踩很多深坑的地步。更不至于像你说的 JB 生态都没有
    luozic
        16
    luozic  
       Jan 7, 2020 via iPhone
    @itstudying 我的意思是边界约定好,大公司使用一部分特殊能性能的工具是他们能配套建立全链路的工具,小公司一般没有,而这种全链路的工具没听说过哪家开源的。rest 是因为文本的自然原因导致容易找到全链路的替代品。
    luozic
        17
    luozic  
       Jan 7, 2020 via iPhone
    最简单的 apm 用啥,API gateway 等最基础的服务治理有几个支持了,支持程度如何?
    wangyzj
        18
    wangyzj  
       Jan 7, 2020
    不喜欢 pb
    都是 http2
    会有很大变化吗
    0vv0
        19
    0vv0  
    OP
       Jan 8, 2020 via Android
    @luozic grpc 也就是个 http2 也有 header,也有请求 path 多说无益…… 搜索引擎第一页就有结果
    0vv0
        20
    0vv0  
    OP
       Jan 8, 2020 via Android
    @wangyzj 实际只是复用了连接,不想用 pb 不用就是~
    binbinyouliiii
        21
    binbinyouliiii  
       Jan 8, 2020
    http1.1 不也是可以走长连接
    wangyzj
        22
    wangyzj  
       Jan 8, 2020
    @itstudying 给个 demo 呗
    另外 grpc 有类似 postman 那种方便调试的客户端工具吗?
    KuroNekoFan
        23
    KuroNekoFan  
       Jan 8, 2020 via iPhone
    之前看一篇讲 uber 技术内幕的文章
    里面提到一件事
    就是某个系统本来用了自定义通讯协议(大概就是 grpc,thrift 什么的)后来遇到问题怎么都解决不了
    后来换成 http,问题不见了
    ebingtel
        24
    ebingtel  
       Jan 8, 2020
    GRPC 的负载均衡是怎么搞的? nginx 还不支持吧
    0vv0
        25
    0vv0  
    OP
       Jan 8, 2020
    @wangyzj #22 如果不用 pb 的话就不能用 grpc 了,只能客户端和服务端都支持 http2 才行,我们主要是 go 语言 demo 网络上有很多~,https://github.com/fullstorydev/grpcurl 可以使用这个库进行调试,不过我们都是会写个 client 打印输出。
    0vv0
        26
    0vv0  
    OP
       Jan 8, 2020
    @ebingtel #24 nginx1.13 版本就支持了 grpc 的负载均衡,不过我们用的是阿里云的 slb,
    0vv0
        27
    0vv0  
    OP
       Jan 8, 2020
    @ebingtel #24 哦 也用到了 nginx,不过没负载均衡只是做了转发 grpc 的请求,nginx 开启支持 http2 就好
    THaGKI9
        28
    THaGKI9  
       Jan 8, 2020 via iPhone
    为啥会有这么急剧的变化呢?你们的更替是直接全量上线吗?
    zunceng
        29
    zunceng  
       Jan 8, 2020
    @luozic 整个 cncf 半壁江山都是 grpc

    你说的 jb 生态几乎已经占据了业界主流了你还不知道吗?
    xxiu
        30
    xxiu  
       Jan 8, 2020
    grpc 是 http2 多路复用,连接数相当于以前的一对多变成一对一。
    whypool
        31
    whypool  
       Jan 8, 2020
    然后内存 boom 了?
    chennqqi
        32
    chennqqi  
       Jan 8, 2020
    http keepalive 也能复用啊
    SkyYu822
        33
    SkyYu822  
       Jan 8, 2020
    @zunceng cncf 半壁江山 = 业界主流 ?
    zunceng
        34
    zunceng  
       Jan 8, 2020
    @SkyYu822 说句不客气的话 在科技行业难道不是吗
    SkyYu822
        35
    SkyYu822  
       Jan 8, 2020
    @zunceng 我持保留意见 这块争论过大
    wysnylc
        36
    wysnylc  
       Jan 8, 2020
    都在从 rpc 升级到 http,你这往回走,是智者还是愚昧?待后来人评价
    反正 spring cloud 是主推 http,rpc 只是可选和备选
    fuxiaohei
        37
    fuxiaohei  
       Jan 8, 2020
    以前是 http 1 吗?直接升级到 http2 也许就有效果了
    realpg
        38
    realpg  
    PRO
       Jan 8, 2020
    直接把接口服务器变成 h2 不也这效果
    tabris17
        39
    tabris17  
       Jan 8, 2020
    @fox1955 协议是可以替换的。开发调式时用 json-rpc,生产环境用 grpc,不就结了
    ebingtel
        40
    ebingtel  
       Jan 8, 2020
    @itstudying 哦 是我的提问提错了……在使用 nginx 做长连接的负载均衡,好像有点问题 不知道你们有没有这种长连接的场景
    leoaqr
        41
    leoaqr  
       Jan 8, 2020 via iPhone
    只看了连接数,cpu 使用量有变化么?
    guokeke
        42
    guokeke  
       Jan 8, 2020
    和 grpc 对标的不是 rest 和 graphql 吗? 如果 http 改 grpc ?指的是 http 1.1 升 2 ? 那其实 nginx 改个参数就行了。
    dbskcnc
        43
    dbskcnc  
       Jan 8, 2020
    grpc 语法方面确实方便
    luozic
        44
    luozic  
       Jan 8, 2020 via iPhone
    现在更合适的通用连接方式 rsocket 基本会成为后续更主流的方式,协议层和传输层解耦合,协议和应用捆死的模型最大规模的应用不是 servlet 么,吹了那么多,servlet 啥时候换 http2 协议性能提升了不少了?
    hyperbin
        45
    hyperbin  
       Jan 8, 2020 via Android
    换 http2 不就行了?
    DanielYao
        46
    DanielYao  
       Jan 8, 2020
    我司.net ,java,node ,go 上 grpc 两年了,美滋滋,谁用谁知道
    luozic
        47
    luozic  
       Jan 8, 2020
    cncf 用 grpc 的原因还用说么,k8s 等基础设施是抄谁的? 并且当时没有造足够多的 rpc,大家也不知道如何设计一个通用性能高而且和传输协议解耦合的传输层 rpc,gprc 好歹是当时的唯二中的一个半自动化 rpc,比 facebook 的 thrift 友好一点,
    janxin
        48
    janxin  
       Jan 8, 2020
    @KuroNekoFan uber 用的 thrift
    KuroNekoFan
        49
    KuroNekoFan  
       Jan 8, 2020 via iPhone
    @janxin 可能我描述的不够仔细,不过我主要是提这么一个事情,而不是想表达“据我所知 uber 从 xxx 转向 http”
    4BVL25L90W260T9U
        51
    4BVL25L90W260T9U  
       Jan 8, 2020
    开始在公司用的 gRPC,可惜其他人理解不了,觉得还要编译好麻烦啊,竟然又换回了 http。我也是醉了
    wangyzj
        52
    wangyzj  
       Jan 8, 2020
    @wtof 我也查到这个了。。。多谢
    sophos
        53
    sophos  
       Jan 8, 2020
    @janxin uber 很多 grpc 相关的开源项目
    codewarrior
        54
    codewarrior  
       Jan 9, 2020 via Android
    换成 grpc 之后 authentication 怎么做的? passive authentication,ssl 之类的有类似的功能支持吗?
    duchengle001
        55
    duchengle001  
       Apr 10, 2021
    @itstudying 请教一下阿里云 SLB 怎么配置 gRpc 的监听呀?
    0vv0
        56
    0vv0  
    OP
       Apr 12, 2021
    @duchengle001 #55 就直接使用 tcp 协议监听就可以。但是在负载到新增节点时可能会有点延时,可以测试下。
    feelapi
        57
    feelapi  
       Jan 10, 2022
    另外一条可以云原生,桌面两条腿走路的模式,必须 gRPC.
    daoqiongsi1101
        58
    daoqiongsi1101  
       Feb 18, 2022
    比如 A 服务通过 grpc 请求 B 服务,100 个并发请求,那么连接数是多少?
    chaleaochexist
        59
    chaleaochexist  
       Mar 24, 2023
    @itstudying #20 不想用 pb 请问如何实现 有例子吗 最简单的就可以...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3285 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 11:16 · PVG 19:16 · LAX 04:16 · JFK 07:16
    ♥ Do have faith in what you're doing.