初始Sentinel(Sentinel的简单介绍及项目整合)

news2025/3/15 0:54:29

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel的概念,优点,与Hystrix的对比以及微服务中整合Sentinel,后续文章将详细介绍Sentinel的细节部分。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

在这里插入图片描述

以下正文开始

在这里插入图片描述

文章目录

  • 初始Sentinel
  • Sentinel与Hystrix的对比
  • 微服务整合Sentinel
  • 图书推荐

初始Sentinel

Sentinel是一款开源的分布式系统的实时监控和自动化故障恢复工具。它是阿里巴巴开源的一款分布式系统的流量控制和熔断降级组件,主要用于保护服务的稳定性。Sentinel提供了实时的流量控制、熔断降级、系统负载保护等功能,能够帮助开发者有效地保护应用程序,防止故障和异常情况的发生。

Sentinel的主要功能包括:

  1. 实时监控:Sentinel可以监控分布式系统中的各种指标,如QPS、CPU、内存等,并提供实时的监控数据和报警功能。

  2. 流量控制:Sentinel可以根据系统的负载情况来进行流量控制,以保证系统的稳定性和可靠性。

  3. 自动化故障恢复:Sentinel可以自动化地对系统中出现的故障进行恢复,以减少人工干预的成本和时间。

  4. 熔断降级:Sentinel可以根据系统的负载情况来进行熔断降级,以保证系统的稳定性和可靠性。

  5. 规则配置:Sentinel提供了丰富的规则配置功能,可以根据不同的应用场景来进行灵活的配置。

Sentinel的优点包括:

  1. 简单易用:Sentinel提供了一种简单易用的方式来保护分布式系统的稳定性和可靠性。

  2. 高效稳定:Sentinel采用了高效稳定的设计和实现,可以在大规模分布式系统中运行良好。

  3. 开源免费:Sentinel是一款开源的软件,可以免费使用和修改。

  4. 社区支持:Sentinel拥有一个活跃的开源社区,可以获得开发者们的支持和帮助。

总之,Sentinel是一款非常实用的分布式系统监控和自动化故障恢复工具,可以帮助开发者们更好地保护分布式系统的稳定性和可靠性。

Sentinel与Hystrix的对比

在之前的文章中介绍过Hystrix,也介绍过Hystrix组件提供给微服务断路器、资源隔离与自我修复功能,那么Sentinel与Hystrix有什么区别呢?

Sentinel和Hystrix都是流行的服务熔断/降级解决方案,它们的主要区别如下:

  1. 适用范围:Hystrix适用于Spring Cloud微服务框架,而Sentinel不仅适用于Spring Cloud,还适用于Dubbo、gRPC、Servlet等各种应用场景。

  2. 功能特性:Hystrix主要提供熔断、降级、限流和缓存等功能,Sentinel则提供了更丰富的功能,包括熔断、降级、限流、系统保护、热点参数限流、授权等

  3. 适用场景:Hystrix适用于单体应用和微服务架构中的服务熔断和降级,Sentinel则更适用于复杂的分布式系统中的服务治理和流量控制。

  4. 技术实现:Hystrix使用线程池和信号量来实现熔断和降级Sentinel则使用基于AOP的切面和字节码增强技术来实现流量控制和降级

对此做个小结:Hystrix更适合单体应用和简单的微服务架构,而Sentinel则更适合复杂的分布式系统和服务治理场景。

微服务整合Sentinel

在实际项目中,整合 Sentinel 可以分为以下几个步骤:

  1. 添加依赖

在项目的 pom.xml 文件中添加 Sentinel 的依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
  1. 配置 Sentinel

在项目的 application.yml 或 application.properties 文件中配置 Sentinel 的相关参数:

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-sentinel
            groupId: DEFAULT_GROUP
            rule-type: flow

其中,dashboard 属性指定了 Sentinel 控制台的地址,datasource 属性指定了 Sentinel 的数据源,这里使用了 Nacos 作为数据源。

  1. 配置 AOP

使用 Sentinel 需要在代码中添加 AOP 切面,对方法进行拦截和统计。在 Spring Boot 项目中,通常使用 @Aspect 注解和 @Pointcut 注解来定义切面和切点:

@Aspect
@Component
public class SentinelAspect {

    @Pointcut("@annotation(com.alibaba.csp.sentinel.annotation.SentinelResource)")
    public void sentinelPointcut() {
    }

    @Around("sentinelPointcut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        // 获取 Sentinel 资源名称
        String resourceName = point.getSignature().getName();
        SentinelResource annotation = AnnotationUtils.findAnnotation(point.getTarget().getClass(), SentinelResource.class);
        if (annotation != null && StringUtils.hasText(annotation.value())) {
            resourceName = annotation.value();
        }

        // Sentinel 限流和熔断
        Entry entry = null;
        try {
            entry = SphU.entry(resourceName);
            return point.proceed();
        } catch (BlockException e) {
            throw new RuntimeException("Blocked by Sentinel: " + e.getClass().getSimpleName());
        } finally {
            if (entry != null) {
                entry.exit();
            }
        }
    }
}

在上面的代码中,定义了一个名为 sentinelPointcut 的切点,使用 @Around 注解对该切点进行拦截和统计。在拦截方法时,先获取 Sentinel 资源名称,然后使用 SphU.entry 方法进入 Sentinel 保护的资源,如果被限流或熔断,则抛出异常。最后使用 entry.exit 方法退出资源。

  1. 使用 Sentinel

在需要保护的方法上添加 @SentinelResource 注解,指定资源名称和限流规则:

@Service
public class UserServiceImpl implements UserService {

    @Override
    @SentinelResource("getUserById")
    public User getUserById(Long id) {
        // 查询数据库
        return userDao.selectById(id);
    }
}

在上面的代码中,使用 @SentinelResource 注解指定了资源名称为 getUserById,表示该方法需要被 Sentinel 保护。如果该方法被限流或熔断,则会抛出异常。同时,可以在 Sentinel 控制台中配置限流规则,以控制该方法的访问频率和并发数。

  1. 启动 Sentinel 控制台

在本地启动 Sentinel 控制台,使用以下命令:

java -jar sentinel-dashboard-1.8.2.jar

然后在浏览器中访问 http://localhost:8080,即可进入 Sentinel 控制台,查看应用的监控数据和限流规则。

图书推荐

本期图书推荐为《Java并发编程实战》

《Java并发编程实战》适读人群 :有Java开发经验的开发者。
*十年畅销100000册,Java并发编程经典图书。本书不仅讲解了并发的理论基础,还介绍了各种实际的开发技术。书中并不是简单罗列出各种并发API及机制,而是详细介绍了许多设计原则、设计模式及思维模式,可帮助开发人员构建出正确的、高性能的并发程序。
在这里插入图片描述

粉丝福利:评论区任意留言可参与活动抽奖(可评论最多五条,抽取三名欧皇)

京东自营购买链接:点击查看详情

好了,本篇文章就先分享到这里了,后续将会继续介绍sentinel详细的限流规则等方面的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

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

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

相关文章

分享几个关于AI的网站

分享几个关于AI的网站 AI文本 ChatGPT&#xff1a;https://chat.openai.com/ NotionAI&#xff1a;https://www.notion.so/product/ai A.I. Data Sidekick&#xff1a;AI工具编写 SQL、文档等的速度提高10倍https://www.airops.com/ Writesonic&#xff1a;人工智能写作辅助工…

CSS基础学习--7 fonts字体

一、CSS 字体 CSS字体属性定义字体系列&#xff0c;加粗&#xff0c;大小&#xff0c;文字样式。 二、字体系列 font-family 属性设置文本的字体系列 font-family 属性应该设置几个字体名称作为一种"后备"机制&#xff0c;如果浏览器不支持第一种字体&#xff0c;…

Haproxy的应用

Taproxy 一、Haproxy的原理Haproxy的主要特性Haproxy八种负载均衡策略LVS、Nginx、Haproxy的区别 二、搭建web群集 一、Haproxy的原理 Haproxy是可提供高可用性&#xff0c;负载均衡以及基于TCP和HTTP应用的代理&#xff0c;是免费、快速并且可靠的一种解决方案。Haproxy非常适…

电脑提示vcruntime140_1.dll丢失怎么修复?

本修复教程操作系统&#xff1a;Windows系统 vcruntime140_1.dll是电脑文件中的dll文件&#xff08;动态链接库文件&#xff09;。如果计算机中丢失了某个dll文件&#xff0c;可能会导致某些软件和游戏等程序无法正常启动运行&#xff0c;并且导致电脑系统弹窗报错。 在我们打…

FPGA基础知识-模块和端口

目录 学习目标 学习内容 端口 端口列表 端口声明 端口链接规则 学习时间 总结 学习目标&#xff1a; 1.说明Verilog 模块定义中的各个组成部分&#xff0c;例如模块名、端口列表、参数、变址声明、数据流描述语句、行为语句、调用&#xff08;实例引用》其他模块以及任务…

Java网络开发(Filter过滤器)—— tomcat的过滤器 编码控制 + 网页权限控制

目录 引出1.过滤器简介2.用过滤器实现全局编码控制&#xff08;1&#xff09;导包import javax.servlet.*;&#xff08;2&#xff09;如果是tomcat8.5&#xff0c;要把3个方法都实现&#xff08;3&#xff09;代码如下&#xff0c;要点&#xff1a;放行&#xff0c;chain.doFil…

Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer

ConnectionResetError: [Errno 104] Connection reset by peer 0. 错误介绍1. 解决思路1.1 添加代码 force_downloadTrue1.2 删除缓存1.3 科学上网1.4 线下下载 2. 解决方法2.1 清除缓存2.2 线下下载模型&#xff08;强烈建议&#xff09; 3. 总结 0. 错误介绍 当使用transfor…

4.将图神经网络应用于大规模图数据(Cluster-GCN)

到目前为止&#xff0c;我们已经为节点分类任务单独以全批方式训练了图神经网络。特别是&#xff0c;这意味着每个节点的隐藏表示都是并行计算的&#xff0c;并且可以在下一层中重复使用。 然而&#xff0c;一旦我们想在更大的图上操作&#xff0c;由于内存消耗爆炸&#xff0c…

【Python 生成器与迭代器】零基础也能轻松掌握的学习路线与参考资料

一、Python生成器与迭代器概述 Python是一种高级编程语言&#xff0c;其中非常重要的概念就是生成器和迭代器。Python生成器和迭代器联合使用&#xff0c;能够实现高效的迭代操作&#xff0c;避免增加额外的内存消耗&#xff0c;同时提高代码的可读性。Python中常见的生成器和…

单机多节点 elasticsearch 集群安全认证

es 版本&#xff1a;7.6.2 部署环境&#xff1a;CentOS Linux release 7.6.1810 (Core) 一&#xff1a;生成 ca 证书 cd 到 es 的安装目录&#xff0c;并执行下面的命令来生成 ca 证书&#xff1a; ./bin/elasticsearch-certutil ca Elasticsearch碰到第一个直接回车&#xf…

面试专题:Mysql

1.说说自己对于 MySQL 常见的两种存储引擎&#xff1a;MyISAM与InnoDB的理解 关于二者的对比与总结: 1.count运算上的区别&#xff1a;因为MyISAM缓存有表meta-data&#xff08;行数等&#xff09;&#xff0c;因此在做COUNT(*)时对于一个结构很好的查询是不需要消耗多少资源的…

[CKA]考试之K8s 版本升级

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 现有的Kubernetes 集群正在运行版本1.22.0。仅将master节点上的所有 Kuberne…

【Python】集合 set ② ( 集合常用操作 | 集合中添加元素 | 集合中移除元素 | 集合中随机取出元素 )

文章目录 一、集合中添加元素二、集合中移除元素三、集合中随机取出元素 在 Python 中 , 集合 set 是无序的 , 因此 集合 数据容器 不支持 使用 下标索引 访问 集合元素 ; 一、集合中添加元素 调用 集合#add(新元素) 函数 , 可以将新元素添加到 集合 数据容器中 ; 集合添加元素…

Vue- ref属性

ref属性 被用来给元素或者子组件注册引用信息&#xff08;id的替代者&#xff09; 通过案例来演示_ref属性 1 编写案例 如图&#xff1a;有一个按钮&#xff0c;点击按钮可以输出dom元素 备注&#xff1a;虽然vue不用我们亲自操作dom&#xff0c;但是有的特殊的情况下就要…

【2023华中杯】B题 小学教学应用题 相似性度量及难度评估 29页论文及MATLAB代码

1 题目 B 题 小学数学应用题相似性度量及难度评估 某 MOOC 在线教育平台希望能够进行个性化教学&#xff0c;实现用户自主学习。在用户学习时&#xff0c;系统从题库中随机抽取若干道与例题同步的随堂测试题&#xff0c;记录、分析学生的学习和答题信息&#xff0c;并且课后会自…

【Pytest实战】解决ModuleNotFoundError: No module named ‘pytest’问题

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

JAVA程序的性能优化实践总结

1、 衡量程序性能的指标 可以从常用的性能评估指标入手&#xff1a; 并发&#xff1a;同一时间有多少请求访问TPS&#xff1a;transaction per second(每秒的事物数)QPS&#xff1a;query per second(每秒请求数)耗时&#xff1a;端到端耗时&#xff0c;服务端耗时&#xff…

并行计算——MPI编程

目录 基础知识 进程与线程&#xff0c;并行与并发 奇偶排序 MPI实现 odd-even sort 思路 环境部署 编程实现&#xff08;C&#xff09; “若干”的问题 参考链接 一个偶然的机会&#xff0c;我接触到了国立清华大学的MPI编程作业&#xff0c;也就接触到了并行计算。这…

基于Python3接口自动化测试初探

自动化测试是什么&#xff1f; 自动化测试简单来说就是借助工具的方式来辅助手动测试的行为就可以看做是自动化测试。 自动化测试工具有哪些&#xff1f; 现在常用的自动化测试工具包括&#xff1a; QTP&#xff1a;主要用于回归测试和测试同一软件的新版本 Robot Framewor…

大数据ETL工具Kettle

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言最近公司在搞大数据数字化&#xff0c;有MES,CIM,WorkFlow等等N多的系统&#xff0c;不同的数据源DB&#xff0c;需要将这些不同的数据源DB里的数据进行整治统一…