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

深圳网站建设 制作元做旅行社的都是在哪网站拿票

深圳网站建设 制作元,做旅行社的都是在哪网站拿票,wordpress与saas,医疗机械网站怎么做Springboot框架中使用 Redis Lua 脚本进行限流功能 限流是一种用于控制系统资源利用率或确保服务质量的策略。在Web应用中#xff0c;限流通常用于控制接口请求的频率#xff0c;防止过多的请求导致系统负载过大或者防止恶意攻击。 什么是限流#xff1f; 限流是一种通过… Springboot框架中使用 Redis Lua 脚本进行限流功能 限流是一种用于控制系统资源利用率或确保服务质量的策略。在Web应用中限流通常用于控制接口请求的频率防止过多的请求导致系统负载过大或者防止恶意攻击。 什么是限流 限流是一种通过限制请求的速率或数量以防止系统被过度使用或滥用的策略。它可以帮助维护系统的稳定性、可用性和性能。限流的目标通常是平滑请求流量防止短时间内过多的请求对系统造成冲击。 为什么需要限流 保护系统稳定性 防止过多的请求导致系统资源耗尽例如数据库连接、线程池等从而保护系统的稳定性。 防止恶意攻击 限制请求频率可以防止恶意攻击例如暴力破解、DDoS攻击等。 保障服务质量 避免因过多请求而导致的服务质量下降确保正常用户的良好体验。 如何实现限流 在Spring Boot中结合Redis和Lua脚本是一种常见的实现方式。具体步骤如下 选择合适的Key 限流通常需要根据请求的特性选择合适的Key例如用户ID、接口路径等以确保限流的粒度和准确性。 编写Lua脚本 使用Lua脚本可以在Redis中原子性地执行限流逻辑。脚本中通常包含对计数器的增加、过期时间的设置和判断是否超过限制的逻辑。 在Spring Boot中使用RedisTemplate 利用Spring Boot的RedisTemplate来执行Lua脚本确保在多线程环境下的原子性操作。 集成到业务代码中 在需要进行限流的地方调用限流工具根据返回结果决定是否继续处理业务逻辑或者拒绝请求。 在Spring Boot框架中使用Redis和Lua脚本进行限流功能是一种常见的做法可以有效地控制系统的请求流量防止突发的大量请求对系统造成压力。下面是一个简单的Spring Boot项目中使用Redis和Lua脚本进行限流的流程说明和示例代码 步骤1: 添加依赖 首先在pom.xml文件中添加Redis和Spring Boot的相关依赖 dependencies!-- Spring Boot Starter Data Redis --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency /dependencies步骤2: 配置Redis连接 在application.properties文件中配置Redis连接信息 spring.redis.hostlocalhost spring.redis.port6379步骤3: 编写限流工具类 创建一个RateLimiter类用于执行Lua脚本进行限流操作 import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.stereotype.Component;import java.util.Collections;Component public class RateLimiter {private final RedisTemplateString, Object redisTemplate;public RateLimiter(RedisTemplateString, Object redisTemplate) {this.redisTemplate redisTemplate;}public boolean allowRequest(String key, int maxRequests, long timeWindowSeconds) {String luaScript local current redis.call(incr, KEYS[1])\n if tonumber(current) 1 then\n redis.call(expire, KEYS[1], ARGV[1])\n end\n return tonumber(current) tonumber(ARGV[2]);RedisScriptBoolean redisScript new DefaultRedisScript(luaScript, Boolean.class);Boolean result redisTemplate.execute(redisScript, Collections.singletonList(key), String.valueOf(timeWindowSeconds), String.valueOf(maxRequests));if (result null) {// 处理脚本执行失败的情况return false;}return result;} }步骤4: 在Controller中使用限流 在需要进行限流的Controller中注入RateLimiter并使用它进行限流 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/api) public class ApiController {Autowiredprivate RateLimiter rateLimiter;GetMapping(/limitedEndpoint)public String limitedEndpoint() {String key user:1:apiLimitedKey; // 根据实际情况生成唯一的key可以使用用户ID等信息int maxRequests 10; // 允许的最大请求数long timeWindowSeconds 60; // 时间窗口大小单位秒if (rateLimiter.allowRequest(key, maxRequests, timeWindowSeconds)) {// 允许请求的业务逻辑return Request allowed!;} else {// 请求限流的业务逻辑return Request blocked due to rate limiting!;}} }在上述示例中limitedEndpoint是一个受限制的接口通过RateLimiter类进行限流。根据实际需要可以根据不同的接口、用户等生成不同的key来进行限流。在RateLimiter类中通过Lua脚本来原子性地执行限流逻辑确保在多线程环境下的正确性。 示例中完整代码可以从下面网址获取 https://gitee.com/jlearning/wechatdemo.git https://github.com/icoderoad/wxdemo.git
http://www.tj-hxxt.cn/news/223778.html

相关文章:

  • 做专业慢摇的网站石家庄房产信息网站
  • php thml怎样做网站网站建设如何存数据
  • 吉林省住房建设安厅网站安全管理办法网页设计图片之间空隙
  • 网站制作和收费标准表白制作网站
  • 邯郸建网站公司ui设计需要学什么软件
  • 网站网站开发建设网站建设项目外包合同范本
  • 培训课程网站建设推广普通话喜迎二十
  • 优秀的网页网站设计宁波东方论坛首页
  • 电子商务网站的建设心得wordpress android
  • 简述网站建设的具体步骤网站建设公司浙江华企
  • 国外好的电商网站有哪些有个人代做网站的吗
  • 做网站需要雇什么人培训网站推荐
  • 安徽建网站公司网站开发文档管理工具
  • 自己如何做网站优化免费域名注册方式
  • 营销公司网站模板下载wordpress 标签云
  • 如何查看网站服务器系统域名拍卖网站
  • notepad做网站技巧微信公众平台小程序怎么制作
  • 网站视频插件代码微信公众号管理工具
  • 外贸西班牙语网站建设青岛做网站哪家好
  • 万江营销型网站建设设计制作的一般流程是明确问题
  • 浙江平安建设信息系统网站千阳做网站
  • 怎么制作网站步骤房管局网站做房查
  • 做运动特卖的网站织梦开发供需网站
  • 嘉兴 网站 建设珠海市企业网站制作平台
  • 厦门市建设质量安全协会网站长沙互联网企业
  • 北京的餐饮网站建设c 网站开发环境
  • 免费域名网站黄丁的老头seo博客
  • 做网站多钱长沙招聘
  • 合肥seo网站推广费用网站外链接自己可以怎么做
  • 免费发布信息不收费的网站网站建设预览