使用sentinel作为熔断器

什么是sentinel

Sentinel,中文翻译为哨兵,是为微服务提供流量控制、熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的"雪崩"效应,为微服务系统提供了稳定性的解决方案。随着Hytrxi进入了维护期,不再提供新功能,Sentinel是一个不错的替代方案。通常情况,Hystrix采用线程池对服务的调用进行隔离,Sentinel才用了用户线程对接口进行隔离,二者相比,Hystrxi是服务级别的隔离,Sentinel提供了接口级别的隔离,Sentinel隔离级别更加精细,另外Sentinel直接使用用户线程进行限制,相比Hystrix的线程池隔离,减少了线程切换的开销。另外Sentinel的DashBoard提供了在线更改限流规则的配置,也更加的优化。

从官方文档的介绍,Sentinel 具有以下特征:

复制代码
丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。
完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
完善的 SPI 扩展点: Sentinel 提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。

下载sentinel dashboard

Sentinel dashboard提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能。您只需要对应用进行简单的配置,就可以使用这些功能。

注意: 集群资源汇总仅支持 500 台以下的应用集群,有大概 1 - 2 秒的延时。下载最新的sentinel dashboard,下载地址为https://github.com/alibaba/Sentinel/releases

下载完启动,启动端口为8748,启动命令如下:

java 复制代码
java -Dserver.port=9000 -jar sentinel-dashboard-2.0.0-alpha-preview.jar,打开sentinel服务

在pom文件加上spring cloud sentinel的依赖,如下:

java 复制代码
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

配置文件application.yml加上如下的配置:

java 复制代码
server:
  port: 8763

spring:
  application:
    name: consumer

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 18763
        dashboard: localhost:8748

feign:
  sentinel:
    enabled: true

通过feign.sentinel.enable开启Feign和sentinel的自动适配。配置sentinel的dashboard的地址。

通过这样简单的配置,Feign和sentinel就配置好了。再启动三个工程provider\consumer\gateway。

在浏览器上多次访问http://localhost:5000/consumer/hi-feign

在浏览器上访问localhost:8748,登陆sentinel的控制台,登陆用户为sentinel,密码为sentinel。

consumer服务的/hi-feign接口,增加一个流控规则:
qps为1,快速访问http://localhost:5000/consumer/hi-feign,会有失败的情况。

相关推荐
用户298698530146 分钟前
.NET 文档自动化:Spire.Doc 设置奇偶页页眉/页脚的最佳实践
后端·c#·.net
序安InToo37 分钟前
第6课|注释与代码风格
后端·操作系统·嵌入式
xyy12337 分钟前
C#: Newtonsoft.Json 到 System.Text.Json 迁移避坑指南
后端
洋洋技术笔记40 分钟前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang0540 分钟前
VS Code 配置 Markdown 环境
后端
navms43 分钟前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang0543 分钟前
离线数仓的优化及重构
后端
Nyarlathotep011344 分钟前
gin01:初探gin的启动
后端·go
JxWang051 小时前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang051 小时前
Windows Terminal 配置 oh-my-posh
后端