ITPub博客

首页 > 数据库 > 数据库开发技术 > 如何利用redis来进行分布式集群系统的限流设计

如何利用redis来进行分布式集群系统的限流设计

数据库开发技术 作者:tianxiaoxu 时间:2018-06-19 17:39:37 0 删除 编辑

【本文转自博客园 作者:张永清 原文链接:https://www.cnblogs.com/laoqing/p/9190430.html】
在很多高并发请求的情况下,我们经常需要对系统进行限流,而且需要对应用集群进行全局的限流,那么我们如何类实现呢。

  我们可以利用redis的缓存来进行实现,并且结合mysql数据库一起,先来看一个流程图。

itpub

  这个就是一个典型的对http请求进行全局限流的流程图。

  入口通过请求拦截器进行拦截(filter)。

  来看代码片段,这个代码片段就是一个标准的filter(我们这里基于springboot来定义filter)

itpub

  我们需要做全局限流时,就需要用到redis了。在redis中,可以将限流配置定义为

  redis key:接口名称(或者url)_limit

  value:map,key:appid(业务id),value:限流大小

  就做到配置的快速读取。

  限流的配置定义完后,那么就需要定义限流的计数了。可以定义为

  redis key:接口名称(或者url)_count

  value:map,key:appid(业务id),value:计数值

  一个好的限流设计,还需要能做到对限流配置的实时进行更改和动态的配置。那我们就来看如何实现呢

  下面就是一个限流配置的新增流程。我们可以将改新增配置定义成一个接口或者页面上的一个功能。就能做到配置的实时增加。

itpub

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

itpub

  总结:

  我们充分利用redis的缓存配置以及做了限流时,尽量不要影响到系统的整体性能。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31137683/viewspace-2156339/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-04-26

  • 博文量
    165
  • 访问量
    344620