Nginx 实战(一) 集群环境搭建

Nginx是什么?

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。一直纳闷这个X是怎么来的在网上查了查原来X表明很牛逼的样子,Nginx就是表明一个很是牛逼的引擎服务器系统,在不少年之前记得都是用的apache来做为分流以及负载均衡的做用,在过了几年中一个俄罗斯人又开发了一个性能更高的服务器来处理客户端向浏览器发出的各类请求,它从技术角度解决了大数量高并发的用户量访问,官网上面写的并发数量能够达到5万,实际项目应用中可能也打不到这么多,若是能够达到二、3万并发访问量,也是一个用户很是多的网站了。
下面咱们就结婚具体的例子以及特色原理啥的来应该这个技术到咱们项目中来。

Nginx与Apache服务器对比

 
1.轻量级,一样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 。nginx运行起来占用的资源CUP很是少,对于启动、重启都很是快速,在低配电脑上也能够快速的运行。
2.Nginx 配置简洁, Apache 复杂 
对于这一点使用过nginx的用户来讲就会深有体会,若是不是学习他的原理以及各类细节,几乎一会的时间就能够搭起来一个nginx集群服务器,搭建能够按着下面的步骤本身搭建。
3.最核心的区别在于apache是同步多进程模型,一个链接对应一个进程;nginx是异步的,多个链接(万级别)能够对应一个进程。
4.nginx的负载能力比apache高不少
若是你的网站有大量的高并发用户访问能够试着使用nginx来做为负载均行。

典型案例

中国大陆使用nginx网站用户有:新浪、网易、腾讯等。这么大的公司都在使用nginx做为网站的负载均衡能够说,它已是一个比较成熟的框架,值得咱们去学习和了解,经过学习和了解这个服务器也了解了一些多线程、阻塞、非阻塞的概念,多线程是一个很不错的提高性能的解决方案,但有时在多个线程之间切换以及建立关闭线程很消耗系统资源,接触的一些多线程模式能够解决多线程带来的并发访问问题,若是master/worker,fulture,生产者/消费者模式等等,在nginx里面就用到了一个多线程模式,master/worker模式,这个模式在nginx中起着重要的做用。
本身搭建集群架构:
从官网下载最新nginx-1.9.0.,下载地址为:http://nginx.org/en/download.html
1.下载完成,解压,到以下目录打开cmd,输入start nginx命令,便可启动nginx进程。
2.转到conf目录,以下
打开文件后,更改以下配置:
如上图所示,我配置了两台tomcat服务器,让nginx做为负载均衡代理的做用,通过测试配置好后既可使用,它会随机的分发到两台不一样的电脑上面去,配置很是简单,固然若是要深刻了解nginx仍是须要仔细分析分析它的运行流程的,简单的配置并不可以真正掌握它的做用,也不可以让它发挥更大的做用,例如还有一些静态资源的配置,访问等等,上面的jpj|png等都是对于静态资源的配置,它会将静态资源保存在本地的nginx服务器,减小服务器之间的带宽以及读写速度。

Nginx具备高性能缘由

想要理解高性能还须要从最近本概念提及,要不是很差理解它为何会性能高。一个线程一般具备五中状态,以及它们之间的转换关系以下,不可逆转。
1. 新生--->就绪: 经过调用start()方法
   
2. 就绪--->运行: 处于就绪状态的线程一旦获得CPU,就进入运行状态并自动调用本身的run()方法
   
3. 运行--->阻塞: 处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时停止本身运行,进入阻塞状态
   
4. 阻塞--->就绪: 睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,从新到就绪队列中等待CPU。当再次得到CPU时,便从原来停止位置开始继续运行。
   
5. 运行--->死亡: (1)(正常状况下)线程任务完成
               (2)(非正常情况)线程被强制性的停止,如经过执行stop()或destroy()方法来终止一个线程
线程
这里重点说一下阻塞状态,当web服务器如tomcat处理大量请求时,会频繁进行磁盘IO读写操做,CPU轮训时会使运行状态的请求进入“阻塞”状态,这就是阻塞产生的缘由,接下来讲一下非阻塞。

非阻塞

把整个过程切换成小的任务,经过任务间协做完成。 由一个专门的线程来处理全部的 IO 事件,并负责分发。 

事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 

线程通信:线程之间经过 wait,notify 等方式通信。保证每次上下文切换都是有意义的。减小无谓的进程切换。

Master/Worker并发工做模式

该模式来用来处理高并发的一种设计模式,多线程请求时,模式工做图以下
Master-Worker模式是经常使用的并行模式之一,它的核心思想是,系统有两个进程协做工做:Master进程,负责接收和分配任务;Worker进程,负责处理子任务。当Worker进程将子任务处理完成后,结果返回给Master进程,由Master进程作概括汇总,最后获得最终的结果。
同一时刻只有一个worker创建链接,用到了锁的概念来保证只有一个worker处理请求。采用多线程好处,若是一个worker挂掉,对于其余没有影响
下面是一个简单的master、worker多线程实现,
Worker:用于实际处理一个任务;
Master:任务的分配和最终结果的合成
Main:启动程序,调度开启Master
代码实现中……………………


总结:

Nginx服务器是一个高性能的服务器,能够用它来做为提升性能的系统,在上线的产品最好搭建在linux系统上面,会获得更好的性能。
相关文章
相关标签/搜索