分布式应用限流

实现分布式限流的思路有很多种

基于Redis的限流

Redissetnx的操作

Redis的数据结构zset

 public boolean limitZset(){int currentTime = Helper.getCurrentTime();int intervalTime = 10 * 1000;System.err.println("开始时间:" + currentTime);if(redisTemplate.hasKey("limit_key")) {Integer count = redisTemplate.opsForZSet().rangeByScore("limit_key", currentTime -  intervalTime, currentTime).size();        // intervalTime是限流的时间System.out.println(count);if (count != null && count > 5) {return false;}}redisTemplate.opsForZSet().add("limit_key",UUID.randomUUID().toString(),currentTime);System.err.println("结束时间:" + Helper.getCurrentTime());return true;}

Redis的令牌桶算法

public boolean limitLeakyBuckets (){Object result = redisTemplate.opsForList().leftPop("limit_leaky_buckets");if(result == null){return false;}return true;}@Scheduled(fixedDelay = 10000,initialDelay = 0)
public void setToken(){redisTemplate.opsForList().rightPush("limit_leaky_buckets",UUID.randomUUID().toString());}
}

java分布式应用限流实现相关推荐

  1. java api限流_Java 9:流API的增强

    java api限流 Java 9向Stream接口添加了4种新方法: 1. dropWhile dropWhile方法类似于skip方法,但使用Predicate而不是固定的整数值. 当Predic ...

  2. Java接口限流算法

    0. 前言 常见的限流算法有:令牌桶.漏桶.计数器也可以进行粗暴限流实现. 1. 算法介绍 1.1 令牌桶算法 令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌.令牌桶算法的描述如下: ...

  3. Java并发:分布式应用限流 Redis + Lua 实践

    任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶.在之前的文章中,也讲到过,但是那是基于单机场景来写. 之前文章:接口限流算法:漏桶算法&令牌桶算法 然 ...

  4. java服务限流_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级

    一.基本简介 1.概念描述 sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监控台,丰富的使用场景验证.(这似乎是阿里开源组件的一贯 ...

  5. 基于Redis实现分布式应用限流--转

    原文地址:https://my.oschina.net/giegie/blog/1525931 摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限 ...

  6. java服务限流_Java实现系统限流

    在微服务系统中,缓存.限流.熔断是保证系统高可用的三板斧,今天我们就来聊聊限流. 限流是保障系统高可用的方式之一,当然啦也是大厂高频面试题,如果阿里的面试官问一句:"如何实现每秒钟1K个请求 ...

  7. java验证码限流_Java实现系统限流

    在微服务系统中,缓存.限流.熔断是保证系统高可用的三板斧,今天我们就来聊聊限流. 限流是保障系统高可用的方式之一,当然啦也是大厂高频面试题,如果阿里的面试官问一句:"如何实现每秒钟1K个请求 ...

  8. java guava限流,Guava的RateLimiter实现接口限流

    最近开发需求中有需要对后台接口进行限流处理,整理了一下基本使用方法. 首先添加guava依赖: com.google.guava guava 23.0 然后封装RateLimiter适用对多接口的限制 ...

  9. Java 常用限流算法解析

    前言 限流作为高并发场景下抵挡流量洪峰,保护后端服务不被冲垮的一种有效手段,比如大家熟知的限流组件guawa,springcloud中的Hystrix,以及springcloud-alibaba生态中 ...

最新文章

  1. Visual Studio 2010 Ultimate 正式版已经可以下载,大家快开始下载啊
  2. 用openCV去除文字中乱入的线条
  3. 基于WINCE6.0+S3C6410通过USB下载stepldr
  4. html判断是否有某个元素,jquery怎么判断元素是否存在?
  5. mysql 5.5 不认识 datetime(0) 类型
  6. [Leedcode][JAVA][第542题][01矩阵][BFS]
  7. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
  8. Nginx 限制并发连接数。
  9. odbc中不显示oracle,oracle:odbc无法提供初始化
  10. 精通Javascript之引用
  11. jQuery中点击按钮创建表格
  12. Effective-MultiType
  13. aix 到 linux的网络,通过VIOS实现AIX系统的网络虚拟化
  14. torch.cuda
  15. 关于高维空间的一些思考
  16. 测试时间不够,项目要如期发布如何保证测试质量
  17. 图解刘谦如何手穿玻璃桌(详细图文说明)
  18. 基于python的药店管理系统软件_一套很不错的药店管理软件,值得一看
  19. 什么语言最适合做 GUI?
  20. 新款macbook pro发布了,但为什么不推荐购买

热门文章

  1. Android__Context
  2. 第二单元作业——电梯模拟总结
  3. J2EE的经常使用十三规范——java菜鸟成长记
  4. OC-通知+Block
  5. android工程建立到最后一步提示unsupported template dependency的解决方法
  6. Android 应用框架
  7. RequestDispatcher.forward() 与 HttpServletResponse.sendRedirect()的区别
  8. 【RPC】你应该知道的 RPC 原理
  9. [转:有种感觉叫佩服]一个程序员的奋斗历程
  10. MySQL中SELECT语句简单使用