【第27章】Spring Cloud之适配Sentinel

news2024/11/15 4:27:04

文章目录

  • 前言
  • 一、准备
    • 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: 8719
        dashboard: 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 {
    @Autowired
    private 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.coloradmin.cn/o/2122137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光伏电站的工程量造价怎么算的

光伏电站的工程量造价怎么算的 光伏电站的工程量造价是一个复杂且多变的过程&#xff0c;受多种因素影响&#xff0c;包括项目规模、设备选型、施工条件、地区差异、原材料价格波动等。以下是对光伏电站工程量造价的详细分析&#xff1a; 造价的构成&#xff1a; 设备的费用&…

分享人工智能训练师不同级别对应职位和薪酬

2024年4月&#xff0c;九部委联合发文《加快数字人才培育支撑数字经济发展行动方案&#xff08;2024—2026年&#xff09;》的通知&#xff08;以下简称“通知”&#xff09;。 重点将人工智能领域人才培养放在首位&#xff0c;可见人工智能训练师作为连接技术与应用的桥梁…

信息熵+互信息(信息增益)

文章目录 信息增益信息量信息熵条件熵信息增益 交叉熵->信息熵->KL散度 信息增益 信息量 信息奠基人香农&#xff08;Shannon&#xff09;认为“信息是用来消除随机不确定性的东西”&#xff0c;也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。 “太阳从…

代码随想录27期|Python|Day51|​动态规划|​115.不同的子序列|​583. 两个字符串的删除操作​|

115. 不同的子序列 本题是在原来匹配子序列的基础上增加了统计所匹配的子序列个数&#xff0c;也就是dp数组的定义和更新公式和原来的有所区别。 1、dp数组的定义 dp[i][j]表示以i-1和j-1为末尾的字符串中&#xff0c;给定字符串s包含目标字符串t的个数。注意这里不是长度。…

JMeter做接口测试,如何提取登录Cookie

用JMeter进行接口测试时&#xff0c;经常需要通过登录接口提取Cookie才能进行其他业务流程&#xff0c;如果cookie/token是在登录请求的响应报文里&#xff0c;那么可以通过正则表达式直接提取出来&#xff0c;但是如果Cookie不是在响应报文里&#xff0c;还可以怎么提取出来呢…

牛客小白月赛100(下)

ACM中的C题 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include<iostream> using namespace std; int main() {int n;cin>>n;if(n1)cout<<-1;else if(n%20)cout<<n/2;elsecout<<n/21; } 代码思路 一、总体思路 这段代码的目…

第二百二十一节 JPA教程 - JPA按ID查找示例

JPA教程 - JPA按ID查找示例 一旦我们将实体保存到数据库中&#xff0c;我们可以通过使用EntityManager中的find方法来检索它们。 以下代码显示如何使用find方法与实体id。 Person emp em.find(Person.class, 1L);例子 下面的代码来自Person.java。 package cn.w3cschool.…

Spring Boot 部署方案!打包 + Shell 脚本详解

本篇和大家分享的是springboot打包并结合shell脚本命令部署&#xff0c;重点在分享一个shell程序启动工具&#xff0c;希望能便利工作&#xff1b; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_p…

Telephony VOLTE配置

1、展锐 VOLTE配置 在配置运营商VOLTE业务时&#xff0c;虽然上层Carrierconfig默认配置VOLTE为关闭状态&#xff0c;但是发现只需要Modem侧配置为支持&#xff0c;上层就能够正常显示VOLTE开关。因此调查了一下相关逻辑 相关代码中可以看到只要"gsm.sys.sim.volte.allowe…

Enscape 4.1.0.2321 安装教程

软件介绍 Enscape 是专门为建筑、规划、景观及室内设计师打造的渲染产品&#xff0c;无需导入导出文件&#xff0c;在常用的软件内部即可看到逼真的渲染效果。 你无需了解记忆各种参数的用法&#xff0c;一切都是傻瓜式的一键渲染&#xff0c;你可以把精力更多地投入到设计中…

极限编程XP例题

答案&#xff1a;D 解析&#xff1a; 结对编程&#xff0c;一个人写代码&#xff0c;一个人看&#xff0c;由于是两个或两个以上的人负责&#xff0c;因此选项A 支持共同代码拥有和共同对系统负责是正确的 选项B 由于是一个人写一个人看&#xff0c;变相实现了代码审查 选项…

AI基础 L16 Logic Agents I

What is an Agent? • The main point about agents is they are autonomous: capable of acting independently, exhibiting control over their internal state • Thus: an agent is a computer system capable of autonomous action in some environment in order to mee…

网络编程(TCP通信)

【1】认识网络 网络&#xff1a;多设备通信 【2】IP地址 1.基本概念 IP地址是Internet中主机的标识Internet中的主机要与别的机器通信必须具有一个IP地址IP地址为32位&#xff08;IPv4&#xff09;或者128位&#xff08;IPv6&#xff09; NAT&#xff1a;公网转私网、私网转公网…

小样本目标定位:Few-shot Object Localization

论文&#xff1a;Few-shot Object Localization 代码&#xff1a;https://github.com/Ryh1218/FSOL 核心贡献&#xff1a; 1. 本文首次定义了小样本目标定位任务&#xff0c;为在标注数据有限的场景下进行目标定位提出了新的研究方向&#xff0c;并建立了高性能的基准。2. 提…

【详解!】什么是端点安全,端点安全策略如何设置?30秒带你了解端点安全!

端点&#xff0c;即接入网络的任何设备&#xff0c;如个人电脑、笔记本电脑、智能手机、平板电脑、服务器以及物联网(IoT)设备等&#xff0c;都是网络安全的潜在风险点。 端点安全&#xff0c;正是针对这些设备所采取的一系列安全措施&#xff0c;旨在保护它们免受恶意软件、未…

CSS【详解】图片相关样式(含object-fit ,object-position,lip-path,filter)

img 渲染图片&#xff0c;可以理解为一张镂空的白纸&#xff0c;通过镂空区域看到白纸下的图片。 图片尺寸 即镂空区域的大小 若未指定&#xff0c;则按图片原始尺寸显示&#xff1b;若指定&#xff0c;则默认按指定尺寸显示&#xff08;若指定尺寸的宽高比与原始的宽高比不同…

【虚拟化】KVM-virsh离线工具进行客户机虚拟机磁盘访问

目录 一、简介 二、常用离线命令 三、具体使用实例 1.virt-inspector 2.virt-cat 3.virt-edit 4.virt-df 5.virt-copy-out/virt-copy-in 6.guestmount 7.virt-diff 8.virt-customize 9.virt-sparsify 一、简介 Red Hat Enterprise Linux 7 提供多个 libguestfs 工具…

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…

OpenCV 与 YoloV3的结合使用:目标实时跟踪

目录 代码分析 1. YOLO 模型加载 2. 视频加载与初始化 3. 视频帧处理 4. 物体检测 5. 处理检测结果 6. 边界框和类别显示 7. 帧率&#xff08;FPS&#xff09;计算 8. 结果显示与退出 9. 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLO&#xff08…

C++之函数的分文件编写

1.创建test.h的头文件 2.创建test.cpp的源文件 3.在头文件中写函数的声明 4.在源文件中写函数的定义 调用测试&#xff1a;