Nginx两种模式模型&五种算法

Nginx进程模型:

分为master-worker模式和单进程模式。在master-worker模式下,有一个master进程和至少一个的worker进程,单进程模式顾名思义只有一个进程。

master进程的主要职责:

主要用来管理worker进程,接收来自外界的信号,向各个worker进程发送信号,监控worker进程的运行状态当worker进程退出后(异常情况下),会自动情动新的worker进程
master进程充当了真个进程组合用户的交互接口,同时对进程进行监护,他不需要处理网络事件,不负责业务执行,只会通过worker进程来实现重启服务,平滑升级,更换日志文件,配置文件生效等功能

worker进程:

worker进程相互之间是互相平等的,且有相同的几率去处理某一项事务,他们是从master进程中fork出来的吗,在他们出来之前,master会给他们分配listen的sorket,这一特性决定了他们之间的平等性。
所有worker进程的listenfd会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有worker进程在注册listenfd读事件前抢accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接。当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。我们可以看到,一个请求,完全由worker进程来处理,而且只在一个worker进程中处理。
响应报文结构和请求报文结构差别不大,也是四部分组成:

Nginx的负载均衡的五种算法

1.轮询模式RR(默认默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.权重模式
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
3.IP_hash模式 (IP散列)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4.url_hash模式
5.fair模式
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

你可能感兴趣的:(Nginx两种模式模型&五种算法)