深入理解Nginx:模块开发与架构解析 读书笔记
2017-11-01 10:56
477 查看
Nginx的作用
当我们在设计高性能web服务器的时候,我们第一选择是使用Nginx,因为nginx对服务器性能上的挖掘已经到了非常高的水平,Nginx采用了无阻塞分阶段的事件驱动框架。当nginx不能那个完全实现我们的业务需求的时候,我们可以在Nginx后端搭建一个非nginx服务器,利用前段的Nginx服务器来做负载均衡,但是这时候我们又会遇到,在设计后端服务器的非阻塞时间架构的问题。(解决nginx已经解决过的无阻塞问题)。所以唯有开发一个实现了所需功能的自定义Nginx模块嵌入到nginx代码中,才能充分挖掘服务器的硬件资源。
Nginx的适用场景
Nginx是一个优秀的事件驱动框架,虽然他在HTTP上的处理非常出色,但是nginx适用开发在传输层以TCP对外提供服务的服务器程序。主要优势如下:
1.将网络(相关socket),磁盘(输入输出)以及定时器(优先队列)等异步事件做了非常好的封装,基于他的开发可以忽略事件处理的细节。其实这里就是利用IO复用和non-block编程封装了底层细节。
2.Nginx封装了许多平台无关的接口,容器,适用于跨平台开发(由于Nginx是C语言开发的,其中已经实现了相当多的动态数组,hash表,链表等),估计接口上也做了封装,根据实际的场景选用不同的系统调用接口。
3.优秀的模块化设计,轻易地复用现有模块,其中包括了基本的读取配置,日志模块,也包括处理HTTP以及mail的高级模块。
4.Nginx本身就是作为服务器来设计器框架的,因此在服务进程的管理上相当出色,轻松实现程序的动态升级,子进程的监控,管理,配置项的动态加载。
5.Nginx对各项系统系统调用接口,以及一些实现做了大量优化尤其是针对linux操作系统。(针对linux使用了epoll来处理大并发,利用sendfile系统调用来将裁判的数据发送到网络上,不需要把硬盘数据先复制到用户态内存再发送)
如果我们想以低负载来处理高并发的请求并且处理基于TCP的服务器程序时推荐使用Nginx,通过开发一种新的模块类型,实现一种新的功能框架,提供非常好的扩展性。
Nginx的优势
1.单个请求响应更快,峰值响应更快。
2.高扩展性,Nginx由不同功能不同层次不同类型切耦合度低的模块构成。
3.高可靠性,来自于其核心框架代码的优秀设计,模块设计的简单性。每个worker进程相对独立,master进程在woker进程出错时可以快速拉起新的worker子进程。
4.低内存消耗,10000个非活跃的HTTP Keep-Alive连接在Nginx只消耗2.5M的内存。
5.单机支持10万以上的并发请求,理论上Nginx支持的并发连接数上限取决于内存。
6.热部署,master进程与woker工作进程的分离设计,是的具有热部署的功能。
当我们在设计高性能web服务器的时候,我们第一选择是使用Nginx,因为nginx对服务器性能上的挖掘已经到了非常高的水平,Nginx采用了无阻塞分阶段的事件驱动框架。当nginx不能那个完全实现我们的业务需求的时候,我们可以在Nginx后端搭建一个非nginx服务器,利用前段的Nginx服务器来做负载均衡,但是这时候我们又会遇到,在设计后端服务器的非阻塞时间架构的问题。(解决nginx已经解决过的无阻塞问题)。所以唯有开发一个实现了所需功能的自定义Nginx模块嵌入到nginx代码中,才能充分挖掘服务器的硬件资源。
Nginx的适用场景
Nginx是一个优秀的事件驱动框架,虽然他在HTTP上的处理非常出色,但是nginx适用开发在传输层以TCP对外提供服务的服务器程序。主要优势如下:
1.将网络(相关socket),磁盘(输入输出)以及定时器(优先队列)等异步事件做了非常好的封装,基于他的开发可以忽略事件处理的细节。其实这里就是利用IO复用和non-block编程封装了底层细节。
2.Nginx封装了许多平台无关的接口,容器,适用于跨平台开发(由于Nginx是C语言开发的,其中已经实现了相当多的动态数组,hash表,链表等),估计接口上也做了封装,根据实际的场景选用不同的系统调用接口。
3.优秀的模块化设计,轻易地复用现有模块,其中包括了基本的读取配置,日志模块,也包括处理HTTP以及mail的高级模块。
4.Nginx本身就是作为服务器来设计器框架的,因此在服务进程的管理上相当出色,轻松实现程序的动态升级,子进程的监控,管理,配置项的动态加载。
5.Nginx对各项系统系统调用接口,以及一些实现做了大量优化尤其是针对linux操作系统。(针对linux使用了epoll来处理大并发,利用sendfile系统调用来将裁判的数据发送到网络上,不需要把硬盘数据先复制到用户态内存再发送)
如果我们想以低负载来处理高并发的请求并且处理基于TCP的服务器程序时推荐使用Nginx,通过开发一种新的模块类型,实现一种新的功能框架,提供非常好的扩展性。
Nginx的优势
1.单个请求响应更快,峰值响应更快。
2.高扩展性,Nginx由不同功能不同层次不同类型切耦合度低的模块构成。
3.高可靠性,来自于其核心框架代码的优秀设计,模块设计的简单性。每个worker进程相对独立,master进程在woker进程出错时可以快速拉起新的worker子进程。
4.低内存消耗,10000个非活跃的HTTP Keep-Alive连接在Nginx只消耗2.5M的内存。
5.单机支持10万以上的并发请求,理论上Nginx支持的并发连接数上限取决于内存。
6.热部署,master进程与woker工作进程的分离设计,是的具有热部署的功能。
相关文章推荐
- 深入理解Nginx 模块开发与架构解析-陶辉 读书笔记
- 深入理解Nginx:模块开发与架构解析
- 《深入理解Nginx-模块开发与架构解析》
- 《深入理解Nginx 模块开发与架构解析》笔记之epoll事件模块
- 【读书笔记】深入理解Nginx模块开发与架构解析(二)
- 【读书笔记】深入理解Nginx模块开发与架构解析(一)
- 深入理解Nginx模块开发与架构解析 第1章 研究Nginx前的准备工作
- 深入理解nginx chap3 开发一个简单的HTTP模块
- Nginx模块开发---Nginx开发从入门到精通 读书笔记(二)---Nginx基础概念
- 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理
- C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)
- Nginx模块开发---Nginx开发从入门到精通 读书笔记(三)---Nginx基本数据结构之 ngx_pool_t
- 推荐我的新书《深入理解Nginx:模块开发与架构解析》
- [读书笔记]深入解析MapReduce架构设计与实现原理——CH4 Hadoop RPC基本框架
- 《深入理解Nginx:模块开发与架构解析》笔记
- 《深入理解Nginx 模块开发与架构解析》笔记之定时器
- 深入理解python 命令行解析模块optparse(optparse源代码解读)
- Nginx架构详解---Nginx开发从入门到精通 读书笔记(一)
- Nginx模块开发-理解HTTP配置
- 【读书笔记】【深入理解ES6】#13-用模块封装代码