内容简介:在网上搜索负载均衡的时候,总会跳出nginx这个字眼,对于我这样只关注开发功能却从未关心过架构的人来说,还是比较陌生的,印象中用了nginx好像可以扛更多的访问量。过完年后开发工作告一段落,正好有时间,就决定从一个初学者的角度来描述一下,为什么要用nginx。经查阅各种资料,nginx的主要功能和使用方式包括
为什么要用nginx?
在网上搜索负载均衡的时候,总会跳出nginx这个字眼,对于我这样只关注开发功能却从未关心过架构的人来说,还是比较陌生的,印象中用了nginx好像可以扛更多的访问量。
过完年后开发工作告一段落,正好有时间,就决定从一个初学者的角度来描述一下,为什么要用nginx。
经查阅各种资料,nginx的主要功能和使用方式包括
- nginx反向代理
- nginx负载均衡
- nginx配置https
- nginx静态资源服务器
- 整合keepalive、lvs等
以上5点主要作为后续实践内容的大纲。
nginx反向代理
这个名称和概念有点让人懵逼,从数据的流向方面来说一下我的理解。
nginx反向代理.jpg
通过时序图可以看出,相当于nginx就是个方案公司的FAE,你的所有需求和沟通交流,都和对方公司的FAE对接,并不需要知道对方公司的工程师如何开发能不能实现你的需求,一旦有结果之后,也是FAE告诉你,并且给你部署实施或者烧录,这就是反向代理。
那什么是正向代理呢,就是你作为公司内部的工程师,需要第三方公司的配合才能搞定任务,其他公司都是工程师直接对接三方公司,但你们公司为了节省工程师的时间,减少扯皮带来的精力消耗,所以专门给你配备了个FAE,你告诉FAE我需要第三方公司给我搞定芯片我才能开发,FAE去三方公司沟通,然后你只用忙其他事情,最后FAE搞定了这坨事,把芯片交给你,这就是正向代理。
所以我个人理解的是,正向还是反向代理,关键看nginx这个FAE为谁代言,为服务器代言就是反向代理,为客户端代言就是正向代理。
正向代理的用途,由于没有实践,目前实在想不到使用场景,这里暂且不提。
反向代理的用途就比较直接了,如果单从这个代理功能来说,脑子进水了,本来直接就能和服务器通信,为什么要多一个东西不嫌麻烦吗?这就牵涉到nginx的其他特性了。
nginx负载均衡
nginx有一些负载均衡算法,细节部分等后面实际操作时再谈,要想实现负载均衡,就必须要用到前面的 反向代理 特性了,看图:
典型负载均衡
所有的请求先到nginx,然后nginx根据算法分发请求到某个服务器,服务器再通过nginx返回数据给客户端。
当然选择nginx还有一些其他性能方面的优势,比如并发能力比apache还强等其他因素。
nginx配置https
这个是为后续的实践提供大纲,现在服务器是 java 编写的,用的是springMVC、spring、mybatis开发,因为我们的硬件客户端设备能用很长时间,长时间积累下来,并发不算太小,而本人的java并发经验几乎都停留在理论阶段实践为零,既然都是重新尝试为什么不学一下新技术呢,所以出于个人意愿,后期打算换成golang,听说golang的https好像比较难搞,并且做集群的时候每个业务服务器都搞一下https好像不现实,所以提前把这个功能实践了。
nginx静态资源服务器
这个动静分离功能是必须要做的,这样也可以显著提升性能,如果一些图片和js脚本都放在web容器里,比如tomcat里,就损耗了一部分tomcat的性能。
整合keepalive、lvs等
为什么要整合这些呢,有这样一种场景:nginx部署在A云服务器,然后后面集群了B、C、D三台云服务器上,然后A云服务器突然挂了,这时候就算B、C、D没挂,整个系统也不能用了,所以会有一些高可用方案。
这个keepalive和lvs目前只停留在理论阶段,是否能够整合以及怎么整合,或者是否有其他更流行的方案,这里只是列出大纲,以后实践的时候再查阅资料并进行详细描述。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ajax Design Patterns
Michael Mahemoff / O'Reilly Media / 2006-06-29 / USD 44.99
Ajax, or Asynchronous JavaScript and XML, exploded onto the scene in the spring of 2005 and remains the hottest story among web developers. With its rich combination of technologies, Ajax provides a s......一起来看看 《Ajax Design Patterns》 这本书的介绍吧!
SHA 加密
SHA 加密工具
HEX CMYK 转换工具
HEX CMYK 互转工具