上一篇博客讲了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次异常,那么就会报熔断的异常错误。有关其它的规则我这里不在阐述了,具体的都可以看官网。

参考

1、分布式系统的流量防卫兵

少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(10)

Spring Cloud Alibaba(10)---Sentinel控制台搭建+整合SpringCloudAlibaba的更多相关文章

  1. Spring Cloud Alibaba(11)---Sentinel+Nacos持久化

    Sentinel+Nacos持久化 有关Sentinel之前有写过两篇 Spring Cloud Alibaba(9)---Sentinel概述 Spring Cloud Alibaba(10)--- ...

  2. Spring Cloud Alibaba 之 Sentinel 限流规则和控制台实例

    这一节我们通过一个简单的实例,学习Sentinel的基本应用. 一.Sentinel 限流核心概念 在学习Sentinel的具体应用之前,我们先来了解一下Sentinel中两个核心的概念,资源和规则. ...

  3. Spring Cloud alibaba网关 sentinel zuul 四 限流熔断

    spring cloud alibaba 集成了 他内部开源的 Sentinel 熔断限流框架 Sentinel 介绍 官方网址 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentine ...

  4. Spring Cloud Alibaba 使用Sentinel实现接口限流

    Sentinel是什么 Sentinel的官方标题是:分布式系统的流量防卫兵.从名字上来看,很容易就能猜到它是用来作服务稳定性保障的.对于服务稳定性保障组件,如果熟悉Spring Cloud的用户,第 ...

  5. Spring Cloud Alibaba(9)---Sentinel概述

    Sentinel概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统自适应保护.热点防 ...

  6. Spring Cloud Alibaba:Sentinel实现熔断与限流

    一.什么是Sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制.熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的“雪崩效应”,为微服务系统提供了稳 ...

  7. Spring Cloud Alibaba (nacos 注册中心搭建)

    [nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...

  8. Spring Cloud gateway 五 Sentinel整合

    微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...

  9. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

    通过上一篇<使用Sentinel实现接口限流>的介绍,相信大家对Sentinel已经有了初步的认识.在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的 ...

随机推荐

  1. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译前准备(1)

    最近项目也和linux kernel技术有关,调试内核和内核模块.修改内核源码,是学习内核的重要技术手段之一.应用这些技术时,都有一本基本的要求,那就是编译内核.因此,在分析内核调试技术之前,本随笔给 ...

  2. (二)SpringBoot启动过程的分析-环境信息准备

    -- 以下内容均基于2.1.8.RELEASE版本 由上一篇SpringBoot基本启动过程的分析可以发现在run方法内部启动SpringBoot应用时采用多个步骤来实现,本文记录启动的第二个环节:环 ...

  3. HOOK实现游戏无敌-直接修改客户端-2-使用VS来处理

    HOOK实现游戏无敌-直接修改客户端-2-使用VS来处理 大概流程 1 首先找到游戏进程,打开进程 2 申请一段内存空间来保存我们的硬编码(virtualAllocEx) 3 找到攻击函数,修改函数的 ...

  4. 基于react hooks,zarm组件库配置开发h5表单页面

    最近使用React Hooks结合zarm组件库,基于js对象配置方式开发了大量的h5表单页面.大家都知道h5表单功能无非就是表单数据的收集,验证,提交,回显编辑,通常排列方式也是自上向下一行一列的方 ...

  5. Java高并发测试框架JCStress

    前言 如果要研究高并发,一般会借助高并发工具来进行测试.JCStress(Java Concurrency Stress)它是OpenJDK中的一个高并发测试工具,它可以帮助我们研究在高并发场景下JV ...

  6. --系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能

    PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换. 字节序转换函数,常用的有四个: ...

  7. NPM 与 NPX 区别

    NPM 和 NPX 区别 NPM Node Package Manager npm 是 Node.js 的软件包管理器,其目标是自动化的依赖性和软件包管理 NPX npx 是执行 Node 软件包的工 ...

  8. 机器学习--PR曲线, ROC曲线

    在机器学习领域,如果把Accuracy作为衡量模型性能好坏的唯一指标,可能会使我们对模型性能产生误解,尤其是当我们模型输出值是一个概率值时,更不适宜只采取Accuracy作为衡量模型性泛化能的指标.这 ...

  9. tensorflow学习--数据加载

    文章主要来自Tensorflow官方文档,同时加入了自己的理解以及部分代码 数据读取 TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每 ...

  10. 算法:第一节课Master定理

    1.ctex:要求用Tex编辑器进行作业的书写 2.与东大本科有差距,还需要多点努力才行. 3. 4.考试不考概念 5. 6.时间复杂度和空间复杂度 7.算法好坏的评价标准 8.基本运算 9.时间复杂 ...