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

网站做https今日头条网页版

网站做https,今日头条网页版,wordpress 链接优化,自己做的网站怎么被百度收录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.hkea.cn/news/245051/

相关文章:

  • 外网建筑设计网站线上渠道推广有哪些方式
  • 厦门做网站公司排名电工培训机构
  • 武汉网站设计制作外包公司的人好跳槽吗
  • 网站建设哪里最好页面关键词优化
  • 清远建设网站制作seo系统培训课程
  • 网站的网页建设知识ppt北大青鸟职业技术学院简介
  • 巫山网站设计aso优化榜单
  • 关于节约化建设网站的表态发言网站制作报价表
  • 建行网站是多少呢故事式的软文广告例子
  • 阳江市住房和城乡规划建设局网站一级消防工程师考试
  • 做课件的网站有哪些用html制作淘宝网页
  • 网站开发前后台整个流程品牌宣传的推广
  • 深圳市门户网站建设网站推广优化方法
  • 中山公司注册网页怎么优化
  • 网站建设怎么分录2022年新闻摘抄简短
  • 江西景德镇建设厅网站太原关键词排名推广
  • 番禺做网站自媒体发布平台有哪些
  • 用dede做的网站首页电子商务网络营销
  • 最好的做任务赚钱网站网络域名怎么查
  • 建设部规范网站百度app关键词优化
  • 骏域网站百度怎么收录网站
  • 网站robots.txt查看九江seo公司
  • 建设阿里妈妈网站搜索引擎排名优化seo
  • 自学网站建设作业创建网站免费
  • 营销网站定制的优势成品网站源码的优化技巧
  • 高职学院网站建设方案广告制作
  • table表格 做的网站营销案例分析报告模板
  • pc端网站做移动适配教育培训机构管理系统
  • 页游传奇排行榜无锡seo优化公司
  • 广西南宁网站设计百度seo算法