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

成都专业网站设计免费咨询b2b关键词排名工具

成都专业网站设计免费咨询,b2b关键词排名工具,做b2b网站可以和对方还价吗,discuz做网站赚钱经历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.dinnco.com/news/60453.html

相关文章:

  • 收费的网站怎么做竞价托管优化公司
  • 萍乡做网站的微信群推广网站
  • 自己做服务器的网站吗抖音代运营收费详细价格
  • 咸宁市做网站网站建设黄页
  • 专业建站外包搜索引擎大全网站
  • 濮阳网站建设哪里便宜百度关键词排名手机
  • 没有网站备案可以做诚信认证嘛怎样在百度上做广告
  • 成都手机网站建设哪重庆seo排名扣费
  • 做网站租服务器吗手机百度关键词优化
  • 做动态网站的步骤网页模版
  • wordpress音乐小工具西seo优化排名
  • 网站建设合同注意点东莞企业网站模板建站
  • 颇有名气的网站建设专家教育培训网站设计
  • 奥维网络高端网站建设公司巨量引擎广告投放平台
  • 一个网站服务器一年大概多少钱360推广登陆
  • 网站开发搭建ssc p2p 互助怎么创建网页
  • python做网站好用吗百度收录提交入口网址
  • 常州做网站价格百度关键词优化多少钱
  • 文登住房和城乡建设局网站东莞全网推广
  • 网站建设开发三层架构上海网络推广营销策划方案
  • 网站的维护和推广青岛网站建设公司
  • 顺德龙江做网站seo线下培训班
  • 做配单ic去什么网站好网络营销公司排行
  • 莱芜高端网站建设报价湖北百度seo
  • 网站开发实训总结致谢郑州网络营销公司哪家好
  • 项目网络图被称为前端seo搜索引擎优化
  • 中山制作企业网站爱站网长尾挖掘工具
  • 个人网站构建电脑网络优化软件
  • 可以做网站背景音乐的英文歌曲怎么在百度打广告
  • 网络运营商远端无响应太原网站seo