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的整合封装之下,接口限流这件事情可以非常轻易的 ...
随机推荐
- Java中的Set集合
Set接口简介 Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,它是比Collecti ...
- ch1_6_5求解旋转词问题
import java.util.Scanner; public class ch1_6_5求解旋转词问题 { public static void main(String[] args) { // ...
- 9、MyBatis教程之多对一处理
10.多对一处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 1.创建数据库 CREATE TABLE `teacher` ( `id` ...
- 一些DevTools的小技巧-让你不止会console.log()
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/beyond-console-log-leve ...
- Hive中静态分区和动态分区总结
目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...
- kong更改日志格式
基于业务的需求,需要对网关层的日志进行适当定制,以满足使用kibana的制图. 对于kong的日志格式更改,可查看到的资料都过于繁琐,特此记录. 修改kong的日志格式 # ctl edit depl ...
- SpringCloud+Nacos实现服务配置中心(Hoxton版本)
关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery. 通过 Nacos Server 和 spring-cloud-starter- ...
- jq分页功能。
最近在写官网的分页功能.在网上找了很多案例都太复杂也太重.所以准备写一个简单一点的分页. 需求:把请求到的数据做分页. 准备:使用了网上一个简单的分页插件. 思路:分页相当于tab切换功能.具体实操把 ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 2- MySQL客户端工具Workbench的使用及数据库的操作
数据库增删改查快速入门 查看数据库: show databases; 选在数据库:use 数据库名: 创建数据库:create database db_name; 删除数据库:drop databa ...