Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践

 一、简介

        Sentinel 作为一款强大的流量控制组件,能够对系统入口流量进行精准控制,有效防止服务因突发流量冲击引起服务雪崩,进而导致服务瘫痪,确保服务的稳定性和可靠性。

        Nacos 作为配置管理和服务发现平台,实现了配置的集中化存储和管理,使得微服务的配置变更更为灵活、高效,减少了了因配置错误导致的故障。

        Sentinel 与 Nacos的整合后可以从 Nacos 获取限流规则等配置信息,实现配置动态更新,无需重启服务即可调整流量控制策略,提高了运维效率和和灵活性, 

        总而言之,Sentinel 与 Nacos的整合不仅强化了微服务的流量控制能力,还实现了配置的集中化、动态化管理,是提升系统稳定性和运维效率的关键措施,对于构建高可用、易维护的微服务架构具有深远的意义。

        关于 Sentinel 与 Nacos 的详细介绍已经在在往期的文章中介绍过,这篇文章介绍如何将二者整合,构建稳定的微服务,增强服务稳定性。

        sentinel 主要特性

二、集成 Sentinel 与 Nacos

        项目结构如下

       2.1 依赖添加

        添加相关依赖,这里只添加需要的依赖,关于 SpringBoot 与 SpringCloud 的依赖可自行添加,添加 sentinel 与 Nacos 依赖。

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- sentinel 为扩展 Nacos 添加的数据源依赖 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

        2.2 服务配置添加

        首先在 bootstrap.yml 中添加依赖,在 Spring Boot 规范中,bootstrap 文件通常被用于应用上下文引导,bootstrap.yml 文件加载的优先级要高于 application.yml。而在 Nacos 配置中通常会添加数据库等配置,这些数据库配置用于初始化其他组件,所以必须保证在其他组件启动之前就获取到这些基础配置,随后才能初始。

        具体的配置如下:

spring:
  application:
    name: sentinel-demo  # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        namespace: public # 这里简化一下,直接在public中添加配置,没有区分环境
        file-extension: yaml
        group: DEFAULT_GROUP
        server-addr: localhost:8848
server:
  port: 8081

        2.3 Nacos 配置文件添加

        在 Nacos 中添加相应的配置文件,Nacos 的配置文件默认命名规则为:{spring.application.name}-{profile}.yaml,其中 {profile} 是 Spring 的环境配置,这里没有区分环境变量,默认在 public 命名空间下。

        除了系统的配置文件外,还需要配置一个 sentinel 的配置文件,用来设置限流规则,具体内容如下

        sentinel-demo 配置文件内容为:

  spring:
    cloud:
      sentinel:
        eager: true
        transport:
          dashboard: localhost:8080  # 指定 sentinel dashboard 地址
        datasource:
          flow: 
            nacos:
              server-addr: localhost:8848
              data-id: ${spring.application.name}-flow-rules # 指定限流配置文件
              group-id: DEFAULT_GROUP 
              data-type: json  # 规则数据格式
              rule-type: flow  # 规则类型

           sentinel-demo-flow-rules 配置文件内容为:

[
  {
    "resource": "/sentinel/test",
    "count": 1,
    "grade": 1,
    "limitApp": "default",
    "strategy": 0,
    "controlBehavior": 0,
    "clusterMode": false
  }
]
  •  resource:资源名称,这是限流规则所针对的资源标识符,可以是任何字符串,但通常建议使用与业务相关的、具有明确语义的名称,如服务名、接口路径等。
  • count:限流阈值,即在单位时间内允许通过的请求数量。例如,如果设置为10,那么在指定的统计时间窗口内最多允许10个请求通过。
  • grade:流量控制的等级,决定限流规则的触发条件。
    • 0 代表 QPS 的流控
    • 1 代表基于线程数的流控,即同时允许执行的线程数不超过设定值
  • limitApp:流控针对的应用,用于指定规则针对于哪个应用,如果是 default 则表示所有的应用都生效。
  • strategry:流控模式,决定如何进行流控控制
    • 0 代表直接模式,达到限流条件后,新的请求直接被拒绝
    • 1 代表关联模式,当关联资源达到限流条件后出发本资源的流控
    • 2 代表链路模式,仅对指定的调用链路生效
  • controlBehavior:流控效果,定义了达到限流条件时的具体处理方式。
    • 0 表示快速失败,直接拒绝请求
    • 1 表示 warm up,即预热模式,逐步增加允许的请求量知道达到设定的阈值
    • 2 表示匀速排队,请求被放入队列中以匀速处理,超出队列容量的请求被拒绝
  • clusterMode:是否开启集群流控,当设置为 true 时,表示这时一个集群限流规则,需要与其他 Sentinel 客户端协作进行流量控制。

        2.4 接口编写

        这仅是一个测试接口,比较简单

@RestController
public class TestController {

    @RequestMapping(value = "/sentinel/test")
    public String testController() {
        return "ok";
    }
}

   三、流控验证

        启动服务,登录 Sentinel 控制台,可以看到如下界面

        在浏览器快速访问测试接口,可以看到实时监控如下

        3.1 sentinel 控制面板

         实现监控:展示服务实时流量指标,如每秒请求数(QPS)、通过请求数、被拒绝的请求数。

        簇点链路:显示服务中各个 API 或资源的调用链路,可以查看每个链路的流量、响应时间和异常比例,有助于快速定位问题所在。

        流控规则:创建、编辑、删除流量控制规则,包括设置资源的限流规则、限流模式(直接拒绝、预热模型、排队模型)、时间窗口等。

        熔断规则:配置熔断策略,包括调用比例、异常比例、RT 阈值等出发条件,以及熔断后的恢复策略。

        热点规则:针对特定参数值进行流量控制,可以设置参数的阈值和限流策略。

        系统规则:设置系统级别的保护规则,如CPU使用率、线程数等阈值,以保护系统免受过载影响。 

        授权规则:管理访问权限,定义那些客户端或 IP 可以访问特定规则 。

四、总结

        Sentinel 与 Nacos的整合不仅强化了微服务的流量控制能力,还实现了配置的集中化、动态化管理,是提升系统稳定性和运维效率的关键措施,对于构建高可用、易维护的微服务架构具有深远的意义。

往期经典推荐

云原生:Kubernetes下的Java应用部署实战详解_kubernetes 创建java微服务-CSDN博客

微服务拆分:打造高性能、高扩展的未来架构-CSDN博客

微服务韧性工程:利用Sentinel实施有效服务容错与限流降级_sentinel限流容错-CSDN博客

一文看懂Nacos如何实现高效、动态的配置中心管理_nacos 动态配置-CSDN博客

Spring Cloud + Nacos 引领服务治理新航向_nacous服务治理-CSDN博客

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

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

相关文章

数据库(15)——DQL分页查询

DQL分页查询语法 SELECT 字段列表 FROM 表名 LIMIT 起始索引&#xff0c;查询记录数; 注&#xff1a;起始索引从0开始&#xff0c;起始索引&#xff08;查询页码-1&#xff09;*每页显示记录数。 如果查询的是第一页&#xff0c;可以省略起始索引。 示例&#xff1a;查询第一页…

【NLP开发】Python实现聊天机器人(微信机器人)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a;1&#x1f388;【小沐学NLP】Python实现词云图&#x1f388;2&#x1f388;【小沐学NLP】Python实现图片文字识别&#x1f388;3&#x1f388;【小沐学NLP】Python实现中文、英文分词&#x1f388;4&#x1…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:美团小袋自动配送车

大型电商公司美团已选用NVIDIA Jetson AGX Xavier 平台&#xff0c;作为无人配送机器人核心AI算力。 美团点评是全球大型的按需食品配送公司&#xff0c;结合了Uber Eats、Yelp和Groupon的商业模式&#xff0c;与超过40万家本地企业开展合作。他们推出了小袋自动配送车&#…

LeetCode---哈希表

242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 代码示例&#xff1a; //时间复杂度: O(n) //空间复杂度: O(1) c…

【NOIP提高组】进制转换

【NOIP提高组】进制转换 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 我们可以用这样的方式来表示一个十进制数&#xff1a;将每个阿拉伯数字乘以一个以该数字所处位置的&#xff08;值减1&#xff09;为指数&#xff0c;以 10 为底数的幂…

Java web应用性能分析之【java进程问题分析概叙】

Java web应用性能分析概叙-CSDN博客 Java web应用性能分析之客户端慢_有的客户端跑java应用特别慢-CSDN博客 Java web应用性能分析服务端慢之前端页面慢_前端页面加载性能分析-CSDN博客 Java web应用性能分析服务端慢之Nginx慢_前端nginx请求比直接连接后台慢很多-CSDN博客 …

【安规介绍】

文章目录 一、基础知识安规上的六类危险的防护&#xff1a;安全电压漏电流接触电流能量问题&#xff1a;火灾问题&#xff1a;热问题结构问题阻燃等级绝缘等级&#xff1a;对接地系统的要求&#xff1a;结构要求:电气要求&#xff1a; 二、设计的关键电气绝缘距离电气爬电距离:…

四足机器人步态仿真(三)四足机器人基础步态仿真

观前提醒&#xff0c;本章主要内容为分析四足机器人步态实现和姿态控制&#xff0c;碰撞体积等程序 步态效果&#xff1a; 一、完整代码如下 # -*- coding: utf-8 -*-import pybullet as pimport timeimport numpy as npp.connect(p.GUI)p.createCollisionShape(p.GEOM_PLANE…

插入排序(直接插入排序、折半插入排序、希尔排序)的性能分析

目录 前言 插入排序 直接插入排序性能分析 折半插入排序性能分析 希尔排序性能分析 前言 本篇文章主要是总结插入排序的性能分析&#xff0c;具体的概念、算法、排序过程&#xff0c;我前面的文章有写&#xff0c;在这里就不再过多赘述了。 插入排序 插入排序是一种简单直…

MYSQL数据库细节详细分析

MYSQL数据库的数据类型(一般只需要用到这些) 整型类型&#xff1a;用于存储整数值&#xff0c;可以选择不同的大小范围来适应特定的整数值。 TINYINTSMALLINTMEDIUMINTINTBIGINT 浮点型类型&#xff1a;用于存储带有小数部分的数值&#xff0c;提供了单精度&#xff08;FLOA…

2-1RT-Thread线程管理-笔记

2-1RT-Thread线程管理-笔记 其中系统线程由内核创建&#xff0c;如main函数和空闲线程都属于系统线程&#xff0c;而用户线程是由应用程序所创建的。 对于资源较大的MCU可以适当设计较大的线程栈&#xff0c;也可以在初始化时设置一个具体的数值&#xff0c;如1K或2K字节。…

【JavaEE 进阶(二)】Spring MVC(下)

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多进阶知识 目录 1.前言2.响应2.1返回静态界面2.2返回数据2.3返回HTML代码 3.综合练习3.1计算器3.2用户登…

Python 技能提升(二)

理想的类结构 Property装饰器 # 传统写法 class Square1:def __init__(self):self.__side Nonedef get_side(self):return self.__sidedef set_side(self, side):assert side > 0, 边长不能为负数&#xff01;self.__side sidedef del_side(self):# del self.__sideself.…

点到线段的最短矩离 及垂足的计算

过P做MN的垂线&#xff0c;垂足为Q&#xff0c;若Q在线段MN以内(包括与点M点N重合)&#xff0c;则最短距离为垂线段长度&#xff0c;若垂足在MN以外&#xff0c;则最短距离为PM&#xff0c;PN中的较小者。&#xff08;若P与MN共线&#xff0c;垂线长度为零&#xff0c;同样适用…

使用 MobileNet和ImageHash做图片相似度匹配(以图搜图)

很多应用中有以图搜图的应用&#xff0c;那么我们应该如何实现呢&#xff1f; 传统的文本搜索主要是关键字匹配&#xff0c;而目前图片和音乐的搜索却使用使用特征向量的方式。 向量就是使用一组数从多个维度描述特征&#xff0c;虽然每个维度的含义我们可能无法得知&#xff…

彻底卸载Windows Defender

概述 卸载Windows Defender的方法有很多&#xff0c;如修改注册表、组策略&#xff0c;执行脚本等等&#xff0c;这些方法操作过于繁琐和复杂&#xff0c;不适合小白&#xff0c;今天带来一款强大的卸载工具&#xff0c;只需要以管理员身份运行该软件即可&#xff0c;不用其他操…

css特殊效果和页面布局

特殊效果 圆角边框&#xff1a;div{border-radius: 20px 10px 50px 30px;} 四个属性值按顺时针排列&#xff0c;左上的1/4圆半径为20px&#xff0c;右上10&#xff0c;右下50&#xff0c;左下30。 div{border-radius: 20px;} 四角都为20px。 div{border-radius: 20px 10…

系统架构设计师【第12章】: 信息系统架构设计理论与实践 (核心总结)

文章目录 12.1 信息系统架构基本概念及发展12.1.1 信息系统架构的概述12.1.2 信息系统架构的发展12.1.3 信息系统架构的定义 12.2 信息系统架构12.2.1 架构风格12.2.2 信息系统架构分类12.2.3 信息系统架构的一般原理12.2.4 信息系统常用4种架构模型12.2.5 企业信息系…

finebi或者finereport发邮件

我们二次开发中&#xff0c;如果想利用产品自带的发邮件的功能&#xff0c;来发送自己的邮件内容。 首先 决策系统中邮件相关信息要配置好之后&#xff1a; 这里配好了发件人&#xff0c;以及默认发件人后&#xff0c; private void sendEmail(String content,String subject)…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:潍柴雷沃智慧农业无人驾驶

潍柴雷沃智慧农业科技股份有限公司&#xff0c;是潍柴集团重要的战略业务单元&#xff0c;旗下收获机械、拖拉机等业务连续多年保持行业领先&#xff0c;是国内少数可以为现代农业提供全程机械化整体解决方案的品牌之一。潍柴集团完成对潍柴雷沃智慧农业战略重组后&#xff0c;…