redis限流(redis限流器 时间窗口)

“古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。”–《礼记·大学》

在应对秒杀、大促、双 11、618 等高性能压力的场景时,限流已经成为了标配技术解决方案,为保证系统的平稳运行起到了关键性的作用。不管应用场景是哪种,限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请求进行限流“熔断”。

根据修身、齐家、治国平天下的理念,限流与熔断要先从小点着手,即先对单机进行限流与熔断,然后对微服务小集群做限流与熔断,最后是对整个流程的服务集群做限流与熔断。

1. 限流

1.1 单机限流(修身)

修其身

a>>限制并发量

import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreTest { private static final int THREAD_COUNT = 30; private static ExecutorService threadPool = Executors .newFixedThreadPool(THREAD_COUNT); private static Semaphore s = new Semaphore(10); public static void main(String[] args) { for (int i = 0; i < THREAD_COUNT; i++) { threadPool.execute(new Runnable() { @Override public void run() { try { s.acquire(); System.out.println(Thread.currentThread().getName()); Thread.sleep(5000); System.out.println(“————–“); s.release(); } catch (InterruptedException e) { } } }); } threadPool.shutdown(); }}

b>>计数器,以CountDownLatch为例

import java.util.concurrent.CountDownLatch;public class CountDownLatchTest2 { public static void main(String[] args) { // 创建计数器,初始化为2 final CountDownLatch latch = new CountDownLatch(2); new Thread(() -> { try { System.out.println(“子线程”+Thread.currentThread().getName()+”正在执行”); Thread.sleep(3000); System.out.println(“子线程”+Thread.currentThread().getName()+”执行完毕”); latch.countDown();// 减一 } catch (InterruptedException e) { e.printStackTrace(); } }).start(); new Thread(() -> { try { System.out.println(“子线程”+Thread.currentThread().getName()+”正在执行”); Thread.sleep(3000); System.out.println(“子线程”+Thread.currentThread().getName()+”执行完毕”); latch.countDown(); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); try { System.out.println(“等待2个子线程执行完毕…”); // 阻塞 latch.await(); System.out.println(“2个子线程已经执行完毕”); System.out.println(“继续执行主线程”); } catch (InterruptedException e) { e.printStackTrace(); } }}

c>>guava RateLimiter

public void test(){ /** * 创建一个限流器,设置每秒放置的令牌数:2个。速率是每秒可以2个的消息。 * 返回的RateLimiter对象可以保证1秒内不会给超过2个令牌,并且是固定速率的放置。达到平滑输出的效果 */ RateLimiter r = RateLimiter.create(2); while (true) { /** * acquire()获取一个令牌,并且返回这个获取这个令牌所需要的时间。如果桶里没有令牌则等待,直到有令牌。 * acquire(N)可以获取多个令牌。 */ System.out.println(r.acquire()); }}

1.2 分布式限流(齐家)

齐其家

a>> nginx

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server { location / { limit_req zone=mylimit; }}

b>>api-gateway+redis限流

1.3 大流程限流(治国平天下)

可以从防火墙,cdn,路由器,api网关等做限流

治国平天下

2. 熔断对比

熔断处理逻辑类似,可以利用一些现成的框架,如Sentinel、Hystrix、resilience4j等。

功能对比

熔断对比

参考文献:

【1】https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2651008444&idx=1&sn=a579c3ceb143ea30930bd4c6d4a8d7e2&chksm=bdbed5ef8ac95cf93e71c5393f08e3b97a7e19e8232ce3872231f2cae74f7a19ab15501aeb44&scene=27#wechat_redirect

【2】https://mp.weixin.qq.com/s?__biz=MzIwMzY1OTU1NQ==&mid=2247484306&idx=1&sn=b6c1b7b9d7c57bbb9f82ec451bcda867&chksm=96cd43dea1bacac8a24cde429146f69dba8bb15c5c9c3fe9adfe858d9a4349cc127fbfa84a8c&scene=27#wechat_redirect

【3】https://github.com/alibaba/Sentinel/wiki/Guideline:-%E4%BB%8E-Hystrix-%E8%BF%81%E7%A7%BB%E5%88%B0-Sentinel

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。

(0)

相关推荐

  • 解放军三大战神是谁?林粟徐是唯一的答案

    评选出我军三大战神,你会选谁?林粟徐是唯一的答案! 陈毅、刘伯承、林彪、贺龙、罗荣桓、罗瑞卿、聂荣臻、徐向前、陶铸和叶剑英 我军三大战神:林彪、粟裕和徐向前 这是一个非常难以抉择的问题,从1927年8月1日人民武装建议到1949年10月1日新中国成立,22年的战争硝烟中,涌现出太多能征善战的高级将领,如果只选三人,难度极大,不管选谁,都会有一些杰出军事家落选…

    2022-04-27 投稿
  • 幻世录全攻略,幻世录最强装备诅咒之戒

    如果说《幻世录》是隐藏道具最难找的游戏之一,相信在座的朋友没有人反对吧! 最强的武器和道具,在没有攻略的情况下,玩家就算通关几次也未必能找齐。   还记得当年,当我无意中在某个地点发现了隐藏道具,此时才明白原来各个场景中都有所谓的“隐藏道具”,只要能够找到就事半功倍。 而且越往后面的关卡,越是刁钻的角度越有可能拿到好东西。那时候玩游戏很有毅力啊,会…

    2023-07-05 投稿
  • 邱启明身高多高(邱启明的成长路径)

    说起央视的名嘴们,个个都有自己的拿手“本领”。   要么,如撒贝宁,一路保送到北大;要么,如董卿,腹有诗书气自华;要么,如尼格买提,幽默机智,讨人喜欢。     他们以上这三位,都有个共同的特点,那就是毕业于高等学府,基本上都是因为高学历的加分,让他们有机会进入了央视。   而今天要说的邱启明,和他们的成长路径,可以说…

    2022-01-09 投稿
  • 蛋白质粉的副作用,头发厚可以做蛋白矫正吗

    近段时间,“蛋白矫正”一词悄然走红。据理发店的Tony老师们介绍,头发如果有毛躁、干枯的状况,通过“蛋白矫正”能够使头发变得柔顺有光泽。   社交平台上,关于“蛋白矫正”的话题此起彼伏,购物平台也充斥着各种有“蛋白矫正”标签的发膏、软化剂,更有产品直接打出“蛋白直发不伤发”的宣传语,成了很多自然卷或发质受损群体的救星。那么这是真的吗?  …

    2023-07-13 投稿
  • dnf哪个副职业最实用(dnf控偶师做什么赚钱)

    在DNF中,金币还是非常重要的,除了史诗以外,几乎所有的道具都可以用金币买到。所以在DNF中赚钱还是非常重要的,目前游戏中可以搬砖赚钱,也可以做商人赚钱,安图恩版本开了以后,还可以开车赚钱。不过说到最简单的赚钱方法,还是用副职业赚钱,今天就给大家具体介绍一下吧。 附魔师 主要功能:附魔装备、制作附魔宝珠 分解装备:金色小晶块、魔力溶解剂 赚钱方法 首先要把附…

    2022-01-07
  • 紫薇圣人是谁?叫什么名字

    最近大家都在讨论传说中的救世大圣人紫薇圣人何时会出现?那么他到底是谁?之前曾下过几次界?今天,我们将去伪存真,逐点剖析。 #01: 紫薇圣人到底是谁 以前看到坊间流传说,紫薇圣人曾经有过五次下凡,分别转世为刘邦、刘秀、李世民、赵匡胤、朱元璋等人。这个说法有道理吗? 刘邦是斩白蛇起义的。刘邦斩杀白蛇之后,遇到一个老婆婆在路边哭,大家就问老婆婆为什么哭。老婆婆说…

    2022-04-11
  • 开一家成人用品店赚钱吗

    一直看很多大神分享自己的副业很羡慕相比于我只是小打小闹,我的副业有点难以启齿毕竟国人骨子里觉得成人用品比较尴尬,身边除了玩的很好的几个朋友和爱人,父母亲戚很多朋友也都没和说过做了一个成人用品无人售货店。言归正传说说怎么接触这个行业的吧。 我今年28岁,将近到了而立之年,目前只是国企上班小职员,父母做的传统行业(煤矿)也不景气这两年国家环保的政策基本也在考虑转…

    2022-06-04
  • xls怎么打开,xls用什么打开方式

    xlsx文件怎么打开呢?我想这个问题肯定困扰了一部分人。Excel 2003或之前的版本保存的表格默认格式一般是“xls”的后缀名,那么“xlsx”的后缀又是什么文件呢;那是什么程序生成出来的呢?其实xlsx文件也是Excel生成出来文件后缀,只不过是Excel 2007、Excel 2010以及即将发布的Excel 2013以上版本默认的文件后缀。xlsx…

    2023-06-24
  • 康熙皇后赫舍里,赫舍里皇后

    赫舍里是康熙在世时唯一立过的皇后,也是康熙的结发妻子,她出身名门,21岁难产早逝,却被康熙爱了一辈子。 作为索尼的孙女,赫舍里从小就含着金钥匙出生,12岁那年被爷爷安排给太皇太后进茶,随后稀里糊涂地当了皇后,嫁给了年仅14岁的康熙。 未曾谋面的俩人,因此走到了一起,赫舍里跟康熙的结合,注定了她要成为皇家的牺牲品。 新婚夜,赫舍里自己揭开头盖问康熙:皇上,您看…

    2023-07-12 投稿
  • 怎么取消百度服务扣款(百度网盘扣费如何取消)

    最近因为疫情的影响,很多人只能在家办公。为了传输比较大的工作文件,百度网盘可能是大家难免会用到的一个办公软件。 很多时候,我们可能只是偶尔用一下超级会员的快速下载功能,只想花一个月的钱,当一个月的超级会员。但这个软件却默认让我们每个月自动续费。 一旦自动续费了,千万别忘了去取消哦!不然每个月都多花一笔冤枉钱。 在取消自动续费的过程中,如果你也遇到了麻烦,不妨…

    2022-05-25
  • 红楼梦里最美女子排名(87版红楼梦颜值排名)

    在中国四大名著中,红楼梦这部作品中的故事,是最扣人心弦的,文字也是最为唯美沉淀的。由于这部作品太经典,所以被屡次翻拍成了影视作品,但是这么多版电视剧红楼梦中,只有87版的红楼梦,让人最为记忆犹深。在看了这部电视剧中的各位美女演员后,网友表示这可能就是经典不可超越的原因吧! 87版的红楼梦,不仅是观众心中的经典影视作品,也是剧组无数人努力下的成果。在决定翻拍红…

    2023-06-01 投稿
  • 青岛火车站在哪个区,青岛火车站在市南还是市北

    这里是刘小顺的旅行和生活研究所。 青岛是我国山东省经济最发达的第一大城市,同时也是一座著名的海滨旅游城市,青岛因其独特的海滨风光以及中西合璧的人文特色而吸引着大量游客来到青岛旅游。 如果你来过山东青岛旅游的话,除了大家都非常熟悉的著名旅游景点之外,还有一个地方肯定会给你留下非常深刻的印象,那就是青岛火车站。 青岛火车站位于山东省青岛市市南区的泰安路,这里是青…

    2022-04-29 投稿