nginx原理总结

nginx后端节点健康检查

主要有三种实现方式:
1. 本身自带的ngx_http_proxy_module模块和ngx_http_upstream_module模块,惰性检测。ngx_http_proxy_module:proxy_connect_timeout(与后端服务器建立连接的超时时间)、proxy_read_timeout(从后端服务器读取响应的超时)和proxy_next_upstream(何种情况下一个失败的请求应该被发送到下一台后端服务器)
ngx_http_upstream_module:max_fails(尝试失败次数)、fail_timeout(多长时间内失败,并且在这个时间内不再请求)。
2. nginx_upstream_check_module模块(淘宝开发的模块),主动检测可以间隔检测后台服务器的健康状态,并对服务器的状态进行标记。还提供了路径可以实时查看各服务器的健康状态。
3. 直接使用淘宝开源的Tengine,自带了主动检测健康状态的模块,主动检测。

nginx的事件驱动模型
  1. nginx的时间驱动模型的基础是epoll模型,epoll总共监测4中事件:
    • 处理新连接事件
    • 处理定时事件
    • 处理普通读写事件
    • 处理从磁盘读事件
  2. nginx的进程模型一般由一个主进程master和多个工作进程worker组成。
    • master主进程充当整个工作进程组与用户的交互接口,同时对工作进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。
    • worker进程的主要任务是完成具体的任务逻辑。其主要关注点是与客户端或后端真实服务器(此时nginx作为中间代理)之间的数据可读/可写等I/O交互事件,所以工作进程的阻塞点是在像select()、epoll_wait()等这样的I/O多路复用函数调用处,以等待发生数据可读/写事件。
    • 因为多个工作进程都会监听同一个端口,为了保证同一时间点只有一个进程监听,nginx是通过对进程加锁来实现。
  3. 基本流程:
    • 声明了一个epoll类型的事件。
    • 调用epoll的epoll_ctl函数将连接加入到epoll当中。
    • 调用epoll的wait函数,获取epoll的event,然后根据epoll的事件类型来对应连接中的read与write事件,并将其加入到对应的事件队列中,待会再调用其的处理函数来处理。
nginx限流

Nginx可以使用限流模块在接入层实现令桶牌算法限流。
1. limit_zone 定义每个IP的session空间大小。
2. limit_zeq_zone定义每个IP每秒允许发起的请求数。
3. limit_conn 定义每个IP能够发起的并发连接数。
4. limit_req 等待处理的请求队列数量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值