一、Nginx介绍
1.nginx是一个高性能HTTP服务器,反向代理服务器,邮件代理服务器,TCP/UDP反向代理服务器.
2.nginx处理请求是异步非阻塞的,在高并发下nginx 能保持低资源低消耗高性能,主要用在集群系统中用于支持负载均衡.
3.nginx对静态文件的处理速度也相当快,也可以用于前端站点的服务器.
相关视频讲解:
二、为什么要使用Nginx?
单个系统主要用于处理客户端请求,一个系统处理客户端的请求量是有限的,当客户端的并发量超过了系统的处理能力的时候,就会导致服务器性能降低,速度变慢,直接影响用户体验,所以为了提升性能,我们会创建多个服务实例,形成集群系统用于保证高可用
那么什么样的系统业务适合使用集群系统呢?我觉得主要从2个方面来看,第一请求人数多,导致次数多,第二请求量密集,例如我们近两年常用的防疫健康码查询,我们排除与其他的业务系统接入的因素,可以说他的99%针对用户的业务其实就是查询,而且并发量和请求数也是非常庞大的,所以就很适合使用集群系统。
三、查询分流Nginx原理
1.模块化设计
高度模块化的设计是 Nginx的架构基础。在Nginx中,除了少量的核心代码,其他一切皆为模块,所有模块间是分层次、分类别的,Nginx 官方共有五大类型的模块:核心模块、配置模块、事件模块、HTTP模块、mail模块,5种模块中,配置模块和核心模块是与 Nginx 框架密切相关的。而事件模块则是 HTTP 模块和 mail 模块的基础。HTTP 模块和 mail 模块的“地位”类似,它们都是更关注于应用层面并且引用基础核心模块。
2.多进程模型
与Memcached的经典多线程模型相比,Nginx是经典的多进程模型,Nginx启动后在后台运行,后台进程包含一个master进程和多个worker进程,可以在配置中设置工作进程数,一般根据服务器的Cpu核心数,来决定工作进程数是多少,例如我的电脑核心数是12,那可以在配置文件中设置worker_processes为12,那么在进程中可以看到 一个13个nginx运行实例。