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

这篇具有很好参考价值的文章主要介绍了初始Sentinel(Sentinel的简单介绍及项目整合)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

以下正文开始

初始Sentinel(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(Sentinel的简单介绍及项目整合)

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

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

好了,本篇文章就先分享到这里了,后续将会继续介绍sentinel详细的限流规则等方面的知识,感谢大佬认真读完支持咯~
初始Sentinel(Sentinel的简单介绍及项目整合)

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

初始Sentinel(Sentinel的简单介绍及项目整合)文章来源地址https://www.toymoban.com/news/detail-454328.html

到了这里,关于初始Sentinel(Sentinel的简单介绍及项目整合)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 7.SpringCloudAlibaba 整合 Sentinel

    在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100%是可用的。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致调用服务瘫痪。 由于服务与服务之间的依赖性,故障会进行

    2024年02月10日
    浏览(40)
  • SpringCloudAlibaba-整合sentinel(四)

    目录地址: SpringCloudAlibaba整合-CSDN博客 这里只关注代码部分,至于sentinel服务UI的实用,后面可以补上 这里做一个改造: 因为sentinel可以和openfeign结合使用,为微服务做熔断降级; 为了方便微服务之间的调用,把远程调用接口移动到api模块; 所以把order中的openfeign和loadbala

    2024年04月11日
    浏览(32)
  • Springboot最简单的实战介绍 整合kafka-生产者与消费者(消息推送与订阅获取)

    #spring.kafka.bootstrap-servers=123.xxx.x.xxx:19092,123.xxx.x.xxx:19093,123.xxx.x.xxx:19094 spring.kafka.bootstrap-servers=192.168.x.xxx:9092 #=============== producer生产者 ======================= spring.kafka.producer.retries=0 spring.kafka.producer.batch-size=16384 spring.kafka.producer.buffer-memory=33554432 spring.kafka.producer.key-serializer=org.ap

    2024年04月09日
    浏览(49)
  • 09-微服务Sentinel整合GateWay

    在微服务系统中,网关提供了微服务系统的统一入口,所以我们在做限流的时候,肯定是要在网关层面做一个流量的控制,Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和

    2024年01月24日
    浏览(40)
  • SpringCloud Alibaba Sentinel整合GateWay

    在微服务系统中,网关提供了微服务系统的统一入口,所以我们在做限流的时候,肯定是要在网关层面做一个流量的控制,Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 网关: Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的

    2024年02月16日
    浏览(47)
  • 强强联合:OpenFeign 整合 Sentinel

    书接前文: 微服务间的远程接口调用:OpenFeign 的使用 当项目中使用了  OpenFeign  后,可以很方便的进行远程服务调用,现在有个问题,假如远程服务出现故障了,调不了远程的接口,这边又着急等着返回结果,怎么办呢? 当然是使用  服务降级  ,本篇就使用  OpenFeign  进

    2023年04月11日
    浏览(43)
  • sentinel整合nacos配置中心持久化

    在网上找了很多的资料,发现sentinel整合nacos持久化的博文和视频大多数都只有改造限流部分的教程,并且都需要修改前端,略显麻烦,至于剩下的熔断、热点流控、授权的更是没有相关的改造教程,最后在知乎的看到一篇文章后让我大受启发 这位前辈讲到sentinel原来是把配置

    2024年02月04日
    浏览(54)
  • 认证服务---OAuth2.0基本介绍,微博登录整合到实际项目中【下篇】

    上一篇简单介绍了它的基本使用,这一篇就粗略说明一下如何在项目中实际应用 当你进行了授权之后,跳转到一个新的地址。这个地址应该是你访问接口的地址。在这个接口中完成相应的access_token获取,以及调用远程服务接口实现新用户注册 具体业务实现 1、选择登录方式,

    2023年04月12日
    浏览(33)
  • SpringCloud之Gateway整合Sentinel服务降级和限流

    1.下载Sentinel.jar可以图形界面配置限流和降级规则 地址:可能需要翻墙 下载jar文件 2.引入maven依赖 3.写个自动注入Resource的过滤器类(可以不写注解直接使用) 4.写配置文件 application.properties 5.cmd命令行启动jar文件访问localhost:18080页面,自己设置QPS java -jar -server.port=18080 sentinel-dash

    2024年02月07日
    浏览(45)
  • Spring Cloud 之 Sentinel简介与GATEWAY整合实现

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 熔断 微服务架构的系统通常会包含

    2024年02月19日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包