文章目录

  • 一、Sentinel概述
    • 强大的优势:
    • 组成部分:
  • 二、微服务集成Sentinel
    • 版本说明
    • 安装Sentinel控制台:
      • 1、docke安装
      • 2、jar安装
        • 启动控制台
    • 微服务集成Sentinel:
      • 查看控制台监控数据
  • 三、流控规则详解
    • 流量控制概述
    • 什么是流控规则
      • 原理:
      • 配置流控规则:
      • 参数说明

  Sentinel(卫兵)是阿里开源的一套用于服务容错的综合性解决方案。

  本篇文章会从以下几个方面着重讲解:

  1. Sentinel概述
  2. 微服务集成Sentinel
  3. 流控规则详解

一、Sentinel概述

强大的优势:

1、丰富的应用场景:
  Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用 应用等。

2、完备的实时监控:
  Sentinel 提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据, 甚至 500 台以下规模的集群的汇总运行情况。

3、广泛的开源生态:
  Sentinel 提供开箱即用的与其它开源框架/库的整合模块, 例如与 Spring Cloud、Dubbo、gRPC 的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。

4、完善的 SPI 扩展点:
  Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

组成部分:

  Sentinel 分为两个部分:

核心库(Java 客户端)
  不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
控制台(Dashboard)
  基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。


二、微服务集成Sentinel

版本说明

  

  • sentinel-dashboard:1.8.4
  • spring-boot-starter-parent:2.3.12.RELEASE
  • spring-cloud-dependencies:Hoxton.SR12
  • spring-cloud-alibaba-dependencies:2.2.8.RELEASE

安装Sentinel控制台:

  Sentinel 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能。

1、docke安装

  直接运行命令:

docker run \
--name sentinel \
--restart=always \
-p 8858:8858 \
-v /usr/local/sentinel_home:/home/sentinel_home \
-d bladex/sentinel-dashboard:1.8.4

2、jar安装

  1. 下载jar包,解压到文件夹
       https://github.com/alibaba/Sentinel/releases
  2. 启动控制台,直接使用jar命令启动项目(控制台本身是一个SpringBoot项目)
java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.0.jar

启动控制台

   安装启动完毕,通过浏览器访问localhost:8858 进入控制台 ( 默认用户名密码是 sentinel/sentinel )

微服务集成Sentinel:

  为微服务集成Sentinel核心库非常简单, 只需要加入Sentinel的依赖即可,版本不写,用springboot提供的默认版本。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

  然后在配置文件中添加控制台的信息

spring: cloud:sentinel: transport:port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可dashboard: localhost:8858 # 指定控制台服务的地址

  随便调用微服务的一个接口,sentinel就可以监控到该接口的数据。

查看控制台监控数据

  打开控制台,查看可能会有延迟,刷新就好


三、流控规则详解

流量控制概述

  任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的,我们需要根据系统的处理能力对流量进行控制。

  Sentinel从以下两个方面的数量,对流量进行控制:

  1. QPS:每秒查询率

  2. 线程数:并发线程个数

什么是流控规则

原理:

  其原理是监控应用流量的QPS(每秒查询个数) 或并发线程数等指标,当达到指定的阈值(规定的大小)时对流量进行控制。以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

配置流控规则:

  

参数说明

  • 资源名:

    • 某个接口,默认请求路径(如:http://localhost:8089/testA)
  • 针对来源:
    • 针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认default(不区分来源,全部限制)
  • 阈值类型和阈值:
    • QPS:每秒钟的请求数量,当调用该接口的QPS达到了阈值(某个数量)的时候,实现流控效果。
    • 并发线程数:当调用该接口的线程数达到阈值(某个数量)时,请求直接失败。
  • 流控模式(限制谁):
    • 直接:就限制设置的资源
    • 关联:设置一个关联的资源,关联的资源达到阈值时,就限制设置的资源
    • 链路:规定一个入口,设置的资源的流量达到阈值,就限制入口的资源
  • 流控效果(设置为QPS时可配):
    • 快速失败:请求直接失败 (返回429)

    • Warm up:请求 QPS 从 阈值 / 3 开始,还会设置一个预热时长,在预热时间中逐渐升至设定的 QPS 阈值。也就是允许通过的请求数量由少逐渐变多,有一个缓冲的效果。

    • 排队等待:阈值为每秒通过数量,多余的请求会排队等待(挂起),还会设置一个超时时间,当请求超过超时间时间还未处理,请求就被丢弃了(已取消)

Alibaba Sentinel | 流控规则设置相关推荐

  1. Spring Cloud Alibaba:Sentinel 流控规则

    文章目录 1. 前言 2. 阈值类型 2.1 QPS 2.2 线程数 3. 流控模式 3.1 直接 3.2 关联 3.3 链路 4. 流控效果 4.1 快速失败 4.2 Warm Up 4.3 排队等 ...

  2. Sentinel流控规则

    Sentinel流控规则 流控规则基本介绍 名词解释 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源) 阈值类型/单机阈 ...

  3. 什么?Sentinel流控规则可以这样玩?

    点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 前言 上一篇文章中,我们讲解了关于 ...

  4. Sentinel流控规则_流控等待_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0037

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后再看一下流控等待这个流控的规则 其实就是,如果流量来了很多,然后,请求,会进行排队,如果超时了 ...

  5. Sentinel流控规则_线程数失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0034

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上节咱们说了,阀值类型是QPS,也就是一秒钟可以访问的次数,然后流控模式这里我们用的是直接,也就是 ...

  6. Sentinel流控规则_QPS直接失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0033

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 好上节课,咱们说了一下流量控制的的介绍,下面咱们开始配置, 流控的规则,首先先看第一点,就是流控, ...

  7. Sentinel流控规则简介_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0032

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上节,我们配置好了sentinel的监控,启动了一个微服务,看了效果 然后接下来我们去点击这个簇点 ...

  8. Sentinel流控规则_预热_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0036

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面咱们说了流控的,直接失败,QPS流控和线程数流控,还有关联流控 然后这次咱们来说一下这个war ...

  9. Sentinel流控规则_关联_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0035

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里我们再看这个关联的意思 当关联的资源达到阀值的时候就限流自己 比如我们设置支付接口达到阀值以后 ...

最新文章

  1. LeetCode实战:逆波兰表达式求值
  2. uniapp的目录结构反思与整理 app.vue【base】pages.json【配置】main.json【框架入口文件】
  3. http长/短轮询和WebSocket 的介绍和比较
  4. maven aspectj_使用Spring AspectJ和Maven进行面向方面的编程
  5. Google Code Jam 2015 Round 1A Haircut 二分
  6. python随机生成字符串_python 随机生成字符串数据
  7. Qt文档阅读笔记-Qt Core的官方解析
  8. 全国2009年1月电子商务与电子政务试题
  9. PLSQL只导出表结构
  10. 云服务商拿来主义或大限将至,Elastic 表示将变更开源许可协议并进行诉讼
  11. linux虚拟串口控制器实现---适用于无开发板学习tty driver
  12. JavaScript基础--DOM部分02--李南江
  13. 【python】使用python绘制地图时手动添加比例尺
  14. 简易网页版进程管理器(支持手机管理电脑进程)
  15. @PostMapping注解解析
  16. IC验证工具:Ubuntu下Questasim10.7安装(64bit)全攻略
  17. 霞浦职业中专学校计算机专业,霞浦职业中专学校
  18. 使用three.js加载obj+mtl文件
  19. kali linux 修改用户名密码
  20. sja1000 中断_SJA1000中断接收为什么接收中断不能被触发,不能进入中断接收子函数?看资料,里面说会自动触发中断的。...

热门文章

  1. 为X86架构的安卓平板修补boot.img,使其能够使用Magisk
  2. linux卸载libc6,更新出问题,libc6-dev : 依赖: libc6
  3. 为CV::Mat添加中文
  4. 2019.5.师徒会总结快键键,和学习工具
  5. OpenAI ChatGPT API + FaskAPI SSE Stream 流式周转技术 以及前端Fetch 流式请求获取案例
  6. Shader 锥形扫描遮挡效果
  7. wireguard服务器配置
  8. 使用java代码实现简单的ID自增的工具类
  9. 双非保研大佬的逆袭之路 | 你想要的这里通通有!
  10. 得金融大数据者得天下,下一个一百亿市场在这里