Spring Cloud Alibaba组件之Sentinel
目录
一 引入Sentinel学习
二 Sentinel入门
三 搭建Sentinel Dashboard
四 Springboot项目接入Sentinel
五 接入限流埋点
六 限流配置
七 熔断降级
八 熔断降级Spring Cloud示例
九 黑白名单(授权规则)
十 持久化
十一 Spring Cloud Alibaba Sentinel三种保护应用方式
一 引入Sentinel学习
提起Spring Cloud的限流降级组件,一般首先想到的是Netflix的Hystrix。
不过就在2018年底,Netflix宣布不再积极开发Hystrix,该项目将处于维护模式。官方表示1.5.18 版本的Hystrix已经足够稳定,可以满足Netflix 现有应用的需求,所以接下来其会把焦点转向对于自适应的实现,更多关注对应用程序的实时性能做出响应。对于新应用的熔断需求,将采用其它项目实现,Netflix推荐了Resilience4j。
作为Spring Cloud Netflix重要套件,Hystrix已经成为保障微服务稳定性的首选应用。其实除了Netflix和Resilience4j,限流降级还有一个新的选择,就是阿里巴巴的Sentinel组件。
二 Sentinel入门
官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html
1 什么是Sentinel?
1.1 问题:
随着微服务的流行,服务与服务之间的调用稳定性变得越来越重要;
1、当服务访问量达到一定程度,流量扛不住的时候,该如何处理?(限流)
2、服务之间相互依赖,当服务B出现响应时间过长,影响到服务A的响应(A调用B),进而产生连锁反应,直至影响整个依赖链上的所有服务(雪崩),该如何处理?(熔断降级)
这是分布式、微服务开发不可避免的问题。
1.2 Sentinel是什么?
Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案,随着微服务的流行,服务和服务之间的稳定性变得越来越重要。它以流量为切入点,从流量控制,熔断降级,系统负载保护等多个维度来保护服务的稳定性。
2 Sentinel的特征
1、丰富的应用场景:Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围),消息削峰填谷。集群流量控制,实时熔断下游不可用应用等。
2、完备的实时监控:Sentinel提供了实时的监控功能。通过控制可以看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。
3、广泛的开源生态:Sentinel提供开箱即用的与其他开源框架/库的整合模块,例如与SpringCLoud,Dubbo,gRPC的整合。只需要进入相应的依赖并进行简单的配置即可快速地接入Sentinel。
4、完善的SPI扩展点:Sentinel提供简单易用,完善的SPI扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理,适配动态数据源等。
3 Sentinel组成
Sentinel分为两个部分,具体如下:
1、核心库(Java客户端):不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo/Spring Cloud等框架也有比较好的支持(你的微服务程序,可以直接添加sentinel.jar包)。
2、控制台(Dashboard)基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器(因为控制台是使用springboot开发,springboot内嵌了tomcat容器)。
这里我们先学习一下控制台的使用方式。
三 搭建Sentinel Dashboard
将应用接入Sentinel,最好搭建Sentinel控制台,可以在控制台上配置规则。
Dashboard是Alibaba写好的SpringBoot程序,我们直接下载启动即可.
1 下载Sentinel Dashboard
下载地址:https://github.com/alibaba/Sentinel/releases
2 启动控制台
我们可以在Linux系统或者Windows系统启动Sentinel控制台,这里是直接在Windows上启动
#直接使用jar命令启动项目(控制台本身是一个SpringBoot项目) java -Dserver.port=9090 -jar sentinel-dashboard-1.8.5.jar
其中,-Dserver.port=9090 代表控制台项目的端口号