Nginx为什么能实现高性能和高扩展
一、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
上一篇: go语言net包rpc远程调用的使用示例
下一篇: Go语言实现遗传算法的实例代码