java分布式应用限流实现
分布式应用限流
实现分布式限流的思路有很多种
基于Redis
的限流
Redis
的setnx
的操作
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分布式应用限流实现相关推荐
- java api限流_Java 9:流API的增强
java api限流 Java 9向Stream接口添加了4种新方法: 1. dropWhile dropWhile方法类似于skip方法,但使用Predicate而不是固定的整数值. 当Predic ...
- Java接口限流算法
0. 前言 常见的限流算法有:令牌桶.漏桶.计数器也可以进行粗暴限流实现. 1. 算法介绍 1.1 令牌桶算法 令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌.令牌桶算法的描述如下: ...
- Java并发:分布式应用限流 Redis + Lua 实践
任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶.在之前的文章中,也讲到过,但是那是基于单机场景来写. 之前文章:接口限流算法:漏桶算法&令牌桶算法 然 ...
- java服务限流_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级
一.基本简介 1.概念描述 sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监控台,丰富的使用场景验证.(这似乎是阿里开源组件的一贯 ...
- 基于Redis实现分布式应用限流--转
原文地址:https://my.oschina.net/giegie/blog/1525931 摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限 ...
- java服务限流_Java实现系统限流
在微服务系统中,缓存.限流.熔断是保证系统高可用的三板斧,今天我们就来聊聊限流. 限流是保障系统高可用的方式之一,当然啦也是大厂高频面试题,如果阿里的面试官问一句:"如何实现每秒钟1K个请求 ...
- java验证码限流_Java实现系统限流
在微服务系统中,缓存.限流.熔断是保证系统高可用的三板斧,今天我们就来聊聊限流. 限流是保障系统高可用的方式之一,当然啦也是大厂高频面试题,如果阿里的面试官问一句:"如何实现每秒钟1K个请求 ...
- java guava限流,Guava的RateLimiter实现接口限流
最近开发需求中有需要对后台接口进行限流处理,整理了一下基本使用方法. 首先添加guava依赖: com.google.guava guava 23.0 然后封装RateLimiter适用对多接口的限制 ...
- Java 常用限流算法解析
前言 限流作为高并发场景下抵挡流量洪峰,保护后端服务不被冲垮的一种有效手段,比如大家熟知的限流组件guawa,springcloud中的Hystrix,以及springcloud-alibaba生态中 ...
最新文章
- Visual Studio 2010 Ultimate 正式版已经可以下载,大家快开始下载啊
- 用openCV去除文字中乱入的线条
- 基于WINCE6.0+S3C6410通过USB下载stepldr
- html判断是否有某个元素,jquery怎么判断元素是否存在?
- mysql 5.5 不认识 datetime(0) 类型
- [Leedcode][JAVA][第542题][01矩阵][BFS]
- matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
- Nginx 限制并发连接数。
- odbc中不显示oracle,oracle:odbc无法提供初始化
- 精通Javascript之引用
- jQuery中点击按钮创建表格
- Effective-MultiType
- aix 到 linux的网络,通过VIOS实现AIX系统的网络虚拟化
- torch.cuda
- 关于高维空间的一些思考
- 测试时间不够,项目要如期发布如何保证测试质量
- 图解刘谦如何手穿玻璃桌(详细图文说明)
- 基于python的药店管理系统软件_一套很不错的药店管理软件,值得一看
- 什么语言最适合做 GUI?
- 新款macbook pro发布了,但为什么不推荐购买
热门文章
- Android__Context
- 第二单元作业——电梯模拟总结
- J2EE的经常使用十三规范——java菜鸟成长记
- OC-通知+Block
- android工程建立到最后一步提示unsupported template dependency的解决方法
- Android 应用框架
- RequestDispatcher.forward() 与 HttpServletResponse.sendRedirect()的区别
- 【RPC】你应该知道的 RPC 原理
- [转:有种感觉叫佩服]一个程序员的奋斗历程
- MySQL中SELECT语句简单使用