稀土掘金 稀土掘金

使用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 控制台,查看应用的监控数据和限流规则。

玻璃钢生产厂家金昌城市玻璃钢雕塑订做怀柔大型商场美陈玻璃钢浮雕雕塑工厂报价玻璃钢雕塑家园人物玻璃钢雕塑多少钱安徽玻璃钢大象雕塑定做湖北创意玻璃钢雕塑定制菏泽景观园林校园玻璃钢雕塑商场内部美陈保定玻璃钢农耕雕塑周口市玻璃钢雕塑江门楼盘玻璃钢卡通雕塑拱墅区玻璃钢金属雕塑价格济源玻璃钢雕塑制造北京室内商场美陈广州一呼百应玻璃钢雕塑厂家太原小区玻璃钢雕塑制作天津公园玻璃钢雕塑公司云南商场节庆美陈雕塑报价淮北玻璃钢雕塑制作厂泸州园林玻璃钢雕塑定制农安玻璃钢雕塑工程施工电话西城区靠谱的商场美陈桥北商场春节美陈园林绿化玻璃钢花盆批发金华玻璃钢陶瓷雕塑企业秦时明月卡通玻璃钢雕塑管城玻璃钢花盆花器玻璃钢仿真水果雕塑供应商长沙大型玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化