5.SpringCloud:Sentinel服务流控与服务降级

目录

一、导览

二、Sentinel 基本概念

资源

规则

三、Sentinel控制台

四、Sentinel客户端(应用程序)

五、定义流控规则

六、定义资源

七、热点规则

八、API访问

九、规则持久化(规则中心)

十、在生产环境中使用Sentinel


一、导览

        Sentinel与Hystrix一样,都是Spring Cloud Circuit Breaker的具体实现(其实这句表述不严谨,因为Sentinel可以不依赖于Spring Cloud)。

Sentinel支持服务流控、熔断降级等功能。

Sentinel 的使用可以分为两个部分:

  • 核心库(Java 应用客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。是真正的规则执行者。
  • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。它只是一个控制台(控制台是可选的),本身不负责存储规则和流量控制。

二、Sentinel 基本概念

资源

资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。

只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。

规则

围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

三、Sentinel控制台Dashboard

Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。 (流控和服务降级规则的具体执行还是应用中的Sentinel,而不是控制台

Sentinel 控制台包含如下功能:

  • 查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。
  • 监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
  • 规则管理和推送:统一管理推送规则(但不存储规则,不执行规则)。
  • 鉴权:生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。

   1、下载:https://github.com/alibaba/Sentinel/releases

   2、运行:

java -Dserver.port=8383 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar

其中 -Dserver.port=8383 用于指定 Sentinel 控制台监听端口为 8383 

 3、启动后浏览器访问:http://IP:端口   (用户名密码默认都是sentinel)

 这里还看不到应用情况。因为这时没有应用向Sentinel报告情况。

四、Sentinel客户端(应用程序)

Sentinel本身是独立组件,可以不与Spring Cloud绑定。但是由于使用Spring Cloud比较多,这里也使用Spring为例。

在之前的工程(  以此工程为基础  https://blog.csdn.net/zyplanke/article/details/120860958 ) 的基础上。

1、增加sentinel依赖

  ------ 省略 ------
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>${springcloudalibaba.version}</version>
        </dependency>
  ------ 省略 ------

2、增加应用与控制台之间的互联参数。

以下方法一与方法二任选其一即可,两种配置效果等价

【方法一】:在Java启动时增加两个 JVM参数

-Dcsp.sentinel.dashboard.server=IP:8383
-Dcsp.sentinel.api.port=8719 

第1个JVM参数为:Sentinel控制台地址,该应用程序(客户端)会自动向

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba是一个基于Spring Cloud的开源框架,提供了丰富的微服务开发工具包,包括服务注册与发现、配置管理、消息总线、负载均衡、熔断降级、分布式事务、制、安全制、分布式追踪等功能。 Spring Cloud Alibaba与Nacos、Dubbo、Sentinel等组件协同工作,Nacos作为注册中心和配置中心,Dubbo作为RPC框架,Sentinel作为制和熔断降级组件,共同构建起完整的微服务生态体系。 使用Spring Cloud Alibaba进行服务注册和发现,可以通过注解@EnableDiscoveryClient开启服务注册与发现功能,并通过@FeignClient或@LoadBalanced注解实现服务调用和负载均衡。 使用Spring Cloud Alibaba进行服务治理,可以通过注解@EnableCircuitBreaker开启熔断降级功能,并通过@SentinelResource注解配置熔断降级规则。 使用Spring Cloud Alibaba进行熔断降级,可以通过Sentinel Dashboard进行实时监和管理,同时通过注解@SentinelRestTemplate实现对RestTemplate的熔断降级。 使用Spring Cloud Alibaba进行服务配置管理,可以通过注解@EnableConfigNacosConfig和@Value注解实现动态配置管理。 使用Spring Cloud Alibaba进行分布式事务管理,可以通过注解@EnableDistributedTransaction开启分布式事务管理功能,并通过@GlobalTransactional注解实现分布式事务的统一管理和制。 使用Spring Cloud Alibaba进行链路追踪,可以通过注解@EnableZipkinServer和@EnableZipkinClient开启链路追踪功能,并通过Sleuth和Zipkin实现对微服务调用链的追踪和分析。 使用Spring Cloud Alibaba进行服务,可以通过Sentinel进行实时和熔断降级,同时通过注解@SentinelResource实现对服务的限制。 Spring Cloud Alibaba支持微服务服务网关管理,可以通过注解@EnableZuulProxy或@EnableGateway开启服务网关功能,并通过Zuul或Gateway实现微服务的API网关管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值