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

news/2025/3/10 23:34:52/

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-democloud:nacos:# nacos的地址,集群形式添加多个地址server-addr: 192.168.3.54:80# nacos的账号username: nacos# nacos的密码password: nacosdiscovery:group: devopsnamespace: sitconfig:namespace: sitgroup: devopssentinel:transport:dashboard: 192.168.3.41:8080clientIp: 192.168.3.164config:# 加载两个dataId,要是key冲突,则后面的value会覆盖前面的valueimport:- 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、授权,就是表示该接口被调用的权限,有些安全性很高的接口,比如支付接口,就限制只能由某几个微服务才能调用。


http://www.ppmy.cn/news/1578205.html

相关文章

省市区数据最新json全国45380个省市区县乡镇街道

2025年01月10日更新&#xff0c;全国45380个省市区县乡镇街道&#xff0c;行政代码邮编代码json数据 包括北京市上海市天津市重庆市广东省广州市,韶关市,深圳市,珠海市,汕头市,佛山市,江门市,湛江市,茂名市,肇庆市,惠州市,梅州市,汕尾市,河源市,阳江市,清远市,东莞市,中山市,潮…

Java 中数据脱敏的实现

数据脱敏 首先&#xff0c;要思考一个问题&#xff0c;SpringBoot 查询到的一条数据是一个 Java 对象&#xff0c;为什么返回给前端时候&#xff0c;前端拿到的却是 JSON 格式的数据呢&#xff1f; 是因为 SpringBoot 默认采用了 Jackson 作为序列化器&#xff0c;而 Jackson…

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…

ArcGIS 工程文件到 ArcGIS Pro 的无缝迁移:详细步骤与技巧

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;ArcGIS 长期以来都是专业人士进行地图制作、空间分析和数据管理的重要工具。 随着技术的不断进步&#xff0c;Esri 公司推出了 ArcGIS Pro&#xff0c;这款新一代的 GIS 软件以其更强大的功能、更高效的性能和更直观…

初识Bert

在学习Bert之前我们先了解“递归神经网络&#xff08;RNN Recurrent neural network)” 和 “长短期记忆&#xff08;LSTM Long short-term memory)” 我们如果仅仅识别每个字的含义&#xff0c;那么在一句话中没有相同的字还是可以的但是如果一句话中有相同的字&#xff0c;那…

解释 HTTP 中的内容协商,如何根据客户端偏好返回合适的内容?

一、内容协商的本质与价值 内容协商&#xff08;Content Negotiation&#xff09;是HTTP协议中客户端与服务器就资源表现形式达成一致的协商机制。其核心价值在于&#xff1a;​用同一URI提供资源的不同表现形式&#xff0c;同时保证客户端获得最适合自身环境的内容版本。 典…

20250307-vue侦听器

当我们需要在状态变化时执行一些 “副作用”&#xff1a;例如更改 DOM&#xff0c;或是根据异步操作的结果去修改另一处的状态。 我们可以使用 watch 选项在每次响应式属性发生变化时触发一个函数。(响应式属性‌是指那些能够在被修改时自动更新视图的属性) 【 什么是 Promi…

使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用

使用 Docker 部署 Nginx&#xff0c;配置后端 API 轮询与多个子域名前端应用 在这篇博客中&#xff0c;我们将介绍如何通过 Docker 部署 Nginx 服务器&#xff0c;并配置 多个后端 API 的轮询负载均衡&#xff0c;同时通过 子域名 部署多个不同的前端应用。Nginx 将作为反向代…