Nginx学习笔记(一、前言)
目录:
- nginx历史背景
- nginx解决的问题
- 为什么使用nginx
nginx历史背景
参考:https://www.cnblogs.com/pizixu/articles/12358761.html
1、随着互联网的发展数据量日益增多,对于硬件的要求越来越高。
2、随着CPU开始向着多核发展,摩尔定律开始不再适用,原来的8核换成16核并不能提升一倍的性能。
那么这里的性能损耗都在哪了呢,通常来说是在操作系统和大量的软件没有做好服务与多核架构的准备,比如说Apache。
3、Apache是低效的,因为它的架构模型中,一个进程同一时间只会处理一个连接一个请求,只有在这个请求处理完以后才会处理下一个请求。
我们知道操作系统是被设计为同时服务于数百甚至上千个进程,但因Apache这样的设计模式,导致Apache面对几十万甚至上百万的连接的时候,它没有办法去开几百万的进程,而进程间切换的成本代价又太高了。此时Nginx应运而生,它可以处理上百万甚至上千万的并发连接。
综上:数据量大了后对硬件要求便高了,但因Apache(或其它服务器)的设计模式并没有考虑到多核的时代,所以导致硬件性能提高了但又没能让软件性能提高,针对这一情况Nginx应运而生。
nginx解决的问题
参考:https://www.idc889.com/idczx/wz/1786.html
1、Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器 、负载均衡器和HTTP缓存。
2、Nginx解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题。它的设计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制—事件驱动机制,是一种异步事件驱动结构。
综上:如Nginx出现的背景所说,它可以处理上百万甚至上千万的并发连接,而它的设计便是采用更加高级的机制—事件驱动机制,是一种异步事件驱动结构。
为什么使用nginx(为什么新项目都是要Nginx了,而不使用Apache?)
1、高并发(根本原因):对于Apache来说Nginx占用的资源更少,并发链接数更多,50000个(nginx基于多路复用epoll,其使用的模型更加优秀,能处理更多的并发,资源消费低)。
2、负载均衡:Http代理服务器、系统开销低、CPU使用率高
3、简单:安装简单,配置简洁;启动简单,BUG少,可以7*24小时的不间断服务