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限流

https://github.com/wangzheng0822/ratelimiter4j

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

关注公众号:zhantianss(长按复制)

本文来自作者:淘宝知识官,不代表展天博客立场!

转载请注明:https://www.me900.com/265354.html

(0)

相关推荐

  • 抖音达人自动邀约软件(全自动批量邀约达人)

    做抖店和招商团长的朋友都需要在精选联盟邀约达人带货,要知道精选联盟里面的达人成千上万,一个一个邀约非常的耗费时间,之前安排一个人每天专门去邀约达人,一天下来也就邀约200个人左右,非常枯燥乏味,浪费时间。 手动邀约达人步骤大致是:   如果人工去邀约的人,找达人,筛选商品,发送消息,一个人一天也发送不了多少邀约。人工成本非常的高,把这个人力成本拿来…

    2021-11-20 广告
  • 特殊工种退休最新规定2021年(河北特殊工种退休最新规定2021年)

    市场监管总局关于 2021年全国特种设备安全状况的通告 根据《中华人民共和国特种设备安全法》《特种设备安全监察条例》的规定,现将2021年全国特种设备安全状况通告如下。 一、特种设备基本情况 (一)特种设备登记数量情况。 截至2021年年底,全国特种设备总量达1816.23万台。其中:锅炉34.71万台、压力容器469.49万台、电梯879.98万台、起重机…

    2023-06-01 广告
  • 洛康码怎么申请(洛康码怎么申请转码)

    3月3日,洛阳市新冠肺炎疫情防控指挥部办公室发布消息,即日起在该市范围内推广使用洛阳健康码(简称“洛康码”),“洛康码”实行红、黄、绿三色管理,洛阳市域内人员(含常住、暂住人口)以及返(来)洛人员均应申领。 公告全文如下: 《洛阳市新冠肺炎疫情防控指挥部办公室关于推广使用“洛康码”的通告》 为进一步提升全市疫情防控工作精细化、规范化、便捷化水平,统筹推动疫情…

  • 加湿器不出雾(加湿器使用方法步骤及注意事项)

    一、加湿器的正确使用方式: 大家好,我是尤呢呢,说起加湿器大家都不陌生。而加湿器的用法很多朋友也充分发挥想象力,往里边加入了香水、消毒液以及驱蚊液等各类可挥发液体。   但是在2011年韩国则因为加湿器,导致了近70万人得病,并有1.4万人因此去世,这就是韩国很出名的加湿器杀人事件。简单说原因就是超声波加湿器把平时不易吸入的聚六亚甲基胍(PHMG一…

    2023-06-02 广告
  • 李晨微博微博(李晨微博新浪微博微博)

    近日,李晨的一条微博让网友展开了联想,他居然说自己家有小孩了,而且还有人送孩子礼物。莫非,李晨是在暗示,他和范冰冰造人成功,已经快要升级做爸妈了?不久前,范冰冰还公开表示,想在明年做妈妈。李晨范冰冰都是爱猫人士,看他们晒出的照片就能发现,经常有猫咪在他们身边活动。 而且,范冰冰更是把猫当成自己小孩来养,还口口声声说自己是宠物猫的妈妈。不过,也不能完全排除李晨…

    2023-06-03 广告
  • 抖音短视频补小黄车(抖音强挂小黄车软件)

    做抖音短视频的朋友经常会遇到一个问题,就是视频火了,但是小黄车却没有挂上! 要知道我们辛辛苦苦剪辑出来的视频就是想挂车卖货赚钱的,但是流量爆了,缺没有办法卖货,是不是非常恼火? 如果你也碰到了这个问题,那么现在你再也不用担心了。 因为我们有抖音强挂小黄车软件,轻松解决视频火了缺没有挂车的烦恼! 只需两步,轻松强挂小黄车! 1.扫码登陆抖音账号,选择一条作品链…

    2022-01-01