亿级流量秒杀项目--水平扩展--Nginx反向代理及优化

1、单机容量问题–水平扩展
  • 表像: 单机CPU使用率增高,memory占用增加,网络带宽使用增加

在这里插入图片描述

2、Nginx的反向代理配置
  • upstream 里面的设置的ip为 图中A、B服务器的私有ip

  • 因为均为阿里云服务器 且在同一地区的局域网下 故可以使用私有ip

  • weight为负载均衡 1:1   进行轮询访问
    在这里插入图片描述

  • 在server下配置server_name 和 监听的端口号

  • 将静态资源html、css、js 等信息放在指定的html/resources 下,访问域名拼接上location后面的路径

  • location / { } 中,

  • proxy_pass http://backend_server;     backend_server 为上面定义的后台地址

  • proxy_set_header Host $http_host:$proxy_port;

  • proxy_set_header X-Real-IP $remote_addr;

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

在这里插入图片描述

3、浏览器每发出一个请求,通过Nginx就会和后端服务器建立一个连接,当有大量请求时,这个建立连接和释放连接的过程 就相当的损耗性能。
  • 为解决此问题,可以在Nginx的conf目录下nginx.conf配置文件中,打开keepalive=30 默认当没有连接时仍保持30秒的连接状态。 使用常连接保证了对应的分布式扩展网络连接之后 所产生的的一个网络建连的消耗,使用keepalive方式 解决了nginx与upstreamServer之间的网络连接消耗,用Druid的数据库连接池解决了和数据源之间的连接消耗。
  • keepalive 30;

  • 但是需要注意的是,nginx默认使用HTTP1.0 进行连接,而http1.0 并不支持Keepalive的设置。首先要将http声明为1.0 配置如下
  • proxy_http_version 1.1;

  • 允许重新定义或追加字段到传递给代理服务器额请求头信息(默认是close)
  • proxy_set_header Connection "";
4. Nginx高性能的原因
4、1. Nginx的高性能 – epoll多路复用机制完成非阻塞式的IO操作
  • Java BIO模型,阻塞式进程
    在这里插入图片描述

  • Linux select模型是由限制的,理论上说它只能监听1024个数量的句柄,对超级多的客户端连接的时候 应用服务器就显得力不从心
  • Linux2.6 内核以后就诞生了epoll模型,即变更触发回调直接读取,理论上无上限

在这里插入图片描述

4、2. Nginx的高性能 – master worker 进程模型可以允许其做一个平滑的重启以及平滑的重新加载配置并且不会断开与客户端的连接,可以依赖于进程模型完成对应的操作
4、3. 基于协程的一个非阻塞式编程的一套机制,来完成它对应的一个单进程上单线程的模型,却又可以支持并发的编程调用接口
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值