如何利用redis来进行分布式集群系统的限流设计
在很多高并发请求的情况下,我们经常需要对系统进行限流,而且需要对应用集群进行全局的限流,那么我们如何类实现呢。
我们可以利用redis的缓存来进行实现,并且结合mysql数据库一起,先来看一个流程图。

这个就是一个典型的对http请求进行全局限流的流程图。
入口通过请求拦截器进行拦截(filter)。
来看代码片段,这个代码片段就是一个标准的filter(我们这里基于springboot来定义filter)

我们需要做全局限流时,就需要用到redis了。在redis中,可以将限流配置定义为
redis key:接口名称(或者url)_limit
value:map,key:appid(业务id),value:限流大小
就做到配置的快速读取。
限流的配置定义完后,那么就需要定义限流的计数了。可以定义为
redis key:接口名称(或者url)_count
value:map,key:appid(业务id),value:计数值
一个好的限流设计,还需要能做到对限流配置的实时进行更改和动态的配置。那我们就来看如何实现呢
下面就是一个限流配置的新增流程。我们可以将改新增配置定义成一个接口或者页面上的一个功能。就能做到配置的实时增加。

最后我们再来看下配置的修改和限流配置的删除

总结:
我们充分利用redis的缓存配置以及做了限流时,尽量不要影响到系统的整体性能。
【原文归作者所有,欢迎转载,但是保留版权,并且转载时,需要注明出处】
如何利用redis来进行分布式集群系统的限流设计的更多相关文章
- Apache shiro集群实现 (七)分布式集群系统下---cache共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- 暑假第二弹:基于docker的hadoop分布式集群系统的搭建和测试
早在四月份的时候,就已经开了这篇文章.当时是参加数据挖掘的比赛,在计科院大佬的建议下用TensorFlow搞深度学习,而且要在自己的hadoop分布式集群系统下搞. 当时可把我们牛逼坏了,在没有基础的 ...
- redis高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- Redis 高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- 分布式集群系统下的高可用session解决方案
目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制. 目前,在集群系统下实现session统一的有如下几种 ...
- redis配置cluster分布式集群
#下载最新的redis5. wget http://download.redis.io/releases/redis-5.0.3.tar.gz .tar.gz cd redis- make make ...
- 分布式集群Session共享 简单多tomcat8+redis的session共享实现
; i++) { str = str + session.getAttribute("name" + i) + "<br>"; } response ...
随机推荐
- 关于12c安装后打补丁
根据ID:1454618.1,可在MOS上查到相关版本详细的补丁版本号. 补丁安装过程参考补丁文档,以下是大致过程. 1. 更新OPatch2. 创建OCM应答文件(每个节点)$ORACLE_HOME ...
- DeleteFile 删除文件
#include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...
- PHP菜鸟如何开始学习PHP语言
把我自己学习PHP的经验分享出来,既给想学习PHP的朋友提供一个思路,也算是整理一下自己的思路,好给后续的教程开个头吧~ 学习其实也是有方法的,举个例子:在您上学期间,班里一定有学霸,也有学渣,也有普 ...
- linux 基本原则和常用命令
Linux的基本原则:1.由目的单一的小程序组成,组合小程序完成复杂的功能:2.一切皆文件:3.尽量避免捕获用户接口:4.配置文件保存为纯文本格式. CLI接口的命令提示符:#(root)$(普通用户 ...
- [Atcoder SoundHound Contest 2018]E.+ Graph
题面 Time limit : 2sec / Memory limit : 1024MB Score : 600 points Problem Statement-题目描述 Kenkoooo foun ...
- Python中__init__()和self的有啥用
这篇博客让我一下子就理解了,https://www.cnblogs.com/illusion1010/p/9527034.html,感谢博主 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一 ...
- C++ this指针的详解
C++中this指针的用法详解 转自:http://blog.chinaunix.net/uid-21411227-id-1826942.html 1. this指针的用处: 一个对象的this指 ...
- flutter packages.
connectivity This plugin allows Flutter apps to discover network connectivity and configure themselv ...
- Dell3470无法开机或开机黑屏情况下检测屏幕是否正常
故障现象:Dell3470无法开机,点击开关按键无任何反应 故障分析:释放静电后故障依旧.更换电源适配器后故障依旧,初判主板故障,无法确认屏是否正常 解决方法:除去拆机单独测试外,Dell售后告知一个 ...
- MVC4 中的Model显示设置(含显示Shared/DisplayTemplates和编辑Shared/EditorTemplates)
转载于: MVC4 中的Model显示设置(含显示Shared/DisplayTemplates和编辑Shared/EditorTemplates) 虽然 [Display(Name="XX ...