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

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

  •  
  •   idblife · 357 天前 · 1466 次点击
    这是一个创建于 357 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉总是会有差异啊
    8 条回复    2024-01-03 19:51:53 +08:00
    perfectlife
        1
    perfectlife  
       357 天前
    pod 本身一般不会导致响应时间差异太大,更多的是服务调用的第三方接口,中间件导致的,上个 apm 工具监控一下
    pkoukk
        2
    pkoukk  
       357 天前   ❤️ 1
    不是,问题不应该是为什么不一致么?
    vivisidea
        3
    vivisidea  
       357 天前
    差异的原因通常是所在宿主机的硬件配置不同,或者负载不同,如果对 rt 很敏感,可以划几个 node 隔离一下,专门部署这种 rt 敏感的 pod
    idblife
        4
    idblife  
    OP
       357 天前
    @pkoukk
    每次调用的参数不一样啊
    ixx
        5
    ixx  
       357 天前
    @idblife 参数不一样不就说明执行的业务逻辑不一样,这样的话哪怕是同一个 pod 也应该不一致,和 deployment 有啥关系,只有 3 楼老哥说的那种,不同节点的硬件或者网络差异不然不会有区别的
    whileFalse
        6
    whileFalse  
       357 天前 via Android   ❤️ 3
    lz 这个需求是哪里来的?怎么感觉 lz 都没好好过过脑子呢
    bwangel
        7
    bwangel  
       357 天前   ❤️ 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
       357 天前 via iPhone
    @whileFalse
    没有建议的话可以闭嘴
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.