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

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

  •  2
     
  •   itstudying · 40 天前 · 8533 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    lcafLd.jpg

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

    你说的 jb 生态几乎已经占据了业界主流了你还不知道吗?
    xxiu
        30
    xxiu   40 天前
    grpc 是 http2 多路复用,连接数相当于以前的一对多变成一对一。
    whypool
        31
    whypool   40 天前
    然后内存 boom 了?
    chennqqi
        32
    chennqqi   40 天前
    http keepalive 也能复用啊
    SkyYu822
        33
    SkyYu822   40 天前
    @zunceng cncf 半壁江山 = 业界主流 ?
    zunceng
        34
    zunceng   40 天前
    @SkyYu822 说句不客气的话 在科技行业难道不是吗
    SkyYu822
        35
    SkyYu822   40 天前
    @zunceng 我持保留意见 这块争论过大
    wysnylc
        36
    wysnylc   40 天前
    都在从 rpc 升级到 http,你这往回走,是智者还是愚昧?待后来人评价
    反正 spring cloud 是主推 http,rpc 只是可选和备选
    fuxiaohei
        37
    fuxiaohei   40 天前
    以前是 http 1 吗?直接升级到 http2 也许就有效果了
    realpg
        38
    realpg   40 天前
    直接把接口服务器变成 h2 不也这效果
    tabris17
        39
    tabris17   40 天前
    @fox1955 协议是可以替换的。开发调式时用 json-rpc,生产环境用 grpc,不就结了
    ebingtel
        40
    ebingtel   40 天前
    @itstudying 哦 是我的提问提错了……在使用 nginx 做长连接的负载均衡,好像有点问题 不知道你们有没有这种长连接的场景
    leoaqr
        41
    leoaqr   40 天前 via iPhone
    只看了连接数,cpu 使用量有变化么?
    guokeke
        42
    guokeke   40 天前
    和 grpc 对标的不是 rest 和 graphql 吗? 如果 http 改 grpc ?指的是 http 1.1 升 2 ? 那其实 nginx 改个参数就行了。
    dbskcnc
        43
    dbskcnc   40 天前
    grpc 语法方面确实方便
    luozic
        44
    luozic   40 天前 via iPhone
    现在更合适的通用连接方式 rsocket 基本会成为后续更主流的方式,协议层和传输层解耦合,协议和应用捆死的模型最大规模的应用不是 servlet 么,吹了那么多,servlet 啥时候换 http2 协议性能提升了不少了?
    hyperbin
        45
    hyperbin   40 天前 via Android
    换 http2 不就行了?
    DanielYao
        46
    DanielYao   40 天前
    我司.net ,java,node ,go 上 grpc 两年了,美滋滋,谁用谁知道
    luozic
        47
    luozic   40 天前
    cncf 用 grpc 的原因还用说么,k8s 等基础设施是抄谁的? 并且当时没有造足够多的 rpc,大家也不知道如何设计一个通用性能高而且和传输协议解耦合的传输层 rpc,gprc 好歹是当时的唯二中的一个半自动化 rpc,比 facebook 的 thrift 友好一点,
    janxin
        48
    janxin   40 天前
    @KuroNekoFan uber 用的 thrift
    KuroNekoFan
        49
    KuroNekoFan   40 天前 via iPhone
    @janxin 可能我描述的不够仔细,不过我主要是提这么一个事情,而不是想表达“据我所知 uber 从 xxx 转向 http”
    ospider
        51
    ospider   40 天前
    开始在公司用的 gRPC,可惜其他人理解不了,觉得还要编译好麻烦啊,竟然又换回了 http。我也是醉了
    wangyzj
        52
    wangyzj   40 天前
    @wtof 我也查到这个了。。。多谢
    sophos
        53
    sophos   40 天前
    @janxin uber 很多 grpc 相关的开源项目
    codewarrior
        54
    codewarrior   39 天前 via Android
    换成 grpc 之后 authentication 怎么做的? passive authentication,ssl 之类的有类似的功能支持吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3249 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    ♥ Do have faith in what you're doing.