当前位置: 首页 > news >正文

成都建设网站分享推广平台 赚佣金

成都建设网站分享,推广平台 赚佣金,公司网站 开源,中国铁道建设协会网站LUA脚本语言是C开发的,类似存储过程,是为了实现完整的原子性操作,可以用来补充redis弱事务的缺点. 1、LUA脚本的好处 2、Lua脚本限流实战 支持分布式 import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis…

LUA脚本语言是C开发的,类似存储过程,是为了实现完整的原子性操作,可以用来补充redis弱事务的缺点.

1、LUA脚本的好处

在这里插入图片描述

2、Lua脚本限流实战

支持分布式
在这里插入图片描述

import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;/*** 分布式限流的服务类*/
@Service
public class IsAcquire {//引入一个Redis的Lua脚本的支持private DefaultRedisScript<Long> getRedisScript;//判断限流方法---类似于RateLimiterpublic boolean acquire(String limitKey,int limit,int expire) throws  Exception{//连接RedisJedis jedis =  new Jedis("127.0.0.1",6379);getRedisScript =new  DefaultRedisScript<>();getRedisScript.setResultType(Long.class);//脚本执行返回值 longgetRedisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("rateLimiter.lua")));Long result = (Long)jedis.eval(getRedisScript.getScriptAsString(),1,limitKey,String.valueOf(limit),String.valueOf(expire));if(result ==0){return false;}return true;}
}
import com.google.common.util.concurrent.RateLimiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** 类说明:接口类,抢购接口* http请求控制类  Contoller*/
@RestController
public class Controller {@AutowiredIsAcquire isAcquire;//手下的分布式限流//final  RateLimiter rateLimiter = RateLimiter.create(5);  //guava引入的令牌桶限流(非分布式,单机)//秒杀接口@RequestMapping("/order")public String killProduct(@RequestParam(required = true) String name) throws Exception{//rateLimiter.tryAcquire(1); //调用if(isAcquire.acquire("iphone",10,60)){//60秒只能进行10次System.out.println("业务成功!");return "恭喜("+name+"),抢到iphone!";}else{System.out.println("-----------业务被限流");return "对不起,你被限流了!";}}
}

rateLimiter.lua脚本如下:

--java端送入三个参数(1个key,2个param  )string
--limitKey(redi中key的值)
local key =KEYS[1];
--limit(次数)
local times = ARGV[1];
--expire(S)
local expire = ARGV[2];
--对key-value中的 value +1的操作  返回一个结果local afterval=  redis.call('incr',key);
if afterval ==1 then --第一次redis.call('expire',key,tonumber(expire) )  --失效时间(1S)  TLL 1Sreturn 1; --第一次不会进行限制
end
--不是第一次,进行判断
if afterval > tonumber(times) then--限制了return 0;
endreturn 1;

以上简单的计数器的方式,就是一种固定窗口的算法,可以实现对单个接口的限流.

3、限流算法

在这里插入图片描述

固定窗口算法的问题

在这里插入图片描述
解决方案:改为滑动窗口,避免固定窗口的临界问题
滑动窗口演示地址:

https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/selective-repeat-protocol/index.html
漏桶算法

在这里插入图片描述
在这里插入图片描述
漏桶,令牌的算法的缺点就是时间复杂度:O(N),不适用于大并发的请求
滑动窗口的缺点是需要双方先定好协议

http://www.wooajung.com/news/28352.html

相关文章:

  • 产品展示网站开发网络营销方法和手段
  • 类似淘宝网站建设有哪些模板深圳推广公司哪家最好
  • 如何设置网站的默认页网站设计与实现毕业设计
  • 做h5的网站有哪些网址seo查询
  • 用ip做网站中国建设网官方网站
  • 肥城网站开发公司旺道seo
  • 电商平台开发系统win优化大师怎么样
  • 昆明网站建设首选才力自己创建网站
  • 网站建设的相关费用石家庄学院
  • 青岛教育平台网站建设近两年成功的网络营销案例
  • 网站建设中最重要的环节是什么免费企业网站建设流程
  • 东莞做网站公司有哪些如何编写一个网站
  • jsp网站建设哈尔滨seo关键词排名
  • 国内网站设计公司免费网页制作成品
  • python企业网站开发软文怎么写比较吸引人
  • 上虞市建设风机厂网站seo排名查询工具
  • 营销网站模板免费建站模板
  • 深圳永久免费网站建设哪个好百度认证
  • wordpress建站 博客长沙弧度seo
  • 新手怎么做企业网站百度广告搜索推广
  • 曹县 做网站的公司bt磁力库
  • 做网站职校选什么专业客户管理软件crm排名
  • 用什么做网站好网站怎么优化排名的方法
  • 做网站简约学校网站推广链接怎么自己搞定
  • wordpress多榜单查询seo关键词优化排名推广
  • 酒泉做网站今天的国内新闻
  • 有什么网站可以接淘宝设计单做竞价托管推广多少钱
  • 潍坊网站建设官网株洲疫情最新情况
  • 网络建设规范和网络维护管理规范属于优化网站标题和描述的方法
  • 茌平网站建设公司体验营销策略