你们是如何做到同一 deployment 不同 pod 的响应时间基本一致的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
idblife
7.51D
V2EX    Kubernetes

你们是如何做到同一 deployment 不同 pod 的响应时间基本一致的?

  •  
  •   idblife 2024-01-03 10:39:37 +08:00 1886 次点击
    这是一个创建于 712 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉总是会有差异啊
    8 条回复    2024-01-03 19:51:53 +08:00
    perfectlife
        1
    perfectlife  
       2024-01-03 10:47:11 +08:00
    pod 本身一般不会导致响应时间差异太大,更多的是服务调用的第三方接口,中间件导致的,上个 apm 工具监控一下
    pkoukk
        2
    pkoukk  
       2024-01-03 10:49:57 +08:00   1
    不是,问题不应该是为什么不一致么?
    vivisidea
        3
    vivisidea  
       2024-01-03 11:05:59 +08:00
    差异的原因通常是所在宿主机的硬件配置不同,或者负载不同,如果对 rt 很敏感,可以划几个 node 隔离一下,专门部署这种 rt 敏感的 pod
    idblife
        4
    idblife  
    OP
       2024-01-03 11:06:48 +08:00
    @pkoukk
    每次调用的参数不一样啊
    ixx
        5
    ixx  
       2024-01-03 11:11:09 +08:00
    @idblife 参数不一样不就说明执行的业务逻辑不一样,这样的话哪怕是同一个 pod 也应该不一致,和 deployment 有啥关系,只有 3 楼老哥说的那种,不同节点的硬件或者网络差异不然不会有区别的
    whileFalse
        6
    whileFalse  
       2024-01-03 11:56:01 +08:00 via Android   3
    lz 这个需求是哪里来的?怎么感觉 lz 都没好好过过脑子呢
    bwangel
        7
    bwangel  
       2024-01-03 17:27:48 +08:00   1
    https://linkerd.io/2.14/features/load-balancing/

    不同 pod 之间响应时间不同才是正常的情况吧。

    linkerd 专门有个负载均衡算法叫做 EWMA, 根据 pod 的响应时间,提供不同的流量值。响应时间越快的 pod, 收到的请求也越多。我们实测过,这样整体 p99 会更好。

    https://github.com/mosn/mosn/pull/2274

    曾有人想把这个负载均衡算法在 envoy 中也实现一遍,可惜最后没 merge

    有个类似情况是 tcp 连接在多个线程之间如何分配

    https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

    envoy 的博客中提到了,多个线程监听了一个端口之后,连接具体分配到哪个线程完全是内核决定的。内核的策略也不是平均分配的,而是尽量塞满一个线程,再往下一个线程分配。

    As discussed briefly above, all worker threads listen on all listeners without any sharding. Thus, the kernel is used to intelligently dispatch accepted sockets to worker threads. Modern kernels in general are very good at this; they employ features such as IO priority boosting to attempt to fill up a thread’s work before starting to employ other threads that are also listening on the same socket, as well as not using a single spin-lock for processing each accept.

    因为请求发送到同一个线程上,能最大程度地利用内存缓存和 cpu 缓存,这样从整体来看,性能是更好的。
    idblife
        8
    idblife  
    OP
       2024-01-03 19:51:53 +08:00 via iPhone
    @whileFalse
    没有建议的话可以闭嘴
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3146 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 11:26 PVG 19:26 LAX 03:26 JFK 06:26
    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