Sentinel 整合SpringCloud的详细教程

Spring Cloud Alibaba Sentinel 是阿里巴巴提供的,致力于提供微服务一站式解决方案,Spring Cloud Alibaba 默认为 Sentinel 整合了,ServeLet、RestTemplate、FeignClient 和 Spring Flux。在 Spring 的生态中不仅不全了 Hystrix 在 ServeLet 和 RestTemplate 这一块的空白,而且还完美的兼容了 Hystrix 在 Feign 中的限流降级用法,并支持运行时灵活的配置和调整限流降级规则。

引入依赖:

<!--Sentinel 整合SpringCloud 的依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>

配置文件:

(入门使用中,应用名称使用的 JVM 参数设置的,整合 SpringCloud 就不需要那样了,配置文件中配置了应用的名称后,Sentinel 会自动加载)

# 设置应用的名称
spring:
  application:
    name: springCloudSentinel
  cloud:
    sentinel:
      transport:

        #设置Sentinel控制台的主机地址和端口号
        dashboard: localhost:9000

编写测试 Controller ,控制台添加 Sentinel_Cloud 资源 限流测试

@SentinelResource(value = "Sentinel_Cloud",blockHandler = "exceptionHandler")
@GetMapping("/sentinelCloud")
public String sentinelCloud(){
    //使用限流规则
    return "Sentinel_Cloud,成功调用";
}

限流时调用的方法:

/**
 * 定义降级 / 限流 的处理函数
 *
 * @param exception
 * @return
 */
public String exceptionHandler(BlockException exception) {
    exception.printStackTrace();
    return "Sentinel_Cloud,访问限流";
}

Sentinel整合Feign (OpenFeign)

Sentinel适配了Feign组件。如果想要使用,除了引用spring-cloud-starter-alibaba-sentinel的依赖,还需要两个步骤:

配置打开Sentinel对Feign的支持:feign.sentinel.enable=true

加入spring-cloud-starter-openfeign依赖使Sentinel starter自动化配置类生效。

# 设置应用的名称
spring:
  application:
    name: springCloudSentinel
  cloud:
    sentinel:
      transport:

        #设置Sentinel控制台的主机地址和端口号
        dashboard: localhost:9000

# 开启 Sentinel 对 Feign 的支持
feign:
  sentinel:
    enabled: true

服务端调用方Controller

@GetMapping("/feignHello")
public String feignHello(){
    return feignClient.feignHello();
}

服务提供方 FeignClient

@FeignClient(contextId = "testFeignClient", value = "注册中心中服务的名称", fallback = FeignFallbackService.class)
public interface TestFeignClient {

   /**
    * OpenFeign 远程调用的方法
    *
    * @return
    */
   @GetMapping("/test/feignHello")
   String feignHello();
}

提供一个 FeignClient 接口的实现类,作为限流的处理方法

@Service
public class FeignFallbackService  implements TestFeignClient{
   @Override
   public String feignHello() {
      return "Feign 远程调用限流了";
   }
}

Sentinel 控制台添加限流规则:

请求方式:http://服务模块注册中心名称/test/feignHello

到此这篇关于Sentinel 之 整合SpringCloud的文章就介绍到这了,更多相关Sentinel 整合SpringCloud内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springcloud sentinel安装和使用方法解析

    作为阿里版的hystrix,sentinel简化了配置方式,提供了可视化界面网站和便捷的配置方式,更加贴合实际的使用方式,各种优点使得sentinel成为服务降级熔断流控等的最佳选择. 1.安装启用 https://github.com/alibaba/Sentinel/releases 官网选择合适的版本下载,其本体是jar文件. java -jar sentinel-dashboard-1.7.2.jar 由于下载的安装包是jar,所以直接在cmd中启动即可. 登录地址默认是localhos

  • SpringCloud-Alibaba-Sentinel-配置持久化策略详解

    前言: Sentinel的如果没有配置持久化的话配置一些 流控 和服务降级 从启项目就会置空所以需要持久化的操作 动态规则扩展 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS.文件,甚至是 VCS 等.这样做的方式是简单,缺点是无法及时获取变更: 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos.Zookeeper 等配置中心.这种方式有更好的实时性和一致性保证 案例用Nacos 步奏: pom 添加nacos 对sen

  • 基于SpringCloud手写一个简易版Sentinel

    Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. 不可否认的是,Sentinel功能丰富,并且在提供好用的dashboard提供配置,但是Sentinel在集成到项目中时需要引入多个依赖,并且需要阅读相关文档,以及dashboard中的相关配置才可以接入到项目中,这个过程还是较为复杂的. 如果我们的项目并不需要这么多的功能,只是需要当某个方法或者某个功能发生异常的时

  • SpringCloud-Alibaba-Sentinel服务降级,热点限流,服务熔断

    前言: 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一.一个服务常常会调用别的模块,可能是另外的一个远程服务.数据库,或者第三方 API 等.例如,支付的时候,可能需要远程调用银联提供的 API:查询某个商品的价格,可能需要进行数据库查询.然而,这个被依赖服务的稳定性是不能保证的.如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用 熔断策略 Sentin

  • Sentinel 整合SpringCloud的详细教程

    Spring Cloud Alibaba Sentinel 是阿里巴巴提供的,致力于提供微服务一站式解决方案,Spring Cloud Alibaba 默认为 Sentinel 整合了,ServeLet.RestTemplate.FeignClient 和 Spring Flux.在 Spring 的生态中不仅不全了 Hystrix 在 ServeLet 和 RestTemplate 这一块的空白,而且还完美的兼容了 Hystrix 在 Feign 中的限流降级用法,并支持运行时灵活的配置和调整

  • Java的springcloud Sentinel是什么你知道吗

    目录 Sentinel 是什么? 概述 Sentinel 的历史: 历史 Sentinel 分为两个部分: 两部分 基本概念及作用 基本概念: 主要作用: Sleuth 概述 zipkin分布式监控客户端 基本概念 总结 Sentinel 是什么? 概述 分布式系统的流量防卫兵 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级系统负载保护等多个维度保护服务的稳定性. Sentinel 的历史: 历史 2012 年,Sentinel 诞

  • Java之springcloud Sentinel案例讲解

    一.Sentinel是什么? Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案. 它以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来保护服务的稳定性. 二.使用步骤 1.下载地址 下载地址:https://github.com/alibaba/Sentinel/releases java -jar sentinel-dashboard-1.7.0.jar 访问:http://localhost:8080 用户名密码:sentinel/sen

  • Java之SpringCloudAlibaba Sentinel组件案例讲解

    Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. 官网:https://github.com/alibaba/Sentinel 中文官网:https://github.com/alibaba/Sentinel/wiki Sentinel与Hystrix的区别 由于Hystrix不再积极的开发,进入维护阶段,现在越来越多的开发者在项目中使用Spring Cloud Al

  • Sentinel整合Feign流程详细讲解

    修改84模块 84消费者调用提供者9003 Feign组件一般是消费侧 重点依赖 <!--SpringCloud openfeign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 激活Sentinel对Fei

  • SpringBoot整合MyBatis超详细教程

    1.整合MyBatis操作 前面一篇提到了SpringBoot整合基础的数据源JDBC.Druid操作,实际项目中更常用的还是MyBatis框架,而SpringBoot整合MyBatis进行CRUD也非常方便. 下面从配置模式.注解模式.混合模式三个方面进行说明MyBatis与SpringBoot的整合. 1.1.配置模式 MyBatis配置模式是指使用mybatis配置文件的方式与SpringBoot进行整合,相对应的就有mybatis-config.xml(用于配置驼峰命名,也可以省略这个文

  • SpringBoot整合mybatis-plus进阶详细教程

    目录 前言 wapper介绍 : 条件构造器 AbstractWrapper 一.什么是AbstractWrapper 二.QueryWrapper(LambdaQueryWrapper) 1.QueryWrapper用法示例 2.LambdaQueryWrapper用法示例 三.UpdateWrapper(LambdaUpdateWrapper) 1.UpdateWrapper用法示例 2.LambdaUpdateWrapper用法示例 mybatis-plus的插件 一.分页插件 1.配置分

  • Springboot整合Redis的详细教程分享

    目录 1.Docker 安装 Redis 1.1 下载镜像 1.2 创建配置文件 1.3 启动Redis 1.4 进入Redis容器 1.5 redis 可视化工具 2.SpringBoot 整合Redis缓存 2.1 安装Redis 2.2 引入依赖 2.3 配置Redis地址端口 2.4 测试 1.Docker 安装 Redis 1.1 下载镜像 docker pull redis:6.2.6 1.2 创建配置文件 mkdir -p /mydata/redis/conf touch /myd

  • 基于SpringBoot整合SSMP的详细教程

    目录 基于SpringBoot实现SSMP整合 整合JUnit 整合MyBatis 整合MyBatis-Plus 总结 基于SpringBoot实现SSMP整合 SpringBoot之所以好用,就是它能方便快捷的整合其他技术,这里我们先介绍四种技术的整合: 整合JUnit 整合MyBatis 整合MyBatis-Plus 整合Druid 整合JUnit ​ SpringBoot技术的定位用于简化开发,再具体点是简化Spring程序的开发.所以在整合任意技术的时候,如果你想直观感触到简化的效果,你

  • springboot整合apache ftpserver详细教程(推荐)

    一.Apache ftpserver相关简介 Apache FtpServer是100%纯Java FTP服务器.它被设计为基于当前可用的开放协议的完整且可移植的FTP服务器引擎解决方案.FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行,也可以嵌入Java应用程序中.我们还提供对Spring应用程序内集成的支持,并以OSGi捆绑软件的形式提供我们的发行版.默认的网络支持基于高性能异步IO库Apache MINA.使用MINA,FtpServer可以扩展到大量

  • SpringBoot整合Jackson超详细用法(附Jackson工具类)

    目录 一.Jackson简介 二.Json简介 三.springboot整合Jackson 1.创建项目 2.导入坐标 3.配置文件 4.实体类 5.测试类 一.Jackson简介 说明:本篇讲的是Jackson的详细用法,Jackson工具类在文章最后,直接复制粘贴即可使用. Jackson是公司中必用的组件之一,常用的还用阿里的Fastjson,但是由于一些原因bug与漏洞是在是太多,在注重安全的公司直接被pass,还有就是谷歌的Gson(这个没用过不太了解). Spring MVC 的默认

  • Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    一.摘要 这篇文章将介绍Spring整合Mybatis 如何完成SqlSessionFactory的动态切换的.并且会简单的介绍下MyBatis整合Spring中的官方的相关代码. Spring整合MyBatis切换SqlSessionFactory有两种方法 第一. 继承SqlSessionDaoSupport,重写获取SqlSessionFactory的方法. 第二.继承SqlSessionTemplate 重写getSqlSessionFactory.getConfiguration和Sq

  • Spring+SpringMVC+MyBatis整合详细教程(SSM)

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下.这次,先说说三大框架整合过程.个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就

随机推荐