1、Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。
     它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
2、使用的核心场景(秒杀)
3、sentinel核心部分:
1)核心库(Java 客户端):能够运行于所有 Java 运行时环境,同时对Dubbo /Spring Cloud 等框架也有较好的支持。
2)控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。
4、限流的目的防止恶意请求流量、恶意攻击,或者防止流量超过系统峰值。
5、Sentinel是如何对请求进行限流的?
  主要是基于sentinel依赖提供的拦截器
6、限流常见的算法?
  计数器、令牌桶、漏斗算法,滑动窗口算法
Sentinel 默认的限流算法:滑动窗口算法
7、Sentinel流控规则分析
    阈值类型
    QPS(Queries Per Second):当调用相关url对应的资源时,QPS达到单机阈值时,就会限流。
    线程数:当调用相关url对应的资源时,线程数达到单机阈值时,就会限流。

8、设置限流模式

Sentinel的流控模式代表的流控方式,默认直接(快速失败)关联(高并发,有多个接口时,我们要设置接口的优先级) 链路
链路:链路模式只记录指定链路入口的流量也就是当多个服务对指定资源调用时,假如流量超出了指定阈值,则进行限流。
被调用的方法用@SentinelResource进行注解,然后分别用不同业务方法对此业务进行调用,
假如A业务设置了链路模式的限流,在B业务中是不受影响的

9、设置链路流控规则后,再频繁对限流链路进行访问,检测会出现500异常

10、处理流控模式为链路模式时,假如是sentinel 1.7.2以后版本,Sentinel Web过滤器默认会聚合所有URL的入口为sentinel_spring_web_context,
因此单独对指定链路限流会不生效,需要在application.yml添加如下语句来关闭URL PATH聚合,例如:
方法:
1)sentinel:
     web-context-unify: false
2)当我们也可以基于@SentinelResource注解描述的方法进行限流后的异常进行自定义处理

11、Sentinel的限流效果:快速失败,预热,排队

12、什么是降级熔断?
让外部应用停止对服务的访问
13、为什么要进行熔断呢?
  平均响应速度越来越慢或经常出现异常,这样可能会导致调用链堆积,最终系统崩溃
14、熔断降级策略:
1)慢调用比例:表示请求数超过3时,假如平均响应时间超过200毫秒的有30%,则对请求进行熔断,熔断时长为10秒钟,10秒以后恢复正常。
2) 异常比例
3)异常数
15、系统提供了默认的异常处理机制,默认的异常不能满足我们的需求时,定义方式上可以直接或间接实现BlockExceptionHandler接口,并将对象交给spring管理

16、Sentinel中限流,降级的异常父类是BlockException
Sentinel 出现降级熔断时,系统底层抛出的异常是DegradeException
Sentinel中异常处理接口:BlockExceptionHandler
Sentinel中异常处理接口下默认的实现类:DefaultBlockExceptionHandler
Sentinel中默认的异常处理规则不满足我们的需求时:自己定义
17、我们如何自己定义Sentinel中异常处理呢?
     直接或间接实现BlockExceptionHandler 接口

18、什么是热点?热点即经常访问的数据
如何理解热点数据?访问频度比较高的数据,某些商品、谋篇文章、某个视频)

19、热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效
20、Sentinel会利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
21、热点规则的限流模式只有QPS模式

22、热点数据的限流规则是怎样的?  主要是针对参数进行限流设计
对于热点数据的访问出现限流以后底层异常:ParamFlowException

23、Sentinel系统规则:
系统在生产环境运行过程中,我们经常需要监控服务器的状态,看服务器CPU、内存、IO等的使用率;
主要目的就是保证服务器正常的运行,不能被某些应用搞崩溃了;而且在保证稳定的前提下,保持系统的最大吞吐量。

24、Sentinel的系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体 Load(负载)、RT(响应时间)、入口 QPS 、
 线程数和CPU使用率五个维度监控应用数据,系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。
常用的系统规则:
   1) Load(仅对 Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。
系统容量由系统的 maxQps * minRt 计算得出。设定参考值一般是 CPU cores * 2.5。
   2 )CPU使用率:当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0-1.0)。
   3) RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。)
       线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
   4) 入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。
      并且仅对入口流量生效。入口流量指的是进入应用的流量(EntryType.IN),比如 Web 服务。
25、Sentinel系统保护规则被触发后底层异常:SystemBlockException

26、Sentinel授权规则
 根据调用方来限制资源是否通过((对指定资源的访问给出的一种简易的授权策略)
这时候可以使用 Sentinel 的黑白名单控制的功能。
黑白名单根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;
若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。(例如微信中的黑名单)

sentinel可以基于黑白名单方式进行授权规则设计:
黑白名单规则主要有以下配置项:
    资源名:即限流规则的作用对象
    流控应用:对应的黑名单/白名单中设置的规则值,多个值用逗号隔开.
    授权类型:白名单,黑名单(不允许访问).

Sentinel的授权规则是如何设计的?(白名单和黑名单)
    如何理解Sentinel中的白名单?(允许访问的资源名单)
    如何理解Sentinel中的黑名单?(不允许访问的资源名单)、
    Sentinel如何识别白名单和黑名单?(在拦截器中通过调用RequestOriginParser对象的方法检测具体的规则)
    授权规则中RequestOriginParser类的做用是什么?(对流控应用值进行解析,检查服务访问时传入的值是否与RequestOriginParser的parseOrigin方法返回值是否相同。)

总结(Summary)

总之,Sentinel可为秒杀、抢购、抢票、拉票等高并发应用,提供API接口层面的流量限制,让突然暴涨而来的流量用户访问受到统一的管控,
使用合理的流量放行规则使得用户都能正常得到服务。
重难点分析

Sentinel诞生的背景?(计算机的数量是否有限,处理能力是否有限,并发比较大或突发流量比较大)
    服务中Sentinel环境的集成,初始化?(添加依赖-两个,sentinel配置)
    Sentinel 的限流规则?(阈值类型-QPS&线程数,限流模式-直接,关联,链路)
    Sentinel 的降级(熔断)策略?(慢调用,异常比例,异常数)
    Sentinel 的热点规则设计(掌握)?
    Sentinel 系统规则设计?(了解,全局规则定义,针对所有请求有效)
    Sentinel 授权规则设计?(掌握,黑白名)

Sentinel 相关知识点整理相关推荐

  1. Unity 之 解决包体过大问题记录和纹理相关知识点整理

    Unity 之 解决包体过大问题记录和纹理相关知识点整理 一,发现问题: 二,分析问题: 三,解决问题 3.1 问题分析 3.2 解决方案一 3.3 解决方案二 四,相关知识: 4.1 纹理导入: 4 ...

  2. JS事件相关知识点整理

    JS事件相关知识点整理 JS事件的驱动机制 常见JS事件 点击事件---onclick 焦点事件 获取焦点事件---onfocus 失去焦点事件----onblur 域内容改变事件---onchang ...

  3. 计算机相关知识点整理

    计算机相关必须要知道的知识点 持续更新中 一致性HASH算法 https://www.cnblogs.com/lpfuture/p/5796398.html 一致性哈希将整个哈希值空间组织成一个虚拟的 ...

  4. Keras相关知识点整理(tensorflow2.4)

     具体的一些知识点还是从官方文档获取, 博主只列举几个常用的.毕竟17年的时候就曾用keras落地过实际项目,后来被集成到tensorflow2.x里了,对此框架还是有一定的了解. 应用 Applic ...

  5. python求正方体体积_「高中数学」简单几何体的面积与体积相关知识点整理+例题...

    一.知识要点 (一)圆柱.圆锥.圆台的侧面积 将侧面沿母线展开在平面上,则其侧面展开图的面积即为侧面面积. 1.圆柱的侧面展开图--矩形 圆柱的侧面积 2.圆锥的侧面展开图--扇形 圆锥的侧面积 3. ...

  6. 进程、线程相关知识点整理

    什么是进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. 进程是一个"执行中的程序".程序是一个没有生 ...

  7. mysql相关知识点_mysql相关知识点整理

    一.安装 1.查看系统中是否已安装mysql [root@master ~]# yum list installed mysql* 已加载插件:fastestmirror, product-id, s ...

  8. 微信小程序调试webview_微信小程序内嵌webview相关知识点整理

    前言 随着微信小程序的广泛应用,越来越多的商家选择将营销阵营选择迁移到了小程序中,但受其小程序体积限制的影响,不能够完全满足商户的要求,应运而生的web-view组件很好的解决的这一问题.一方面内嵌w ...

  9. 思科AP无线异常及信道相关知识点整理

    Cisco DNAC 公司的主网络使用的是Cisco的DANC架构.所有思科设备在DNAC上进行管理,状态等信息均可以看到.包括AP运行状态,终端连接状态等.很大程度上实现集成化管理. 问题 但是偶尔 ...

最新文章

  1. 在mysql查询数据库密码_如何查询mysql数据库密码
  2. 中关村论坛首次设置技术交易板块,人工智能和新一代信息技术专场发布会即将召开...
  3. java静态方法加载顺序_java中类以及方法的加载顺序
  4. PHP $_REQUEST获取表单提交的代码
  5. MATLAB从入门到精通-欧拉法与梯形法求解微分方程(含MATLAB源码)
  6. Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
  7. 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
  8. 往sde中导入要素类报错000732
  9. 并发编程-concurrent指南-阻塞队列BlockingQueue
  10. android在线查看源码工具
  11. 团队开发——冲刺2.g
  12. linux下将多个文件去除文件头合并_使用 PDF Mix Tool 执行常见的 PDF 编辑任务 | Linux 中国...
  13. 情感分类介绍及发展方向
  14. 怎么将两个css合并单元格,css table之合并单元格
  15. Flink源码篇,作业提交流程、作业调度流程、作业内部转换流程图
  16. 如何快速上手操作Mac电脑?新手问号
  17. 我有酒,你有故事吗?
  18. Python创建免费Ip代理池,伪装Ip。
  19. ExtentReports生成自动化测试报告
  20. 计算机语言的文体特点,网络语言文体特征

热门文章

  1. 如何选定搭建个人独立博客工具
  2. 【Windows10】电脑双屏后无法调节屏幕亮度?解决方法
  3. Deep Learning Based Registration文章阅读(五)《Anatomy-guided Multimodal Registration by Learning Segment 》
  4. 《云计算技术与应用》最新章节测试答案
  5. 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘,并排序,合并同类项.doc...
  6. Github项目文档的管理
  7. Android辅助功能(Accessibility)简介
  8. 熵值法的信息熵值、效用值如何计算?
  9. 使用java代码实现扫码登录
  10. 代码编辑软件Sublime Text 4中文版安装使用教程