百万并发下,LVS是如何抗住的?

高并发是大型架构核心,下面我详解LVS百万并发@mikechen

全内核态运行

全内核态运行,这是 LVS 能扛百万并发的根本前提。

百万并发下,LVS是如何抗住的?-mikechen

LVS 运行在 Linux 内核态,不解析 HTTP、HTTPS、Header、Body

只关注 IP + 端口 + 四层连接。

对比 Nginx、HAProxy 等七层/四层软件负载均衡。

它们都需要把数据包从内核拷贝到用户态进程,再处理后再拷贝回内核,这个过程会带来巨大的 CPU 和内存开销。

LVS 直接在内核的 IP 层 / TCP 层完成转发,几乎没有上下文切换和内存拷贝。

 

高效连接转发

LVS 转发的是 TCP 连接,不是 HTTP 请求,客户端与 RealServer 直接建立连接。

LVS 只在 建连阶段参与,后续数据包基本不走 LVS 计算逻辑。

百万并发下,LVS是如何抗住的?-mikechen

这意味着:

不维护复杂会话状态;

不做请求级调度;

不会因长连接、慢请求被拖死;

一句话总结:LVS 只负责“牵线”,不负责“聊天”。

 

LVS DR模式

LVS 提供DR转发模式,避开调度器带宽瓶颈,让后端服务器直接响应客户端:

百万并发下,LVS是如何抗住的?-mikechen

客户端 → [VIP]LVS → 改MAC → RealServer → 直回客户端
              ↓内核IPVS
           无带宽放大

DR 模式(Direct Routing)——百万并发标配

请求:Client → LVS → RealServer

响应:RealServer → Client(不再经过 LVS)

优势:

响应流量不走 LVS;

网络吞吐压力减半;

LVS 几乎不成为瓶颈,互联网高并发 90% 用 DR 模式。

 

高效算法

LVS 的调度算法,刻意做得 非常“原始”:

百万并发下,LVS是如何抗住的?-mikechen

  • rr / wrr;

  • lc / wlc;

  • sh(源地址 hash);

特点:

  • O(1) 时间复杂度;

  • 不依赖实时 CPU / RT;

  • 不做健康权重动态计算;

设计哲学很明确:宁可简单,也不要智能。

mikechen睿哥

10年+大厂架构经验,大厂面试官,就职于阿里、淘宝等一线大厂,操盘多个亿级数据量大厂核心项目。

评论交流
    说说你的看法