3.6 Spring Cloud 实战集成 Sentinel 熔断限流| 学习笔记

简介: 快速学习 3.6 Spring Cloud 实战集成 Sentinel 熔断限流。

开发者学堂课程【Spring Cloud 微服务架构设计与开发实战 3.6 Spring Cloud 实战集成 Sentinel 熔断限流】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/60/detail/1099


3.6 Spring Cloud 实战集成 Sentinel 熔断限流

 

内容介绍

一、阿里巴巴 Sentinel 熔断限流工具

二、阿里巴巴 Sentinel 分布式架构

三、阿里巴巴 Sentinel 实战 SpringCloud 下一节课

 

这节课主要讲的是比较重要的技术 sentinel 来解决熔断限流问题,就像早期的京东淘宝服务器,在双十一时候有时会出现卡死或者瘫痪的时候就需要升级服务器扩大集群,用限流的办法,或者是熔断的办法来保证服务器的正常操作是对于保护系统来说十分重要的策略。

 

一、阿里巴巴 Sentinel 熔断限流工具

1.Alibaba 微服务组件 Sentinel

(1)Sentinel:分布式系统的流量防卫兵(要能监控流量,监控错误,区于某个设置条件来做熔断)

(2)Sentinel:哨兵,流量控制、熔断降级、系统负载保护等多维

度保护服务的稳定性。

保护:保护系统的可控性。

2.Sentinel 新特性

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

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

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

(Sentinel 并不是只针对 spring cloud,他是针对整个 jar war 分布式的一个生态,服务于多种分布式的一个场景)

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

3.Sentinel 对比 Hystrix

对比内容

Sentinel

Hystrix

 

隔离策略

信号量隔离

线程池隔离/信号量隔离

熔断降级策略

基于响应时间或失败比率

基于失败比率

实时指标实现

滑动窗口

滑动窗口(基RxJava)

规则配置

支持多种数据源

支持多种数据源

扩展性

多个扩展点

插件的形式

基于注解的支持

支持

支持

限流

基于QPS,支持基于调用关

不支持

流量整形

支持慢启动、匀速器模式

不支持

系统负载保护

支持

不支持

控制台

开箱即用,可配置规则、查看秒级监控、机器发现等

不完善

常见框架的适配

Servlet、Spring Cloud、Dubbo、gRPC等

Servlet、Spring Cloud Netflix

 


二、阿里巴巴 Sentinel 分布式架构

1. Sentinel 的逻辑架

实时监控

(熔断限流的基础,监控指标才能判断他是否是熔断)

机器发现

 

规则配置

Sentinel控

制台

SpringCloud

流量控制

线程数隔离

 

慢调用降级

 

调用链路

 

Dubbo

 

速率控制

集群限流

 

异常熔断

 

系统自适应保护

 

gRPC

 

调用关系限流

 

热点限流

 

削峰填谷

 

来源访问控制

ServiceMesh

(它的工作层次更偏向底层的网络调度,与其他的不太一样)

动态规则配置(ZooKeeper,Nacos,Apollo)

2. Sentinel 的开源生态

image.png

他的生态较为完善,对接了各种不同的分布式场景,nginx 也可以集成,基本对接了所有的技术。

 

三、阿里巴巴 Sentinel 实战 SpringCloud 下一节课

首先,如果想熔断微服务,将 Sentinel 的调度端先改造一下。首先 Sentinel 的依赖包,

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-sentinel</artif<version>2.2.3.RELEASE</ version>

</ dependency>

这里对应的依赖要加进来,其次看制作中心,首先采集数据

#监控数据源要暴露地址

management.endpoints.web.exposure.include=*

其次要配 Sentinel 的地址,

#sentinel

spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080feign.sentinel.enabled=true

指的是可以单独和 sentinel 集成没有可以单独去搜 sentinel,去下载。其次是找到 quick start,找到并加入它的包:

image.png

之后在E盘启动他的 jar 包找到他的监控面板,之后在浏览器8080登录,此时还没有实现监控,接下来调用微服务,来触发一次监控、数据采集,这个程序是9001 8087。熔断主要是和 sentinel 来对接起来,之后用改造过的9002启动,通过9002端口结合熔断的一个配置来实现熔断操作,9002与9001区别是9001的点熔端没有启用熔断。此时就有一些程序了比如实时监控等,包括请求次数等。流控规则:里面主要是有熔断限流等。此时用 hello java.调用,此时就在实时监控看到两个地方在调用并且变化是不一样的。此时如果触发熔断,在hi的上面加一个流控,阈值类型选择 QPS,单机阈值达到一个时就触发,这个只对 hi 起作用。此时这个 hi,此时就实现熔断最高就是一次。Hello 还是正常的。所以说 sentinel 控制台1.8.0是十分强大的工具,有监控,有降级,有热点,有授权等一系列工具,

和 spring cloud 也是十分支持。

相关文章
|
1月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
48 3
|
26天前
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
19 0
|
20天前
|
监控 Java 开发者
Spring Cloud中的服务熔断与降级
Spring Cloud中的服务熔断与降级
|
1月前
|
Java 开发者 Sentinel
Spring Cloud系列——使用Sentinel进行微服务保护
Spring Cloud系列——使用Sentinel进行微服务保护
35 5
|
1月前
|
监控 Java API
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
32 0
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
|
16天前
|
监控 Java 应用服务中间件
SpringCloud面试之流量控制组件Sentinel详解
SpringCloud面试之流量控制组件Sentinel详解
37 0
|
26天前
|
自然语言处理 监控 开发者
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
19 0
|
2月前
|
监控 Java Sentinel
Spring Cloud Sentinel:概念与实战应用
【4月更文挑战第28天】在分布式微服务架构中,确保系统的稳定性和可靠性至关重要。Spring Cloud Sentinel 为微服务提供流量控制、熔断降级和系统负载保护,有效预防服务雪崩。本篇博客深入探讨 Spring Cloud Sentinel 的核心概念,并通过实际案例展示其在项目中的应用。
51 0
|
6天前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
|
18天前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
49 1