欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

26、Sentinel:服务熔断Hystrix的替换方案-Alibaba Sentinel

程序员文章站 2022-06-13 15:38:53
...

18年底Netflix官方宣布Hystrix 已经足够稳定,不再积极开发 Hystrix,该项目将处于维护模式。就目前
来看Hystrix是比较稳定的,并且Hystrix只是停止开发新的版本,并不是完全停止维护,Bug什么的依
然会维护的。因此短期内,Hystrix依然是继续使用的。但从长远来看,Hystrix总会达到它的生命周
期,那么Spring Cloud生态中是否有替代产品呢?

1 替换方案介绍

Alibaba Sentinel
Sentinel 是阿里巴巴开源的一款断路器实现,目前在Spring Cloud的孵化器项目Spring Cloud Alibaba
中的一员Sentinel本身在阿里内部已经被大规模采用,非常稳定。因此可以作为一个较好的替代品。
Resilience4J
Resilicence4J 一款非常轻量、简单,并且文档非常清晰、丰富的熔断工具,这也是Hystrix官方推荐的
替代产品。不仅如此,Resilicence4j还原生支持Spring Boot 1.x/2.x,而且监控也不像Hystrix一样弄
Dashboard/Hystrix等一堆*,而是支持和Micrometer(Pivotal开源的监控门面,Spring Boot 2.x
中的Actuator就是基于Micrometer的)、prometheus(开源监控系统,来自谷歌的论文)、以及
Dropwizard metrics(Spring Boot曾经的模仿对象,类似于Spring Boot)进行整合。

2 Sentinel概述

1 Sentinel简介

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控
制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
1、丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
2、完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 SpringCloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel 的主要特性:
26、Sentinel:服务熔断Hystrix的替换方案-Alibaba Sentinel

2 Sentinel与Hystrix的区别

26、Sentinel:服务熔断Hystrix的替换方案-Alibaba Sentinel

3 迁移方案

26、Sentinel:服务熔断Hystrix的替换方案-Alibaba Sentinel

4 名词解释

Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合
Dashboard 可以取得最好的效果。
使用 Sentinel 来进行熔断保护,主要分为几个步骤:

  1. 定义资源
  2. 定义规则
  3. 检验规则是否生效
    资源:可以是任何东西,一个服务,服务里的方法,甚至是一段代码。
    规则:Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则和 热点参数规则。Sentinel 的所有规则都可以在内存态中动态地查询及修改,修改之后立即生效先把可能需要保护的资源定义好,之后再配置规则。也可以理解为,只要有了资源,我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源。

3 Sentinel中的管理控制台

1 下载启动控制台

(1)获取 Sentinel 控制台
您可以从官方网站中下载最新版本的控制台 jar 包,下载地址如下:
https://github.com/alibaba/Sentinel/releases/download/1.6.3/sentinel-dashboard-1.6.3.jar
(2)启动
使用如下命令启动控制台:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 - Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

其中 -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080 。
从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,
默认用户名:sentinel。
默认密码:sentinel 。
启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

2 客户端能接入控制台(将所有的服务交给控制台管理)

控制台启动后,客户端需要按照以下步骤接入到控制台。
(1) 引入JAR包
客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信。可以通过 pom.xml 引入 JAR 包:

父工程引入

<dependency> 
	<groupId>com.alibaba.cloud</groupId> 
	<artifactId>spring-cloud-alibaba-dependencies</artifactId> 
	<version>2.1.0.RELEASE</version> 
	<type>pom</type> 
	<scope>import</scope> 
</dependency>

子工程引入

<dependency> 
<groupId>com.alibaba.cloud</groupId> 
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> 
</dependency>

3、客户端配置启动参数

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080   #sentinel控制台的请求地址

4、查看机器列表以及健康情况

默认情况下Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包。也可以配置
sentinel.eager=true ,取消Sentinel控制台懒加载。
打开浏览器即可展示Sentinel的管理控制台
26、Sentinel:服务熔断Hystrix的替换方案-Alibaba Sentinel