SpringCloud Alibaba 微服务(四):Sentinel

news2024/9/21 2:34:27

目录

前言

一、什么是Sentinel?

 Sentinel 的主要特性

Sentinel 的开源生态

二、Sentinel的核心功能

三、Sentinel 的主要优势与特性

1、丰富的流控规则

2、完善的熔断降级机制

3、实时监控和控制台

4、多数据源支持

5、扩展性强

四、Sentinel 与 Hystrix 的对比

五、Sentinel安装与使用

1、Sentineal 控制台下载与安装

2、给服务接入sentinel监控

总结


前言

随着微服务架构的普及,如何保证系统的高可用性和稳定性成为开发者必须面对的重要课题。阿里巴巴开源的 Sentinel 作为一款流量防护组件,提供了熔断、限流、降级等多种功能,帮助开发者提升系统的容错能力。本文将记录 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。也希望本文,能够帮助你们在微服务项目中轻松地集成和使用 Sentinel,提升系统的稳定性和容错能力。


一、什么是Sentinel

Sentinel 是阿里巴巴开源的流量防护组件,专注于流量控制和系统稳定性保护。它提供了丰富的功能,如限流、熔断降级、系统自适应保护、实时监控等,帮助开发者构建高可用和高稳定性的微服务系统。

中文官网:home | Sentinel (sentinelguard.io)

 Sentinel 的主要特性

Sentinel 的开源生态

二、Sentinel的核心功能

限流:通过多种流量控制策略,实现对热点数据、分布式请求等的限流。

熔断降级:根据调用错误比例、RT(响应时间)等指标,对不稳定的服务进行熔断,避免级联故障。

系统自适应保护:根据系统的负载情况,动态调整限流和熔断策略,保证系统在高负载下的稳定性。

实时监控:提供实时的监控与报警功能,帮助开发者及时发现和处理问题。

三、Sentinel 的主要优势与特性

1、丰富的流控规则

流量整形:支持匀速排队、预热、并发等多种流控策略。
热点参数限流:针对传入参数进行热点数据的限流保护。
系统自适应保护:根据系统的负载情况,动态调整限流和熔断策略。

 2、完善的熔断降级机制

基于错误比例:在指定时间窗口内,如果请求的错误比例超过阈值,则触发熔断。
基于响应时间:在指定时间窗口内,如果请求的平均响应时间超过阈值,则触发熔断。

3、实时监控和控制台

实时监控:提供对实时流量、调用关系、链路流量等多维度的监控。
控制台:通过可视化的 Dashboard,实时配置和管理限流、熔断规则。

4、多数据源支持

规则动态更新:支持从 Nacos、Apollo、ZooKeeper 等多个数据源动态加载和更新规则。

5、扩展性强

SPI 扩展:提供 SPI 扩展点,可以自定义流控、熔断、降级等策略。

四、Sentinel 与 Hystrix 的对比

特性SentinelSpring Cloud Hystrix
限流提供丰富的限流策略,如预热、匀速排队、并发控制等不支持
熔断机制支持基于错误比例、响应时间、异常数量等多种熔断策略主要基于错误比例和响应时间
实时监控提供完整的实时监控和可视化控制台需要集成 Turbine 和 Hystrix Dashboard
规则动态配置支持多种数据源(如 Nacos、Apollo、ZooKeeper)动态配置规则通过 Archaius 实现,灵活性相对较低
扩展性提供丰富的 SPI 扩展点,方便自定义策略扩展性相对较差
社区活跃度社区活跃,持续更新2018 年 Netflix 宣布进入维护模式,社区活跃度降低
依赖轻量级,无需依赖额外组件需要依赖 Hystrix Dashboard 和 Turbine 进行监控

Sentinel 和 Spring Cloud Hystrix 都是优秀的服务保护工具,但各有特点。Sentinel 提供了更丰富的限流策略、动态规则配置和实时监控功能,并且具有更高的扩展性。相比之下,Hystrix 在熔断和降级方面也有较好的表现,但由于Hystrix进入维护模式,其社区活跃度和新特性支持有所降低。

在选择时,可以根据具体需求和项目特点进行权衡。如果需要更强的限流能力、动态规则配置和实时监控,建议选择 Sentinel。如果项目已经使用 Hystrix 并且稳定运行,也可以继续使用 Hystrix。

五、Sentinel安装与使用

1、Sentineal 控制台下载与安装

下载地址:Releases · alibaba/Sentinel (github.com)

选择jar包下载

通过CMD命令运行

java -jar sentinel-dashboard-1.8.8.jar

如下图所示,则已启动成功。

访问地址:localhost:8080

账号密码:都是sentinel

2、给服务接入sentinel监控

引入依赖

<!-- sentinel -->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
   <version>${spring-cloud-alibaba.version}</version>
</dependency>

如果版本不对的话,运行会报错,sentinel依赖时与web依赖形成循环依赖。

附上完整的maven依赖

<properties>
     <maven.compiler.source>17</maven.compiler.source>
     <maven.compiler.target>17</maven.compiler.target>
     <!-- spring boot -->
     <spring-boot.version>2.7.5</spring-boot.version>
     <!-- spring cloud -->
     <spring-cloud.version>2021.0.1</spring-cloud.version>
     <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
     <spring-cloud-starter-alibaba-nacos-config.version>2.1.4.RELEASE</spring-cloud-starter-alibaba-nacos-config.version>
</properties>

配置sentinel

server:
  port: 9090

spring:
  application:
    name: demo-user
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.85:8848
        namespace: demo
      config:
        server-addr: 192.168.1.85:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: demo
    sentinel:
      transport:
        dashboard: localhost:8080    #配置sentinel dashboard地址

总结

本文介绍了 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。Sentinel 提供了丰富的流量控制和系统保护功能,帮助开发者提升系统的容错能力和稳定性。希望通过本文的学习,能够帮助你更好地理解和使用 Sentinel,提升微服务项目的稳定性和容错能力。

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

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

相关文章

Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别

GenericJackson2JsonRedisSerializer 和 Jackson2JsonRedisSerializer 是 Spring Data Redis 提供的两种基于 Jackson 的 Redis 序列化器。 它们的主要区别在于序列化和反序列化的方式以及适用的场景。 GenericJackson2JsonRedisSerializer 序列化方式&#xff1a;在序列化对…

为Mac配置Alfred

参考资料&#xff1a; Alfred神器使用手册 | louis blogMacOS神器之Alfred workflow概览GitHub - arpir/Alfred-Workflows-Collection: 一些好用的 Alfred Workflow 一、修改快捷键 Spotlight的默认快捷键是Command Space Alfred的默认快捷键是Option Space 可以将Alfred和…

[网络编程】网络编程的基础使用

系列文章目录 1、 初识网络 网络编程套接字 系列文章目录前言一、TCP和UDP协议的引入二、UDP网络编程1.Java中的UDP2.UDP回显代码案例3.UDP网络编程的注意事项 三、TCP网络编程1.TCP回显代码案例2.TCP多线程使用 总结 前言 在学习完基础的网络知识后&#xff0c;完成跨主机通…

关于 OSPF LSA 序列号范围 0x80000001-0x7FFFFFFF 释疑正本清源

注&#xff1a;机翻&#xff0c;未校对。 正本&#xff1a;RFC 2328 OSPF Version 2 中相关解释 April 1998 12.1.6. LS sequence number 12.1.6. 序列号 The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate LSAs. The space …

set,map(java)

前言&#xff1a;要了解set和map&#xff0c;首先需要对搜索树和哈希有一定的了解&#xff0c;才能进一步深入的了解set和map。 1.搜索树 &#xff08;1&#xff09;性质&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点值都小于根节点的值。 若它的右子树不…

事件如何驱动图表运行

状态流图如何响应事件 Stateflow图表仅在以循环方式响应事件时执行。 由于图表在单个线程上运行&#xff0c;因此基于事件发生的操作对该事件是原子性的。图表中由事件引起的所有活动都在执行返回到接收事件之前发生的活动之前完成。一旦事件启动了一个操作&#xff0c;除非被…

全网最全程序员接单网站

程序员客栈-领先的程序员自由工作平台-程序员兼职 (proginn.com) 闲鱼 - 闲不住&#xff0c;上闲鱼&#xff01; (goofish.com) 猪八戒网-品质企业服务 就找猪八戒 (zbj.com) 电鸭社区-专注远程工作招聘交流-远程工作&#xff0c;从电鸭开始 (eleduck.com) 开源众包-百万开发者…

Java台球厅助教教练预约上门到店系统源码

&#x1f3b1;一杆在手&#xff0c;天下我有&#xff01;台球助教教练预约系统&#xff0c;让球技飙升不是梦&#x1f680; &#x1f3af;【开篇&#xff1a;台球爱好者的福音来啦&#xff01;】&#x1f3af; 还在为找不到合适的台球教练而烦恼吗&#xff1f;或是想要在家就…

代码实践思考:C++和Python

起因 在人工智能工具日益强大的今天 如何更高效的进行代码学习 如何借助智能工具实现代码转换&#xff1f; 是否直接可以使用&#xff1f;为何&#xff1f; 如何实现不同的编程语言之间代码的无损转换&#xff1f; x86与arm C 云课五分钟-02第一个代码复现-终端甜甜圈C-CS…

GEE错误——文件导出的时候出现Error: User memory limit exceeded. (Error code: 3)

错误简介 在试图将我的表导出到资产文件夹,但出现了内存错误。我不知道我做错了什么。相同的脚本适用于其他年份。文件导出的时候出现Error: User memory limit exceeded. (Error code: 3) 函数 reduceToVectors(reducer, geometry, scale, geometryType, eightConnected,…

雪花算法的一些问题解析

前言 最近做项目&#xff0c;有些老旧项目&#xff0c;需要生成分布式唯一ID&#xff0c;不允许重复&#xff0c;此时如果要对其他中间件和数据库依赖小&#xff0c;那么就需要一套固定的ID生成规则&#xff0c;雪花算法就正当合适&#xff0c;当时Twitter就是用来存储数据库I…

服务器主机安全有多重要

一、什么是主机安全 主机安全&#xff0c;作为维护计算机系统核心安全的基石&#xff0c;旨在全面捍卫硬件与软件免受任何未经授权的侵扰、篡改、数据泄露等安全挑战。这一过程不仅聚焦于数据存储与处理的保密性、完整性及可用性&#xff0c;还深入至硬件构造、固件层、以及系…

利用C++11的异步操作实现一个线程池

利用C11的异步操作实现一个线程池 利用C11的异步操作实现一个线程池 介绍关于一些代码细节的解释测试 介绍 基于线程池执行任务的时候&#xff0c;入口函数内部执行逻辑是固定的&#xff0c;因此选择std::packaged_task加上std::future的组合来实现。 具体使用可以见我上一…

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)即将召开!

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)将于2025年1月10日-12日在中国香港举行。图像处理和机器视觉作为当代信息技术领域的重要分支&#xff0c;不仅推动了人工智能技术的飞速发展&#xff0c;也为各行各业带来了革命性的变革。本次会议旨在汇聚全球图像处理和机器…

极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

目录 极致的灵活度满足工程美学&#xff1a;用Vue Flow绘制一个完美流程图 一、环境要求 二、初识Vue Flow 2.1、安装Vue Flow 2.2、Vue Flow构成 2.3、一个小坑 2.4、入门案例 三、Vue Flow优秀的自定义功能 3.1、引入 3.2、节点与连线的自定义 ①打样&#xff08;…

MySQL - 通过SQL语句导出数据到CSV文件

在 MySQL 中&#xff0c;可以使用 SELECT ... INTO OUTFILE 语句将查询结果导出为 CSV 文件&#xff0c;然后再将 CSV 文件转换为 Excel 格式。以下是一个示例&#xff1a; SELECT column1, column2, column3 INTO OUTFILE /path/to/file.csv FIELDS TERMINATED BY , ENCLO…

git 迁移仓库的方法

git Git是一个开源的分布式版本控制系统&#xff0c;由Linus Torvalds在2005年创建&#xff0c;用于有效、高速地处理从小到大的项目管理。它最初是为Linux内核开发而设计的&#xff0c;但很快被广泛用于各种项目。 以下是Git的一些主要特性&#xff1a; 分布式架构&#xff…

接近传感器 - 从零开始认识各种传感器【第十七期】

1、什么是接近传感器 接近传感器常被用于检测物体的距离或者是否有物体靠近。它通常发射电磁场或电磁波&#xff08;例如红外线&#xff09;来探测物体的位置。当有物体靠近时&#xff0c;传感器会接收到反射的电磁波信号&#xff0c;从而触发相应的电路或者控制系统。它广泛应…

Helm(二)

一、Chart模板流程控制if_with_range 1.if 修改values.yaml cat > values.yaml <<EOF myname: yeunyi service: type: ClusterIP port: 80 myport: 8080 EOF 修改service.yaml cat > templates/service.yaml <<EOF apiVersion: v1 kind: Service met…

TC8:SOMEIP_ETS_007-008

SOMEIP_ETS_007: echoBitfields 目的 检查位字段是否能够被顺利地发送和接收。 测试步骤 Tester:创建SOME/IP消息Tester:使用method echoBitfields发送SOME/IP消息DUT:返回method响应消息,其中位字段的顺序与请求相比是反向的期望结果 3、DUT:返回method响应消息,其中位…