一文搞懂nginx的反向代理 负载均衡

网上的资料都各显神通很乱,我在网上看过很多资料后,且断续经历过很长时间,终于搞懂了。这篇文章很简短。

理论知识

nginx apache 都是 web 服务服务器软件。

nginx为什么性能那么高,为什么比apache好?

主要因为nginx的请求处理模式是异步非阻塞,apache是同步阻塞。

什么是同步阻塞?

一个http请求的过程,简单来说是这样:用户点击一个页面,会先连接到 web 服务器,apache再连接我们的web应用(比如php python),web应用会连接数据库以及处理些业务,这就需要一些时间处理,再最终返回给用户。

这个过程,如果web应用花了3秒,同步阻塞模式(apache)会等待3秒,等待3秒之后拿到结果,再返回给用户。然后再处理下一个用户请求。

什么是异步非阻塞?

上面的http请求过程,如果web应用花了3秒,异步非阻塞模式(nginx)不等待,马上去处理下一个用户请求。3秒后web应用处理完会有事件主动通知说我处理完了,然后再返回给用户。

什么是正向代理?
如图,用户的电脑上不了某网站,所以通过能上这网站的代理服务器,去上了这个网站。中间这代理服务器,代表用户,去上某网站,这叫正向代理。用户和代理服务器是一伙的。
在这里插入图片描述

什么是反向代理?
代理服务器,代表了这个网站,挡在前面。代理服务器和应用服务器是一伙的。用户上某网站时,会先自动到达代理服务器,然后代理服务器再分配请求给具体网站服务器。这叫反向代理。
在这里插入图片描述

什么是负载均衡?
现在再来理解负载均衡,就很容易明白了。负载均衡就是通过反向代理来实现的,用户请求某网站时,代理服务器按照一定规则轮流请求多台应用服务器中的一台(这个网站弄了三台服务器)。这就达到了提升网站并发能力的效果。
在这里插入图片描述

负载均衡策略:

(1) 轮询
轮流把用户请求的流量分配给每一台应用服务器。缺点是不能保存会话,比如用户存在session里的登录信息。

(2) 权重 weight
按机器的不同能力,分配不同的权重。比如一台服务器配置好,一台配置差,前者权重就可以配置高一些。

(3) ip_hash
按ip去计算hash,然后每个ip对应分配给固定的应用服务器。缺点是,用户拿着手机在公交车上上网时,网络时好时坏,切换网络,就不会分配到原来的那一台。

一般在企业中,我们会使用最简单的轮询,这轮询没什么不好的,简单方便。会话信息不一致问题,有很多解决办法,比如单独的验证服务器,或者无状态的JSON Web Token (JWT)方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值