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

本文主要是介绍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:8848config:namespace: public # 这里简化一下,直接在public中添加配置,没有区分环境file-extension: yamlgroup: DEFAULT_GROUPserver-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: truetransport:dashboard: localhost:8080  # 指定 sentinel dashboard 地址datasource:flow: nacos:server-addr: localhost:8848data-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博客

这篇关于Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024355

相关文章

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

9 个 GraphQL 安全最佳实践

GraphQL 已被最大的平台采用 - Facebook、Twitter、Github、Pinterest、Walmart - 这些大公司不能在安全性上妥协。但是,尽管 GraphQL 可以成为您的 API 的非常安全的选项,但它并不是开箱即用的。事实恰恰相反:即使是最新手的黑客,所有大门都是敞开的。此外,GraphQL 有自己的一套注意事项,因此如果您来自 REST,您可能会错过一些重要步骤!

微服务中RPC的强类型检查与HTTP的弱类型对比

在微服务架构中,服务间的通信是一个至关重要的环节。其中,远程过程调用(RPC)和HTTP是两种最常见的通信方式。虽然它们都能实现服务间的数据交换,但在类型检查方面,RPC的强类型检查和HTTP的弱类型之间有着显著的差异。本文将深入探讨这两种通信方式在类型检查方面的优缺点,以及它们对微服务架构的影响。 一、RPC的强类型检查 RPC的强类型检查是其核心优势之一。在RPC通信中,客户端和服务端都使

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

SpringCloud - 微服务

1、微服务介绍         参考: 微服务百度百科 1.1 概念         微服务(或称微服务架构)是一种云原生架构方法,在单个应用中包含众多松散耦合且可单独部署的小型组件或服务。 这些服务通常拥有自己的技术栈,包括数据库和数据管理模型;通过一个REST API、事件流和消息代理组合彼此通信;以及按照业务能力进行组织,具有通常称为有界上下文的服务分隔线。         微服务特