OpenResty

OpenResty是一个基于Nginx可伸缩的Web平台,集成了很多第三方模块(Lua),可以实现10K~1000K的并发链接响应的高性能Web应用

请求非及时性资源实例

配置一个请求缓存(高并发请求资源)

  1. 用户通过链接访问Nginx(NginX-OpenResty),将需要请求指定资源的会话拦截,并从OpenResty Cache(Nginx-Cache)中请求资源,如果查询不到则继续下一步,查询到了就直接返回资源
  2. 通过OpenResty集成的Lua脚本配置,请求本地Redis缓存,如果查询不到则继续下一步,查询到了就写入Nginx-Cache并返回资源
  3. 如果以上都没有查询到数据,那么就会到主数据库查询数据,查询完毕后将数据同步到Redis缓存中,并返回

配置

  • 在Nginx.conf配置NginX拦截处理
  • 编写Lua接受请求后处理脚本
  • 定义Nginx缓存模块大小

ps:每次修改配置文件都需要重启Nginx服务

Nginx限流

方式:

  • 速率限流
  • 并发连接数限流

速率限流
使用漏桶算法实现,在大并发量请求来临之时,将所有水(请求)放入一个桶中(固定最大请求并发量),然后在桶下方戳一个小洞,让它一滴一滴的流出来(控制并发量传输速率),如果水太多了,就会溢出(拒绝请求)
在这里插入图片描述
令牌桶算法,可以实现请求优先级,常见用于网关限流)
在这里插入图片描述

Nginx速率限流配置
Nginx设置
limit_req_zone $binary_remote_addr zone=contentRateLimit:10m rate=2r/s;
表示每一秒钟处理最多两个请求,处理不过来就会拒绝(除非由burst参数,也就是缓冲区声明)
虚拟机设置
limit_req zone=contentRateLimit burst=4 nodelay;
表示缓冲队列大小为四个请求,请求数大于4就拒绝,单独使用意义不大,需要和速率一起搭配使用
limit_req zone=contentRateLimit burst=4 nodelay;
表示并行处理,加了这个参数就不需要管rate了,实现真正意义上的并发

Nginx并发量限流配置

根据访问端口限流
Nginx设置
limit_conn_zone $binary_remote_addr zone=addr:10m;
表示根据IP限流,存储内存大小为10M,连接名为addr
虚拟机设置
limit_conn addr 2;
表示每秒只能接收2个请求
proxy_pass http://192.168.211.1:18081;
表示访问这个地址被拦截并被转发至指定地址

根据个人请求限流
Nginx设置
limit_conn_zone $binary_remote_addr zone=perip:10m;
表示根据个人请求perip限流
limit_conn_zone $server_name zone=perserver:10M;
表示根据整个location对应的请求并发容量配置
虚拟机设置
limit_conn perip 3;
限制同Ip并发只能访问3次
limit_conn perserver 5;
限制总的访问并发量只能最多五个

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值