SpringCloud系列教程(十三):Sentinel流量控制

SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Sentinel,它是为了控制流量和控制服务的健壮性而做的一款工具,也是非常符合我们日常工作中面对的那些非功能性要求。

开始操作之前,不得不说一下关于微服务的限流和熔断,限流通常用在一些秒杀的场景,为了防止大量请求突然间涌进服务器导致服务宕机,所以把一部分请求故意中断掉,从而保护我们的服务器稳定运行;熔断就是在服务出现亚健康情况时,减少流量进入,从而尽可能的让客户的使用不受影响,如果服务彻底失效,那么流量就完全不再分配给故障节点,但是有时候过一段时间故障节点会自己恢复,所以我们还要能过一段时间把恢复正常的节点纳入进来。从我个人理解来看,其实这两个功能有点超出开发人员范围,更接近运维人员的工作,所以我特别推崇云原生service mesh的架构,把限流和熔断放在容器层实现。

1、搭建Sentinel非常简单,下载jar文件,直接运行就可以了,Sentinel不用搞什么集群模式,因为它不参与业务功能,即使宕机了也不影响业务的正常运转,具体说其实就是一个配置管理中心。

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

通过浏览器打开:http://192.168.3.41:8080/#/login 账号密码都是sentinel。

2、还是以nacos-client-demo这个项目为例子,添加对sentinel的依赖。

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

3、修改application.yml文件,配置sentinel信息。

spring:
  application:
    # nacos会使用该名字进行注册发现
    name: nacos-client-demo
  cloud:
    nacos:
      # nacos的地址,集群形式添加多个地址
      server-addr: 192.168.3.54:80
      # nacos的账号
      username: nacos
      # nacos的密码
      password: nacos
      discovery:
        group: devops
        namespace: sit
      config:
        namespace: sit
        group: devops
    sentinel:
      transport:
        dashboard: 192.168.3.41:8080
        clientIp: 192.168.3.164
  config:
    # 加载两个dataId,要是key冲突,则后面的value会覆盖前面的value
    import:
      - nacos:user?refresh=true
      - nacos:project?refresh=true
server:
  servlet:
    context-path: /${spring.application.name}
  port: 8081
mj:
  jwt:
    ttl: 30

clientIp可以不写,不过有时候默认的ip可能读取本地ip不准确(比如第一个网卡是虚拟网卡)。

4、刚开始sentinel里面是什么都没有的,需要调用一下接口,sentinel才能抓取到数据从而更新页面。

curl -H "token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InpoYW5nc2FuIiwidXNlcklkIjoiMTIzIiwiZXhwIjoxN zQwNzU1NDE2fQ.Xqpgk_lqhpxIIvxSo70mb3LQuozREIOituLyZKKYYaA" http://127.0.0.1:8888/nacos-client-demo/api/talk

5、这样就可以通过界面对接口进行操作了

6、限流,就是对这个接口做流量限制,防止大流量把服务器冲垮,像秒杀这种场景,我们平时抢优惠卷失败就是这个功能在作祟。

如果勾选集群,还可以控制集群总量,或者也可以是单机阈值,非常方便。

7、熔断,就是对服务亚健康状态时的减少流量,如果宕机,就彻底不分配流量。

熔断时长就是配置宕机之后如果恢复,SpringCloud会过一会再来查看是不是真正恢复了,没恢复就继续熔断,恢复了就又纳入到集群里面。

8、热点规则,这个比限流更精细,就是用来限制http请求里某个参数的请求并发数,比如userId,让这个用户不要那么频繁操作。

参数索引就是表示http请求时候以哪个参数为限制标准。

9、授权,就是表示该接口被调用的权限,有些安全性很高的接口,比如支付接口,就限制只能由某几个微服务才能调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984808.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware安装欧拉操作系统(openEuler)第二节

摘要&#xff1a; 本篇文章接上篇《VMware安装欧拉操作系统&#xff08;openEuler&#xff09;第一节》&#xff0c;上一篇写到vmware workstation 17中创建openEuler虚拟机&#xff0c;本篇将详细介绍openEuler操作系统初始化以及相关配置的详细内容。 VMware安装欧拉操作系统…

[数据结构]并查集--C++版本的实现代码

目录 并查集的基本框架 查找一个元素在哪一个集合 判断两个元素是否在同一个集合 将两个集合进行合并 查询有多少组 测试 大学班级的同学会来自于五湖四海&#xff0c;每个人的家乡可能都不相同&#xff0c;那么如何将相同省份的同学连接到一块&#xff0c;也就是按省份进…

基于SpringBoot+Vue的瑜伽课体验课预约系统【附源码】

基于SpringBootVue的瑜伽课体验课预约系统 一、系统技术说明二、运行说明三、系统的演示四、系统的核心代码演示 一、系统技术说明 框架&#xff1a;SpringbootVue 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软…

【编译器】VSCODE烧录ESP32-C3——xiaozhi智能聊天机器人固件

【编译器】VSCODE烧录ESP32-C3——xiaozhi智能聊天机器人固件 文章目录 [TOC](文章目录) 前言一、方法一&#xff1a;使用固件烧录工具1. 安装CH340驱动2. 打开FLASH_DOWNLOAD文件3. 选择芯片类型和烧录方式4. 选择烧录文件5. 参数配置 二、方法二&#xff1a;VSCODE导入工程1.…

【C++】 —— 笔试刷题day_1

为了锻炼自己写代码的思路&#xff0c;开始每日刷题&#xff0c;加油&#xff01;&#xff01;&#xff01; 第一题 数字统计 题目要求&#xff1a; ​ 给定一个范围 [L , R] 求出数字L在该区间内出现的次数。&#xff08;其中1<L<R<10000&#xff09; 算法思路&…

R语言和RStudio安装

整体还是比较简单的&#xff0c;主要是记录个流程。 官方镜像站列表R语言官网 1 安装R&#xff08;2025/3/6&#xff09; R语言官网&#xff1a;The R Project for Statistical Computing 打开之后就Hello world一下吧 配置环境变量 2 安装RStudio 下载地址&#xff1a;htt…

计算机视觉应用|自动驾驶的感知革命:多传感器融合架构的技术演进与落地实践

一、引言 自动驾驶的终极目标是实现比人类驾驶更安全、更高效的交通系统。其核心挑战在于如何让机器像人类一样感知和理解复杂环境。然而&#xff0c;人类驾驶员依赖视觉、听觉和触觉的多模态信息&#xff0c;而自动驾驶系统则需要通过传感器和算法模拟这一过程。当前&#xf…

高效自动化测试:打造Python+Requests+Pytest+Allure+YAML的接口测试框架

一、背景 在快节奏的开发周期中&#xff0c;如何确保接口质量&#xff1f;自动化测试是关键。通过构建标准化、可复用的测试框架&#xff0c;能显著提升测试效率与准确性&#xff0c;为项目质量保驾护航[1][7]。 二、目标 ✅ 核心目标&#xff1a; ● 实现快速、高效的接口测试…

速算迷你世界脚本UI

--[[ --数学速算主界面 local UI"6996144362677448610" local v"6996144362677448610_" --自定义玩家数据界面 --显示界面分类 -- --称号积分幼儿园0学前班50小学生200初中生500高中生1000大学生2000研究生5000博士生10000教授50000 local A {["主屏幕…

『PostgreSQL』 Ubuntu 系统下PG15的安装与 PGVector 配置指南

&#x1f4e3;读完这篇文章里你能收获到 &#x1f4e6; 学会如何在 Ubuntu 上安装最新的 PostgreSQL 15 数据库。&#x1f511; 掌握修改 PostgreSQL 管理员密码和配置远程连接的方法。&#x1f310; 了解如何启用 PGVector 插件&#xff0c;实现向量存储和多种距离计算。&…

关于在electron(Nodejs)中使用 Napi 的简单记录

当我们使用electron想要集成一个C SDK实现很底层的算法逻辑就有可能与C SDK进行数据通信。 Napi 应该是比较好的选择&#xff0c;因为C本身的运行速度很快&#xff0c;使用Napi也能很大程度上保证软件的兼容性、又不会阻塞C线程、还可以很简单的与C 实现数据传递。 开始使用 安…

vscode(cursor)配置python环境,含远程调试

一、本地配置 1.1 安装python插件 1.2 配置python环境 在右下角就可以切换python环境&#xff0c;太简单了&#xff01; 1.3 Debug说明 打断点直接开启&#xff01; 在debug的过程中&#xff0c;还可以输入打印中间变量或者做一些测试 二、远程连接 2.1 下载远程工具 2.2 连…

S19文件格式详解:汽车ECU软件升级中的核心镜像格式

文章目录 引言一、S19文件格式的起源与概述二、S19文件的核心结构三、S19在汽车ECU升级中的应用场景四、S19与其他格式的对比五、S19文件实例解析六、工具链支持与安全考量七、未来趋势与挑战结语引言 在汽车电子控制单元(ECU)的软件升级过程中,S19文件(也称为Motorola S-…

怎么使用数据集微调大模型LLM

怎么使用数据集微调大模型LLM 目录 怎么使用数据集微调大模型LLM项目运行后目录结构1. 导入必要的库2. 准备训练数据3. 加载模型与分词器4. 数据预处理5. 配置训练参数(CPU 专用)6. 训练与保存完整可运行代码,调试了2天,保证可用项目运行后目录结构 1. 导入必要的库 from …

深度评测DeepSeek、ChatGPT O1和谷歌Gemini AI应用开发场景 - DeepSeek性能完胜!

下面我会展示我为期一周的实验结果&#xff0c;创作不宜&#xff0c;希望大家关注我&#xff0c;以后多多互3&#xff01;前一阵我在互联网上看到很多关于DeepSeek R1的讨论&#xff0c;这个开源模型据说可以媲美&#xff0c;甚至优于像OpenAI o1这样的付费模型。 由于我在日常…

ubuntu局域网部署stable-diffusion-webui记录

需要局域网访问&#xff0c;如下设置&#xff1a; 过程记录查看源码&#xff1a; 查看源码&#xff0c;原来修改参数&#xff1a;--server-name 故启动&#xff1a; ./webui.sh --server-name0.0.0.0 安装下载记录&#xff1a; 快速下载可设置&#xff1a; export HF_ENDPOI…

数智读书笔记系列015 探索思维黑箱:《心智社会:从细胞到人工智能,人类思维的优雅解读》读书笔记

引言 《The Society of Mind》&#xff08;《心智社会》&#xff09;的作者马文・明斯基&#xff08;Marvin Minsky&#xff09;&#xff0c;是人工智能领域的先驱和奠基者之一 &#xff0c;1969 年获得图灵奖&#xff0c;被广泛认为是对人工智能领域影响最大的科学家之一。他…

2.1 Vite + Vue 3 + TS 项目脚手架深度配置

文章目录 **一、环境准备与技术选型****二、项目初始化与基础架构****三、工程化配置深度优化****四、代码规范与质量保障****五、Vue 3 深度集成****六、TypeScript 高级配置****七、第三方库集成****八、构建优化策略****九、企业级最佳实践****十、扩展配置参考****本章核心…

利用FatJar彻底解决Jar包冲突(一)

利用FatJar彻底解决Jar包冲突 序FatJar的加载与隔离⼀、 FatJar概念⼆、FatJar的加载三、FatJar的隔离四、隔离机制验证五、 FatJar的定位六、 打包注意点 序 今天整理旧电脑里的资料&#xff0c;偶然翻到大概10年前实习时写的笔记&#xff0c;之前经常遇到Java依赖冲突的问题…

C/C++蓝桥杯算法真题打卡(Day4)

一、P11041 [蓝桥杯 2024 省 Java B] 报数游戏 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;// 计算第 n 个满足条件的数 long long findNthNumber(long long n) {long long low 1, high 1e18; // 二分查找范围while (low < high) {lo…