高并发下使用Nginx的四层架构(二)

Ngix的四层架构

早期,客户端浏览器直接访问tomcat服务器,由于大量的访问可能集中在查询商品模块上,由于查询模块占用了并发使得整个服务不可用,于是考虑将服务进行模块化拆分,中间通过一台服务器将客户的请求转发到服务模块上。
高并发下使用Nginx的四层架构(二)
请求转发服务器不同于lvs负载均衡,lvs不会跟客户端进行三次握手,而请求转发服务器会与客户端进行三次握手,连接建立后,再调用服务模块进行计算,获得返回的数据后转发给客户端。 这样用户的连接过来都与请求转发服务器进行连接,并发的压力在转发服务器上。

由于转发服务器需要与客户端握手,采用普通的tomcat只能同时有千级别的并发量,Nginx可以单台有5万的并发量。tomcat需要启动jvm处理请求,翻译字节码文件在应用级别上提供服务;而Nginx是通过c语言实现,直接调用内核让客户端和后端的服务模块建立io流,快速的进行数据的转发,提高了并发性能。

Apach 处理客户端请求是来一个请求fork一个一个线程处理,而Nginx是一个进程处理所有请求,少了进程间的切换的花销。

因此将请求转发服务器替换成Nginx服务器,并且配置Nginx服务器集群进行请求转发到相应的服务器,在他们前面放一个lvs将请求负载到Nginx服务器上,这样解决了用户因为并发太大连不上服务器的问题
高并发下使用Nginx的四层架构(二)
高并发下用户能连接上了服务器,这时候请求的压力又到了后面第四层的服务模块,我们可以通过服务模块集群再在前面加一层lvs进行负载均衡。但是因为Nginx的反向代理,不仅可以将请求分发到不同的模块上,还可以在模块间进行负载均衡。解决了用户连接上服务器后,快速获得计算返回结果的矛盾
高并发下使用Nginx的四层架构(二)
总结一下Nginx的作为webserver的两个功能:
1)识别用户过来的url进行转发
2)负载均衡