• 一文搞懂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)方式。

  • 相关阅读:
    Monaco Editor教程(十二):使用Marker来增加分词注释,标记,优化编辑器交互体验
    匈牙利算法 求二分图最大匹配
    ZooKeeper之分布式环境搭建--仲裁模式与伪分布式环境搭建
    【Python】特殊方法、属性和运算符重载(22)
    springboot之异步任务、邮件任务、定时任务
    这可能是你进腾讯最后的机会了..
    Fair原理篇Fair逻辑动态化架构设计与实现
    java计算机毕业设计基于安卓Android的在线心理咨询与健康App
    ISP算法——UVNR
    react +antd-mobile图片上传插件(ImageUploader,支持七牛云直传)
  • 原文地址:https://blog.csdn.net/wuguandi/article/details/126617278