Nginx算法最全详解(4大主流算法)

createh52周前 (06-05)技术教程7

关注mikechen十余年BAT架构经验倾囊相授!

大家好,我是mikechen睿哥。


Nginx是大型架构的必备中间件,也是大厂经常考察的内容,下面我就全面来详解Nginx负载均衡算法@mikechen

Nginx负载均衡

Nginx作为一款高性能的Web服务器、和反向代理服务器,其负载均衡功能通过将客户端请求分发到多台后端服务器,

如下图所示:

当某个后端服务器发生故障时,Nginx 可以将请求转发到其他健康的服务器,保证服务的连续性。

以及, 通过将请求分发到多台服务器上,可以显著提高系统的并发处理能力和吞吐量,应对高并发场景。

而且,可以根据后端服务器的性能差异或当前负载情况,合理地分配请求,提高服务器资源的利用率。


Nginx负载均衡算法

Nginx 的负载均衡算法,会将客户端发送的请求分摊到多个后端服务器(upstream servers)上进行处理,而不是让单个服务器承担所有请求。

upstream 模块中配置 server 指令时,可以指定不同的负载均衡算法。

以下是常用的四种:

1.轮循(默认)

Nginx 默认采用轮询算法,按顺序将请求依次分发给各个后端服务器,每台服务器处理的请求数量大致相同。

比如:

请求1→Server A  请求2→Server B  请求3→Server C  请求4→Server A  ……循环继续

优点:

  • 实现简单;
  • 默认启用,易于上手;

缺点:

  • 不考虑服务器当前负载;
  • 适用范围受限(对处理速度差异大的节点不友好);


加权模式

加权轮询算法在轮循的基础上,为每个后端服务器设置一个权重值(通过 weight 参数指定)。

权重越高的服务器,在单位时间内接收到的请求数量越多,Nginx 会根据配置的权重比例来分配请求。

upstream backend {    server backend1.example.com weight=2;    server backend2.example.com weight=1;    server backend3.example.com weight=3;} server {    listen 80;    server_name example.com;     location /{        proxy_pass http://backend;}}

在这个例子中,backend1 接收到请求的概率是 backend2 的两倍,backend3 接收到请求的概率是 backend2 的三倍。

优点:

  • 考虑服务器性能差异;
  • 可手动调节负载分配策略;

缺点:

  • 权重静态配置,不支持自动调整;
  • 实时性能变化无法感知;


ip_hash模式

源地址哈希算法通过对客户端的 IP 地址进行哈希运算,然后将哈希结果与后端服务器的数量取模,得到一个分配给该客户端的固定后端服务器。

这意味着来自同一个 IP 地址的客户端的请求,在后端服务器数量不变的情况下,总是会被分配到同一台服务器。

优点:

  • 实现会话粘性(Session粘性);
  • 简单高效;

缺点:

  • 某个IP请求集中可能导致单点压力;
  • 后端变动(增删节点)会大范围影响哈希分布;


最少连接

最少连接数算法会将新的请求分配给当前活跃连接数最少的后端服务器。

Nginx 会实时跟踪每个后端服务器的活动连接数,选择连接数最小的服务器来处理新的请求。

优点:

  • 动态感知后端压力;
  • 高效利用后端资源;

缺点:

  • 依赖连接数统计,复杂度略高;
  • 对于短连接请求差异不大;

在实际应用中,选择哪种负载均衡算法需要根据具体的业务需求、后端服务器的性能特点以及对会话保持、负载均衡效果等方面的考虑进行权衡。

通常情况下,加权轮询和最少连接数是更常用的选择,能够更好地适应各种复杂的应用场景。

以上

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

相关文章

掌握Nginx的高级用法,构建高性能Web应用

Nginx是一款高性能的Web服务器和反向代理服务器,它广泛用于构建高性能、可靠和安全的Web应用程序。除了基本的用法外,Nginx还提供了一些高级功能和配置选项,可以进一步优化性能、处理动态请求、增...

Nginx高并发架构详解:深入理解Nginx事件驱动模型!

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen睿哥。Nginx是大型架构的必备中间件,下面我就重点来详解Nginx能够支撑高并发背后的核心技术@mikechen为...

Nginx如何实现高并发?原理深度解析!

Nginx是高并发架构的必备中间件,也是大厂必备技能,下面我就重点详解Nginx高并发架构关键技术@mikechen本文作者:陈睿|mikechen文章来源:mikechen.ccNginxNginx...

浅谈Nginx负载均衡器

场景:1、什么是负载均衡器2、负载均衡器有哪些类型3、负载均衡器策略有哪些一、负载均衡器1、负载均衡器的工作原理原理:分发请求引入负载均衡解决的问题:a、高可用性b、使每一台设备的压力平均分配c、支持...

从 0 到 1:使用 Nginx + Lua 打造高性能 Web 网关

在大规模分布式架构中,Web 网关扮演着重要角色,负责请求转发、负载均衡、限流、认证等功能。而 Nginx + Lua 结合可以提供:o 高性能:Nginx 是目前最流行的高性能 Web 服务器o 动...

构建高性能Web服务器:Nginx的基本用法和配置技巧揭秘

Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和缓存服务器。在本讲解中,我将详细介绍Nginx的基本用法以及如何配置它作为静态资源服务器、反向代理服务器、负载均衡器...