zoukankan      html  css  js  c++  java
  • Sentinel 限流

    Sentinel(https://github.com/alibaba/Sentinel)是一个限流组件。在互联网系统高可用设计中,限流作为一种托底的手段,保护系统不会被流量冲垮而出现未知的异常。
    Sentinel系统的具体设计,可以参考官方文档,同时也可以参考 这个  , 这里只说一下大概的逻辑:
    1. Sentinel限流算是是通过滑动窗口实现,滑动窗口算法可以有效解决计数器法的临界问题,关于限流的4种算法,可以参考 这里
    2. Sentinel通过类似链表的方式,组装了N个solt(最新版本为8个), 这些slot各司其职,作用如下:
    • NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级;
    • ClusterBuilderSlot 则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;
    • StatisticsSlot 则用于记录,统计不同维度的 runtime 信息;
    • SystemSlot 则通过系统的状态,例如 load1 等,来控制总的入口流量;
    • AuthoritySlot 则根据黑白名单,来做黑白名单控制;
    • FlowSlot 则用于根据预设的限流规则,以及前面 slot 统计的状态,来进行限流;
    • DegradeSlot 则通过统计信息,以及预设的规则,来做熔断降级;

    每个请求都会经过这些solt, 这些slot按照指定的顺序放入到SlotChain, 前3个用于统计,后面4个根据统计结果给出不同的操作,每个请求都会经过前面3个slot, 后面4个如果违反任何一个,都会通过抛出异常来短路返回。业务根据抛出的异常进行相应的处理。 

    sentinel除了本地模式,还有集群模式,这里就不细说
    可以参考我的注解版 https://github.com/zhaoyb/Sentinel

  • 相关阅读:
    shell编程基础干货
    HIVE的高级操作
    Linux service,挂载,定时任务等常用服务
    Linux(二)高级文本处理
    Linux基本使用命令
    07-MySQL 架构介绍
    06-Re: 视图&过程&触发器
    05-安装 MySQL5.7
    [04] 继承&聚合&war
    [03] 仓库&生命周期&插件目标
  • 原文地址:https://www.cnblogs.com/beyondbit/p/13386997.html
Copyright © 2011-2022 走看看