欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-07 15:09:30
一、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服务器......

一、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、缓存

七、如何实现高扩展?

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

八、整体架构

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

 

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

相关标签: 架构设计