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)

相关推荐

  • 河北师大附中吧 河北师大附中有什么样的特色

    在石家庄市中心 有这样一所特殊的中学 她是万千学子的心之所向 是很多人心中的“白月光” 从这里走出的学生都自带光芒 她就是—— 河北师范大学附属中学 @师大附中官网 附中人,自带大学气质 曾经,我们都是附中人,我们都为这个称呼狠狠骄傲过! 1955年建校的河北师范大学附属中学,已经走过了66个年头,是河北省示范性高中和对外开放学校! “联合国教科文教师教育教…

    投稿 2023-06-04
  • 阿拉伯拼音(阿拉伯拼音怎么读)

    1. 阿语字母: 阿拉伯语是一种拼音文字,共有28个字母。每个字母有3种发音方式,在不同的语法和句法环境中发音不同。每个字母在字头、字中和字尾的书写方法不同。 阿拉伯语是世上最难掌握的语言之一,某些字母的发音及叠音等是阿拉伯语独有的。为了更快的应用语言达成沟通,不建议初学者从字母和发音开始学,而建议在语言的实践中积累和调整。 2. 阿语词汇: a) 阿语词汇…

    投稿 2022-05-10
  • 中国足球队12强赛程积分,中国足球12强赛程表

    10月13日,12强赛第4轮比赛全部结束,国足1胜3负积分3分,位居B组第5。 先来看12强赛B组,也就是中国队所在小组的积分榜: 国足所在的B组最新积分榜 沙特在击败国足之后豪取4连胜,积分12分,澳大利亚输给日本,3胜1负积分9分,日本2胜2负(胜国足和澳大利亚,输阿曼和沙特)积分6分,阿曼也是2胜2负(胜日本和越南,输沙特和澳大利亚)积分也是6分。 然…

    2022-03-15
  • 2022口碑最好的2000元机,2000元手机性价比排行

    现在2000元价位的手机,可以用「真香」来形容!当大家吐槽着芯片涨价,助涨手机价格,旗舰机型动辄四五千时,谁曾想,在2000元市场里,竟疯狂内卷起来。搭载骁龙 870这种次旗舰级别芯片的手机,价格跳水至1999元,一下子聚焦大量的关注。下面我就来为大家推荐四款两千元档手机,感兴趣的朋友千万不要错过。 realme X7 Pro 至尊版 参数规格: 性能:天玑…

    2022-03-04
  • apple id申请注册(appleid账号)

    大家好,很多小伙伴们刚换了苹果手机,遇到的问题就是我要怎么下载软件,下载软件要注册苹果id,那苹果id要怎么注册,还有注册完了要怎么使用,现在就让我来唯大家简单介绍一下怎么快速注册一个苹果id。 当我们突然从安卓换到苹果手机的时候,把苹果手机开机激活以后,我们马上就要下载软件,就会提示要id才能下载。 现在我们就开始教你简单快速注册一个id,首先进入‘设置’…

    2023-01-29 投稿
  • 苹果无线鼠标驱动,苹果鼠标怎么连接电脑

    不小心将鼠标驱动程序作为触控板驱动程序禁用,导致鼠标无法操作,一般来说可以强行关机重启尝试,如果有重要的工作无法重启系统,可以使用键盘操作系统界面重启鼠标驱动程序。 1. 按“win+X”打开系统菜单,按“↓”选中设备管理器”,按“回车”打开“打开设备管理器” 2. 打开“设备管理器”窗口,按“Tab”键激活设备列表,按“↓”键选中“鼠标”和其他指针设备,按…

    2023-06-24 投稿
  • 极速快手赚钱(快手极速版为什么打不开)

    快手极速版电商操作指南 1:从未下载过快手极速版 APP 的设备,同一设备上注册多个账号仅算作一个设备(有过快手无所谓) 下载快手极速版填入邀请码:241626355 点击链接扫码下载:  点击扫码 有机会领取56元现金红包 2:同一个机号/设备号/支付账号均视为同一用户 3:(邀请码必须在安装激活后的 30 分钟内完成绑定,超时将无法绑定) 4:绑定邀请码…

    2022-01-03 投稿
  • 感到很无聊怎么办(感觉生活太无聊了怎么办)

    最近过了几周漫无目的,眼神无光的日子。还别说,那感觉真实糟透了。感觉自己好像陷入了一种负面情绪的漩涡,对什么事都冷漠无感,做什么都提不起兴趣。因而就连最近做的饭都变得难吃了一些。 什么都不想干的日子里,我刷了不少的剧。以往我很少刷剧,一般也就看看日剧,练练耳朵什么的,但最近我日剧不想看了,找了一些国内的仙侠剧、偶像剧来看。看的时候感觉挺投入的,但是看完之后觉…

    2022-01-02
  • 兵家大忌有哪些,兵家最忌讳什么

    在古代时期,战场上古人常提到的“兵家大忌”,往往会决定一场战事的胜负。到了现代战争,也是如此,只不过有些地方不一样了。因为使用武器的不同,现代战争出现了新的兵种——特种兵和狙击手。两者都有同样的最大禁忌,其他兵种能允许做的,他们被禁止,否则后悔莫及。   在生活中香烟,是很多人的精神粮食,就连纪律严明的军队里,也是很多士兵的精神粮食。以前,在部队里…

    2022-03-12 投稿
  • 京东后台登陆,京东登录页面在哪

    《京东后台登陆全攻略:从入门到精通》 在电商行业的浩瀚海洋中,京东作为巨头之一,其后台系统的操作至关重要。 而京东后台登陆,无疑是开启这一神秘大门的关键钥匙。 今天,我就来为大家详细介绍京东后台登陆的相关事宜,希望能帮助到各位电商从业者或对京东后台感兴趣的朋友们。 一、登陆前的准备工作 1.拥有京东账号 也许你已经是京东的忠实用户,拥有了一个京东账号。 但如…

    投稿 2025-03-21
  • 联通最便宜的套餐流量,联通无忧卡5元套餐申请入口还有吗

    说到联通最便宜的流量卡套餐,很多小伙伴会想到之前的联通无忧卡5元套餐。说实话月租5元真的是便宜到家了,但是套餐流量只有200M,流量几天就自动消耗完了,根本支撑不到月底,作为一个保号套餐都很勉强。 而且现在联通无忧卡5元套餐申请入口已经没有了,应该是下架了。毕竟从实用角度来说这个套餐还是挺鸡肋的。 目前联通推出的最便宜套餐是9元月租的,虽然比之前多了4元,但…

    投稿 2022-11-17
  • 战斗描写很精彩的小说(写小说时如何描写战斗)

    这次给大家带来的是六本拥有众多战争场面描写,剧情,文笔一流的小说,主角都成为当时朝代第一人。 《晚明》   这是我看过的第一本双穿历史架空小说,也是看过之后,一个月徘徊不定,不知再看什么书好,总之,就是吃了一顿大餐后,对其他菜品暂时都没胃口那种感觉。 陈新和刘民有假期外出登山散心,顺便进行某些不可言说的交易(其实是陈新为了公司权力、利益,想叫老同学…

    2022-01-02 投稿