Java Web架构设计Java服务器端编程

Nginx的一些总结

2017-12-22  本文已影响66人  陈_志鹏

Nginx的一些总结

Nginx能干些什么事

对目前的来说Nginx还是比较主流的HTTP方向代理服务器,最主要的核心功能就是能反向代理(这里就包括了负载均衡)、对资源动/静的分离、缓存等。

如何理解反向代理和负载均衡?

有两种场景,一种是传统的单节点服务场景,另外一种是反向代理的场景。
我们把它们进行对比。

从图中可以看出如果达到上限,整个服务就会响应的时间变慢,以及会出现瘫痪的情况,
这样无法对客户端提供服务。


传统的单节点场景

使用反向代理的服务器就非常有效的解决了负载的问题,通过Nginx的反向代理让整个应用集群去对外提供服务,这样不管从负载来看,或者单点故障来看,都能够有效的解决问题。

执行的流程:客户端 => 向代理服务器寻找服务 => 会默认轮循请求应用服务器 => 结果返回给客户端

反向代理解决负载的问题

什么是动静分离?

静态资源:
在应用服务器上,比如Tomcat这类级别的服务器连接的资源的是非常宝贵的,想要充分的利用资源比如一些静态的文件,我们可以转移到Nginx的身上。

动态资源:
客户端指定要的文件,每次请求可能要的文件都不一样,这样的资源就是动态的。

动静分离

Nginx的性能

可能最担心的就是Nginx的性能问题,
所有的首次请求的压力都压在Nginx的身上,这样会不会有问题呢?
以下是Nginx的一些特点:

高性能的效率是如何达到的?

用C语言开发的占用资源相对来说就很少,因为更加的接近计算机的底层,其次单进程是重点
Nginx的本身处理的的东西就很简单,可以理解为就是简单的转发请求到别的服务器上,因为各种计算的逻辑是应用服务进行处理的,和Nginx本身就没有关系。所以Nginx非常的轻量,一个单节点Nginx就可以承受非常高的QPS值。

因为是单进程,处理简单的逻辑,所以效率变得极高!

单进程与多进程(题外话)

为什么有时候单进程的执行效率会比都进程的要高?
其实和我们现实生活中一样,处理简单的事情就用简单的方案,杀鸡不用牛刀。
Nginx一样的道理,处理的逻辑也很简单采用单进程的方式做合适自己本身的事情。

开启多个进程还需要分配任务进行调度,所以还不如单进程的好使。

再举个典型的例子,做1+1的算术题,我们总不可能丢到集群中做计算吧?(哈哈...)

上一篇下一篇

猜你喜欢

热点阅读