Nginx为什么能实现高性能和高扩展

2022-07-28,,

一、Nginx的作者是谁?

Nginx(engine-x)是由1994年毕业于俄罗斯国立莫斯科鲍曼技术大学的IgorSysoev设计开发的。开发工作从2002年开始,第一次正式公开发布是在2004年10月4日,版本号为0.1.0。

二、web服务器会遇到哪些问题?

2.1、Apache服务器

缺点:    不支持高并发、扩容不方便、重量级。
2.2、Microsoft IIS

缺点: 付费
2.3、Tomcat服务器

缺点:、无法满足复杂业务场景的要求、重量级。
2.4、Lighttpd服务器

缺点:Proxy功能不完善、编码支持不完善。
2.5、Jetty 

缺点:重量级、不支持高并发。

三、负载均衡有哪些分类?

3.1、DNS负载均衡
3.2、二层负载均衡
3.3、三层负载均衡
3.4、四层负载均衡
3.5、七层负载均衡

Nginx属于7层负载均衡。

四、Nginx实现了哪些负载均衡算法?

4.1、静态负载均衡:轮询算法、基于比率的加权轮询算法、基于优先级的加权轮询算法、一致性hash、IP哈希
4.2、动态负载均衡:基于任务量的最少连接优先算法、基于性能的最快响应优先算法、预测算法及动态性能分配算法、随机负载算法

五、Nginx的核心概念有哪些?

模块化、正向代理、反向代理、分治思维模型、异步非阻塞、事件驱动模型、独立构件架构风格。

六、通过哪些方式实现高性能

6.1、多进程:主进程、工作进程、缓存索引重建进程、缓存索引管理进程

6.1.1、主进程的功能包括:

■ 读取Nginx配置文件并验证其有效性和正确性。

■ 建立、绑定和关闭Socket。

■ 按照配置生成、管理和结束工作进程。

■ 接收外界指令,比如重启、升级及退出服务器等指令。

■ 不中断服务,实现平滑重启,应用新配置。

■ 不中断服务,实现平滑升级,升级失败进行回滚处理。

■ 开启日志文件,获取文件描述符。

■ 编译和处理Perl脚本。

6.1.2、工作进程的功能包括:

■ 接收客户端请求。

■ 将请求依次送入各个功能模块进行过滤处理。

■ IO调用,获取响应数据。

■ 与后端服务器通信,接收后端服务器处理结果。

■ 数据缓存,访问缓存索引、查询和调用缓存数据。

■ 发送请求结果,响应客户端请求。

■ 接收主程序指令,比如重启、升级和退出等指令。

6.2、多线程
6.3、事件驱动模型(独立构件架构风格)
    6.3.1、select模型,关键词:读事件,写事件,异常事件。读描述符,写描述符,异常描述符。循环,三个列表。
    6.3.2、poll模型,关键词: 一个集合、同一个描述符监听读写异常事件。
    6.3.3、epoll模型,关键词:描述符列表,内核管理,高效。
    6.3.4、rtsig模型,关键词:实时信号处理、队列长度溢出。
    6.3.5、kqueue模型,关键词:poll变种,条件触发,边缘触发,Mac OS X。
    6.3.6、dev/poll,关键词:虚拟设备。
    6.3.7、eventport模型,关键词:防止内核奔溃。
6.4、缓存

七、如何实现高扩展

八、整体架构

 

本文地址:https://blog.csdn.net/lxf20054658/article/details/109634115

《Nginx为什么能实现高性能和高扩展.doc》

下载本文的Word格式文档,以方便收藏与打印。