当前位置: 首页 > news >正文

【第27章】Spring Cloud之适配Sentinel

文章目录

  • 前言
  • 一、准备
    • 1. 引入依赖
    • 2. 配置控制台信息
  • 二、定义资源
    • 1. Controller
    • 2. Service
    • 3. ServiceImpl
  • 三、访问控制台
    • 1. 发起请求
    • 2. 访问控制台
  • 总结


前言

Spring Cloud Alibaba 默认为 Sentinel 整合了 Servlet、RestTemplate、FeignClient 和 Spring WebFlux。Sentinel 在 Spring Cloud 生态中,不仅补全了 Hystrix 在 Servlet 和 RestTemplate 这一块的空白,而且还完全兼容了 Hystrix 在 FeignClient 中限流降级的用法,并且支持运行时灵活地配置和调整限流降级规则。

这里我们为提供者服务整合Sentinel,添加流量控制和服务降级,保证应用程序的健壮和稳定性。


一、准备

1. 引入依赖

<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>${spring-cloud-alibaba.version}</version>
</dependency>

2. 配置控制台信息

连接到控制台是为了更好地观察和使用Sentinel

spring:cloud:sentinel:transport:port: 8719dashboard: localhost:8080

二、定义资源

1. Controller

package org.example.nacos.provider.controller;import org.example.nacos.provider.service.SentinelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;/*** Create by zjg on 2024/8/26*/
@RestController
public class SentinelController {@Autowiredprivate SentinelService service;@GetMapping(value = "/hello/{name}")public String apiHello(@PathVariable("name") String name) {return service.sayHello(name);}
}

2. Service

package org.example.nacos.provider.service;/*** Create by zjg on 2024/8/26*/
public interface SentinelService {public String sayHello(String name);
}

3. ServiceImpl

这里我们使用注解@SentinelResource定义了一个资源

package org.example.nacos.provider.service.impl;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.example.nacos.provider.service.SentinelService;
import org.springframework.stereotype.Service;/*** Create by zjg on 2024/8/26*/
@Service
public class SentinelServiceImpl implements SentinelService {@Override@SentinelResource(value = "sayHello")public String sayHello(String name) {return "Hello, " + name;}
}

三、访问控制台

1. 发起请求

在这里插入图片描述

2. 访问控制台

在这里插入图片描述

大家从控制台可以看到我们访问的请求和自定义的资源sayHello都已经成功添加到控制台,我们可以通过控制台进一步完成流控和熔断等等功能。


总结

回到顶部
更多内容请查看

这里讲一下为什么要使用注解去完成资源的定义,因为其他方式或多或少存在代码侵入,我感觉不友好,而使用注解的方式,可以很轻松地完成这个功能。

http://www.lryc.cn/news/434672.html

相关文章:

  • 怎么debug python
  • Java 递归
  • 获取业务库的schema信息导出成数据字典
  • 力扣: 快乐数
  • 一般位置下的3D齐次旋转矩阵
  • 每日一题——第八十六题
  • 十、组合模式
  • 一分钟了解网络安全风险评估!
  • 【springsecurity】使用PasswordEncoder加密用户密码
  • 从0到1实现线程池(C语言版)
  • Visual studio自动添加头部注释
  • 【C#生态园】提升性能效率:C#异步I/O库详尽比较和应用指南
  • 管理医疗AI炒作的三种方法
  • VMware Workstation Pro Download 个人免费使用
  • DevOps平台搭建过程详解--Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
  • Nginx之日志切割,正反代理,HTTPS配置
  • Mysql数据量大,如何拆分Mysql数据库(垂直拆分)
  • 机器人可能会在月球上提供帮助
  • 真实案例分享:零售企业如何避免销售数据的无效分析?
  • ctfshow-文件包含
  • Qt事件处理机制
  • vue axios 如何读取项目下的json文件
  • 燃气涡轮发动机性能仿真程序GSP12.0.4.2使用经验(二):使用GSP建立PG9351FA燃气轮机性能仿真模型
  • 迟滞比较器/施密特触发器
  • LeetCode_sql_day22(1112.每位学生的最高成绩)
  • OFDM信号PARP的CCDF图
  • LeetCode之高频SQL50题
  • echarts多组堆叠柱状图
  • 打造安心宠物乐园:EasyCVR平台赋能猫咖/宠物店的智能视频监控解决方案
  • springboot请求传参常用模板