1,什么是sentinel

随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为突破口,在流量控制、断路、负载保护等多个领域进行工作,保障服务可靠性。

用来在微服务系统中保护微服务对的作用 如何 服务雪崩 服务熔断 服务降级 就是用来替换hystrix

特性:

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

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

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

2,sentinel使用

- sentinel提供了两个服务组件:一个是 sentinel 用来实现微服务系统中服务熔断、降级等功能。                         这点和hystrix 类似一个是 sentinel dashboard 用来监控微服务系统中流量调用等情况 流控  熔断  降级 配置。 这点和hystrix  dashboard类似

2.1. sentinel dashboard的安装

2.1.1 下载

下载: https://github.com/alibaba/Sentinel/releases

2.1.2 启动

下载下来的是个jar包,找个目录保存后使用

- 仪表盘是个jar包可以直接通过java命令启动 如: java -jar 方式运行 默认端口为 8080
- java -Dserver.port=9191 -jar  sentinel-dashboard-1.7.2.jar

启动

2.1.3 访问web界面

用户名&密码: sentinel

2.2 sentinel 实时监控服务

2.2.1 创建sentinel服务

springcloudalibaba_07_sentinel_9964

2.2.1.1 pom文件

<dependencies><!-- 引入springboot的外部依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入nacos client的依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--引入sentinel依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></dependency></dependencies>

2.2.1.2 配置文件

server.port=9964spring.application.name=sentinelClientspring.cloud.nacos.server-addr=localhost:8848spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}# 开启sentinel 默认开启
spring.cloud.sentinel.enabled=true# 连接dashboard
spring.cloud.sentinel.transport.dashboard=localhost:9191# 与dashboard通信的端口
spring.cloud.sentinel.transport.port=8719

2.2.1.3 启动类

package com.study;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class Sentinel9964Application {public static void main(String[] args) {SpringApplication.run(Sentinel9964Application.class, args);}
}

2.2.1.4 创建调用接口

package com.study.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SentinelController {@GetMapping("/sentinel/test")public String test(){return "sentinel test ";}@GetMapping("/sentinel/test1")public String test1(){return "sentinel test1 ";}
}

2.2.1.5 观察sentinel页面

默认情况下sentiel为延迟加载,不会在启动之后立即创建服务监控,需要对服务进行调用时才会初始化

3,sentinel 流量控制

# 0.说明
- 流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。- 同一个资源可以创建多条限流规则。FlowSlot 会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。- 一条限流规则主要由下面几个因素组成,我们可以组合这些元素来实现不同的限流效果:resource:资源名,即限流规则的作用对象count: 限流阈值grade: 限流阈值类型(QPS 或并发线程数)limitApp: 流控针对的调用来源,若为 default 则不区分调用来源strategy: 调用关系限流策略 ( 直接   关联  链路 )controlBehavior: 流量控制效果(直接拒绝、Warm Up、匀速排队)- 流量控制主要有两种统计类型,一种是统计并发线程数,另外一种则是统计 QPS
- 更多细节参见官网:https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6

3.1 QPS限流

3.1.1 配置QPS流量控制



3.1.2 测试

3.2 线程数限流

3.2.1 配置线程数限流

3.2.2 配置线程数限流

4,sentinel熔断降级

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。

4.1,降级策略

  • 平均响应时间 (DEGRADE_GRADE_RT):当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位),那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断(抛出 DegradeException)。注意 Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。



  • 异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒请求量 >= N(可配置),并且每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

  • 异常数 (DEGRADE_GRADE_EXCEPTION_COUNT):当资源近 1 分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若 timeWindow 小于 60s,则结束熔断状态后仍可能再进入熔断状态。

5,SentinelResource注解

官网: https://github.com/alibaba/Sentinel/wiki/%E6%B3%A8%E8%A7%A3%E6%94%AF%E6%8C%81

5.1 代码演示

 @GetMapping("/sentinel/test1")@SentinelResource(value = "aa",blockHandler = "fallBack",fallback = "fall")public String test1(int id){log.info("sentinel test1");if(id<0)      throw new RuntimeException("非法参数!!!");}return "sentinel test1 :"+id;}//降级异常处理public String fallBack(int id,BlockException e){if(e instanceof FlowException){return "当前服务已被流控! "+e.getClass().getCanonicalName();}return "当前服务已被降级处理! "+e.getClass().getCanonicalName();}//异常处理public String fall(int id){return "当前服务已不可用!";}

07,springcloudalibaba_sentinel(流量卫兵)相关推荐

  1. SpringCloud_Alibaba微服务学习---sentinel—流量卫兵

    sentinel-流量卫兵 一. Sentinel介绍 二. Sentinel使用 ①. sentinel dashboard的安装 1.下载 2.启动 3.访问web界面 4.登录 ②. senti ...

  2. springcloud-alibaba-sentinel(1)sentinel流量卫兵介绍

    文章目录 前言 (1)什么是sentinel (2)sentinel的历史 (3)sentinel的特性 (4)核心概念 资源 规则 (5)sentinel的生态景观 (6)sentinel组成 前言 ...

  3. 微服务流量卫兵 Sentinel

    1 定义概述 啥是流量,啥又是防卫兵呢? 在分布式系统中,流量注定是越来越大的,在每一秒钟都可能处理上百万乃至千万的请求,设想一下服务器宕掉,那对于用户而言,体验肯定是非常坏的:所以我们为了保证 可用 ...

  4. Sentinel流量卫兵

    文章目录 1.什么是Sentinel 2.Sentinel的特性: 3.两个重要概念 3.1 资源 3.2 规则 4.Sentinel Dashboard使用 4.1 下载 4.2 启动 4.3 访问 ...

  5. springCloud sentinel 流量卫兵

    什么是sentinel 0.说明 https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html#_ ...

  6. 阿里巴巴开源力作(二)--分布式流量卫兵Sentinel简介及控制台安装

    文章目录 简介 控制台的安装 Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性 ...

  7. sentinel流量卫兵组件学习

    官网地址:https://sentinelguard.io/ 笔记对应demo:https://gitee.com/panlsp/springcloud_alibaba_parent 一.使用 sen ...

  8. 分布式流量防卫兵Sentinel

    一.Sentinel的引入 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时候还要帮助同 ...

  9. 推荐 7 个牛哄哄 Spring Cloud 实战项目

    今日推荐 成都女学霸高考 692 分想当"程序媛",网友:快劝劝孩子 推荐一个非常火爆的电商开源项目! 推荐两个项目! 把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服 ...

最新文章

  1. 弹出popwindow 背景变暗
  2. Notification 浏览器右下角弹出提示消息
  3. Struts初步知识
  4. 跟我学jQuery(二) 初识jQuery
  5. 译文:如何使用SocketAsyncEventArgs类(How to use the SocketAsyncEventArgs class)
  6. 学phython的小笔记
  7. 获取winform 运行时debug路径
  8. Parallels Desktop:pd虚拟机 17 for mac
  9. 调节效应检验(一):线性回归分析
  10. 中国十大芯片企业排名
  11. linux开机画面视频,Linux系统的开机画面
  12. 后端实践:Nginx日志配置(超详细)
  13. arduino双按钮同时点灯
  14. ​互链半年报 | 区块链平台应用落地哪家强?阿里系第一,迅雷、平安紧随
  15. 微型计算机汇编语言与接口技术答案,32位微机原理、汇编语言及接口技术教程课后习题答案.doc...
  16. 心脏滴血漏洞(CVE-2014-0160)
  17. 高斯消去、列主元消去、Lu分解、追赶法(matlab)
  18. Excel中这个汇总神器:数据透视表到底能干什么?
  19. 蓝牙Sig Mesh 概念入门①——简单介绍
  20. 半导体物理第二章 半导体中的杂质和缺陷能级

热门文章

  1. voip 音频采集时间_树莓派3 音频配置及其应用场景(录音、VoIP 电话等)(锁定重发)...
  2. windows10 1050ti vs2015 openc3.2 cuda8.0配置自己的darknetyolov3
  3. win7的计算机功能在那打开,win7系统照相机功能在哪?win7系统打开照相机功能的方法...
  4. Delphi CxGrid 用法详解
  5. Window10主硬盘更换及系统重装
  6. Php静默授权,【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)...
  7. Python17_项目实操关卡-人机PK
  8. 微软的现实困难:产品需要再次变“酷”
  9. openpyxl学习笔记(2020--8-11)——制图续
  10. 知识产权行业获客难?一招解决