Spring Cloud Alibaba(10)---Sentinel控制台搭建+整合SpringCloudAlibaba
上一篇博客讲了Sentinel一些概念性的东西 Spring Cloud Alibaba(9)---Sentinel概述
这篇博客主要讲 Sentinel控制台搭建,和 整合SpringCloudAlibaba来实现流量控制、降级控制。至于其它比如热点配置、系统规则和授权规则等
自己去官网详细看,这里就不叙述了。
一、Sentinel控制台搭建
1、下载地址
官方有提供直接下载地址,我们可以下载自己需要的版本,我这边下载的版本是 1.8.0
https://github.com/alibaba/Sentinel/releases
2、启动控制台
下载之后我们发现就是一个jar包,我们就可以用jar的方式去启动它
java -Dserver.port=8282 -Dcsp.sentinel.dashboard.server=localhost:8282 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
说明 这里我通过 8282 端口来启动它。
3、登陆控制台

重点 启动之后访问 localhost:8282; 登录即可用户名和密码默认是sentinel

登录之后看到左侧的菜单只有默认的一个;因为现在sentinel还没有发现其他微服务,这样一来Sentinel客户端就搭建成功了,接下来开始整合SpringCloudAlibaba。
二、Sentinel整合SpringCloudAlibaba
这篇也是在之前搭建好的基础上添加,这里在mall-goods微服务上做演示
1、pom.xml
<!--引入sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、application.yml
spring:
application:
name: mall-goods
cloud:
sentinel:
transport:
dashboard: localhost:8282
port: 9999
3、SentinelTestController
这里新增一个接口,来方便接下来测试限流、熔断等。
@RestController
@RequestMapping("api/v1/sentinel")
public class SentinelTestController {
private volatile int total = 0;
@RequestMapping("test-sentinel")
public Object findByGoodsId() {
return total++;
}
}
4、测试
这个是时候我们重新启动 mall-goods微服务。重启之后我们发现Sentinel还是并没有mall-goods服务,那是因为于Sentinel是懒加载模式,所以需要先访问上面这个接口后才会
在控制台出现。所以这里我们访问下
http://localhost:6001/api/v1/sentinel/test-sentinel
访问之后我们再看控制台

我们可以看到控制台已经有 mall-goods 服务了。而且我们刚刚请求的接口这里也有了。这说明Sentinel 默认会把接口直接当成一个资源。既然是这样,接下来就对这个请求
进行流控、降级、授权、热点等配置了;先来介绍如何添加流控吧。
三、流量控制规则及示例
概念 流量控制(flow control), 其原理是监控应用的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
流量控制官方文档
https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6
1、规则说明
点击+流控的按钮,出现下面弹窗。

图中一共有6个名词
资源名
默认是请求路径,可⾃定义
针对来源
对哪个微服务进⾏限流,默认是不区分来源,全部限流。这个是针对 区分上游服务进⾏限流, ⽐ 如 商品服务 被 订单服务、⽤户服务调⽤,就可以针对来源进⾏限流。
阈值类型
其实就是通过哪种方式限流,是通过QPS呢,还是通过线程数。他们的含义我这里不在过多解释了,具体可以看这篇文章。什么是QPS,TPS,吞吐量
单机阈值
很好理解,就是现在每秒QPS或者线程数达到这个数量就会限流。
举例子
1)上面阈值类型设置QPS,下面单机阈值设置1。那组合的意思就是 每秒的请求数超过1会直接被限流。
2)上面阈值类型设置线程数量,下面单机阈值设置1。那组合的意思就是 当第一个线程未处理完成时,其他新开启请求的线程都将被限流。
线程数稍微难理解点,这里再通俗的解释下 我们对一个接口资源 阈值类型设置线程数量,下面单机阈值设置1。这个接口方法内有2秒钟的睡眠延迟,那么,当第一个线程未
处理完成时(即2秒内),其他新开启请求的线程都将被限流,只有第一个未限流的线程成功处理,新的请求才会进来。
并发数控制⽤于保护业务线程池不被慢调⽤耗尽Sentinel 并发控制不负责创建和管理线程池,⽽是简单统计当前请求上下⽂的线程数⽬(正在执⾏的调⽤数⽬)
如果超出阈值,新的请求会被⽴即拒绝,效果类似于信号量隔离。并发数控制通常在调⽤端进⾏配置
流控模式
这里有三种模式 直接 关联 链路,这个这里也不做过度解释,具体看上面官方文档。
流控效果
这里也有三种:快速失败、Warm Up 、排队等待。具体也看上面官方文档说明。
总结

2、测试
我这里配置如下

阈值类型:QPS,单机阈值:1,流控模式:直接,流控效果:快速失败

然后我们在来请求上面的接口

很明显,如果一秒内有两个请求就会限流。
四、降级规则说明及示例
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。
降级规则官方文档
https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7
1、规则说明

熔断策略
Sentinel 提供以下几种熔断策略:慢调用比例、异常比例、异常数
慢调用比例:选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。
异常比例 :当单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。
异常数 :当单位统计时长内的异常数目超过阈值之后会自动进行熔断。
熔断降级规则说明
熔断降级规则(DegradeRule)包含下面几个重要的属性:

2、测试
这里添加如下规则配置

然后我们新增一个接口
@RequestMapping("test-sentinel-exception")
public Object testSentinelException() {
int i = (int) (Math.random() * 100);
if(i>10){
throw new NullPointerException("随机错误");
}
return "成功";
}
测试

我们可以看出 当请求超过2次异常,那么就会报熔断的异常错误。有关其它的规则我这里不在阐述了,具体的都可以看官网。
参考
少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(10)
Spring Cloud Alibaba(10)---Sentinel控制台搭建+整合SpringCloudAlibaba的更多相关文章
- Spring Cloud Alibaba(11)---Sentinel+Nacos持久化
Sentinel+Nacos持久化 有关Sentinel之前有写过两篇 Spring Cloud Alibaba(9)---Sentinel概述 Spring Cloud Alibaba(10)--- ...
- Spring Cloud Alibaba 之 Sentinel 限流规则和控制台实例
这一节我们通过一个简单的实例,学习Sentinel的基本应用. 一.Sentinel 限流核心概念 在学习Sentinel的具体应用之前,我们先来了解一下Sentinel中两个核心的概念,资源和规则. ...
- Spring Cloud alibaba网关 sentinel zuul 四 限流熔断
spring cloud alibaba 集成了 他内部开源的 Sentinel 熔断限流框架 Sentinel 介绍 官方网址 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentine ...
- Spring Cloud Alibaba 使用Sentinel实现接口限流
Sentinel是什么 Sentinel的官方标题是:分布式系统的流量防卫兵.从名字上来看,很容易就能猜到它是用来作服务稳定性保障的.对于服务稳定性保障组件,如果熟悉Spring Cloud的用户,第 ...
- Spring Cloud Alibaba(9)---Sentinel概述
Sentinel概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统自适应保护.热点防 ...
- Spring Cloud Alibaba:Sentinel实现熔断与限流
一.什么是Sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制.熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的“雪崩效应”,为微服务系统提供了稳 ...
- Spring Cloud Alibaba (nacos 注册中心搭建)
[nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...
- Spring Cloud gateway 五 Sentinel整合
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则
通过上一篇<使用Sentinel实现接口限流>的介绍,相信大家对Sentinel已经有了初步的认识.在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的 ...
随机推荐
- 【LiteOS】LiteOS消息队列-实战
目录 前言 链接 参考 笔录草稿 创建测试任务 部分源码 前言 链接 LiteOS源码链接 常见问题 华为开发者社区 华为LiteOS官方教程 我的gitee-LiteOS-mcu 参考 上面链接 笔 ...
- Kubernetes 实战 —— 04. 副本机制和其他控制器:部署托管的 pod
保持 pod 健康 P84 只要 pod 调度到某个节点,该节点上的 Kubelet 就会运行 pod 的容器,从此只要该 pod 存在,就会保持运行.如果容器的主进程奔溃, Kubelet 就会自动 ...
- 【linux】驱动-8-一文解决设备树
目录 前言 8. Linux设备树 8.1 设备树简介 8.2 设备树框架 8.2.1 设备树格式 8.2.1.1 DTS 文件布局 8.2.1.2 node 格式 8.2.1.3 propertie ...
- 1,turicreate入门 - jupyter & turicreate安装
turicreate入门系列文章目录 1,turicreate入门 - jupyter & turicreate安装 2,turicreate入门 - 一个简单的回归模型 3,turicrea ...
- Ansible-Playbook中的变量使用
变量名:仅能由字母.数字和下划线组成,且只能以字母开头 变量来源: 1.ansible all -m setup 远程主机的所有变量都可直接调用 #显示所有变量 ansible all -m setu ...
- SpringBoot-13 Dubbo实战
SpringBoot-13 Dubbo实战 前提: 已经准备好Dubbo-admin和Zookeeper 前置准备 1.创建项目 显示创建一个Empty Project,创建两个Module---&g ...
- BUAA_OO_2020_第四单元与课程总结
BUAA_OO_2020_第四单元与课程总结 第四单元架构 第一次 架构设计 第一次作业要求实现UML类图解析器. 我才用自顶向下依次解析的方法,首先将类图中涉及的所有元素分成三层: 第一层 第二层 ...
- Java8中的Stream流式操作 - 入门篇
作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...
- BLE链路层状态机初探
状态机 BLE链路层把所有的功能放到五种不同的状态中,在不同的状态分别执行不同的功能. 一般来说,BLE设备大致有这么几种状态:空闲,广播,扫描,发起连接和连接成功. 广播和扫描是相对应的,一个设备广 ...
- Dapr | 云原生的抽象与实现
引言 Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到今年2月正式发布 V1.0 版本.在不到一年半的时间内,github star 数达到了 1.2 万,超过同期的 kuberne ...