Nginx的优点

首先Nginx是一个http服务器,中间件,那么已经有了tomcat、weblogic等服务器为什么还需要nginx呢

Nginx 相对于 Apache 优点:
1) 高并发响应性能非常好,官方 Nginx 处理静态文件并发 5w/s
2) 反向代理性能非常强。(可用于负载均衡)

3) 内存和 cpu 占用率低。(为 Apache 的 1/5-1/10)
4) 对后端服务有健康检查功能。
5) 配置代码简洁且容易上手。

Nginx优点简单介绍:负载均衡

我们知道一般一台tomcat支持的并发量有限,500个线程效率都很低了,简单来说几百个人同时访问项目,就会很卡,甚至崩溃。

那么要解决这样的问题,最简单的我们可以使用tomcat集群,也就是一台机器承受几百,就多来几台服务器,那么这个时候,就会涉及到负载均衡问题

Nginx效率高的原因

IO多路复用

首先我们以IO读取磁盘或者网络的资源来理一下过程

  1. 发送请求通过java进程读取某个文件
  2. 进程告知内核去哪儿取某个文件,并产生该文件一个文件描述符FD(就看成一个数字来标识该文件),放入内核缓冲区
  3. 进程阻塞等待内核读取结束,并复制该文件到进程缓冲区
  4. 读取成功

分析上面简单的步骤我们会发现,当内核去网络或者磁盘读取文件的时候,进程需要在那儿等着,这可以理解为IO阻塞

而我们在前台请求数据,服务器返回数据,本身就是一个IO交互,如果单线程情况下,

请求一阻塞在第2、3步,另外的请求只能等待

第一个解决方案就是多线程,每一个请求一个线程,这样阻塞就不会影响服务器响应其他请求。

但是很明显频繁的线程创建太浪费资源,而且cpu切换线程执行也是会浪费很多系统资源的

好的方案应该是,一个线程得到IO请求就去处理,阻塞就抽出来去处理下一个IO请求,阻塞完毕继续回来处理。既减少了IO等待,也减少了频繁创建线程浪费的资源

轻量级

源代码只保留与http 及核心功能代码,出于性能考虑,不像httpd 有那么丰富的插件。

cpu亲和

CPU核心NGINX 工作进程绑定的方式,把每个worker进程固定在一个cpu

上执行,减少切换cpu的cache miss,获得更好的性能。

nginx反向代理

正向代理的概念

正向代理,也就是传说中的代理,他的工作原理就像一个跳板,

简单的说,

我是一个用户,我访问不了某网站,但是我能访问一个代理服务器

这个代理服务器呢,他能访问那个我不能访问的网站

于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容

代理服务器去取回来,然后返回给我

从网站的角度,只在代理服务器来取内容的时候有一次记录

有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站

结论就是 正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理的概念

继续举例:

例用户访问 http://ooxx.me/readme

但ooxx.me上并不存在readme页面

他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户

但用户并不知情

这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能

结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值