首页 > 其他分享 >sentinel

sentinel

时间:2024-06-06 10:46:48浏览次数:22  
标签:Nacos Sentinel dashboard 规则 sentinel 控制台

sentinel

1.Sentinel简介

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

1、sentinel的特征

  • 丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等
  • 完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况
  • 广泛的开源生态: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel
    -完善的 SPI 扩展点: Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等

2、sentinel的主要特性

img

3、sentinel的主要优势和特性

  • 轻量级,核心库无多余依赖,性能损耗小
  • 方便接入,开源生态广泛
  • 丰富的流量控制场景
  • 易用的控制台,提供实时监控、机器发现、规则管理等能力
  • 完善的扩展性设计,提供多样化的 SPI 接口,方便用户根据需求给 Sentinel 添加自定义的逻辑

4、sentinel与spring cloud Hystrix 对比

Sentinel Hystrix
隔离策略 信号量隔离 线程池隔离/信号量隔离
熔断降级策略 基于响应时间或失败比率 基于失败比率
实时指标实现 滑动窗口 滑动窗口(基于 RxJava)
规则配置 支持多种数据源 支持多种数据源
扩展性 多个扩展点 插件的形式
基于注解的支持 支持 支持
限流 基于 QPS,支持基于调用关系的限流 有限的支持
流量整形 支持慢启动、匀速器模式 不支持
系统负载保护 支持 不支持
控制台 开箱即用,可配置规则、查看秒级监控、机器发现等 不完善
常见框架的适配 Servlet、Spring Cloud、Dubbo、gRPC 等 Servlet、Spring Cloud Netflix

5、sentinel分为两个部分

  • 核心库(Java 客户端): 不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持
  • 控制台(Dashboard): 基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器

2.Sentinel安装与使用

在docker-compose加入一下配置:

  sentinel:
    image: gitegg-sentinel-dashboard
    container_name: sentinel
    environment:
      TZ: Asia/Shanghai
    build: 
      context: ./gitegg-sentinel-dashboard
      dockerfile: Dockerfile
    ports:
      - "8718:8718"
    volumes:
      # 配置文件
      - /docker/gitegg-sentinel-dashboard/logs/:/home/sentinel-dashboard/logs
    restart: always
    networks:
      - mydev_default

本地打包后编写DockerFile运行;

3.服务打开sentinel的监控

 <!-- SpringCloud Alibaba Sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

我在项目单独在common模块下加入的sentinel

image-20240606103048933

所以在其他应用模块直接引入gitegg-common-sentinel就可以了。

在公共配置中加入:

spring
    cloud:
        # sentinel 配置
        sentinel:
          # sentinel 开关
          enabled: true
          # 取消控制台懒加载
          eager: true
          filter:
            url-patterns: /systemFeign/*,/system/*,/base/*
          transport:
            # dashboard控制台服务名 用于服务发现
            # 如无此配置将默认使用下方 dashboard 配置直接注册
            # server-name: gitegg-sentinel-dashboard
            # 客户端指定注册的ip 用于多网卡ip不稳点使用
            # 由于windows下docker网络不能用host所以这里指定了ip避免出现sentinel找不到服务检测
           	 client-ip: 10.0.21.176
            # 控制台地址 从1.3.0开始使用 server-name 注册
           	 dashboard: localhost:8718
           	#使用nacos做数据源持久化 
            datasource:
                ds2:
                  nacos:
                    namespace: @nacos.namespace@
                    data-type: json
                    server-addr: @nacos.server@
                    data-id: ${spring.application.name}-sentinel
                    group-id: @nacos.discovery.group@
                    rule-type: flow

持久化问题:

entinel控制台不具备同步修改Nacos配置的能力,而Nacos由于可以通过在客户端中使用Listener来实现自动更新。所以,在整合了Nacos做规则存储之后,需要知道在下面两个地方修改存在不同的效果:

Sentinel控制台中修改规则:仅存在于服务的内存中,不会修改Nacos中的配置值,重启后恢复原来的值。

Nacos控制台中修改规则:服务的内存中规则会更新,Nacos中持久化规则也会更新,重启后依然保持。

4.Sentinel的控制规则

SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)-阿里云开发者社区 (aliyun.com)

标签:Nacos,Sentinel,dashboard,规则,sentinel,控制台
From: https://www.cnblogs.com/hinata/p/18234669

相关文章

  • Java学习-Sentinel 1.8.4 规则持久化到Nacos
    文章目录一、前言二、快速体验1、部署sentinel2、SpringCloud中规则持久化到nacos3、sentinel控制台操作测试三、sentinel-dashboard源码修改1、`pom.xml`中添加依赖2、`application.properties`中添加nacos配置3、nacos配置新增NacosConfig新增NacosConfigUtil4、举......
  • 【RS】哨兵系列新网站无法下载的问题及解决办法(Sentinel-2)
    ​    最近有些小伙伴留言说哨兵数据无法下载,网站打开后会有一层蒙版,无法选取研究区等信息,今天就跟大家分享一下如何解决这个问题。还知道如何下载的小伙伴可以移步到之前的文章:【RS】欧空局Sentinel-2卫星数据下载(哨兵1、2、3、5P、6系列)-CSDN博客1问题原因  ......
  • 基于Nacos实现Sentinel规则持久化
    基于Nacos实现Sentinel规则持久化一、Sentinel使用痛点二、解决方案2.1保存本地文件2.2保存数据库2.3保存到Nacos三、规则持久化到Nacos3.1Nacos服务端修改配置3.2Sentinel控制台修改配置3.3Nacos数据源整合到Sentinel中一、Sentinel使用痛点SpringCloudAlib......
  • redis-sentinel
    首先搭建1主两从的redis主从服务mkdir-pv/etc/redis/mkdir-pv/redis/db{2,3}cd/etc/redis/redis主配置不变vim/usr/local/redis-6.2.6/bin/redis.confrequirepass"lzjasdqq"appendonlyyesdaemonizeyespidfile"/var/run/redis_6380.pid"logfile"......
  • SpringBoot2.x整合Redis Sentinel
    redissentinel搭建之后,在spring-boot项目中集成。配置在pom.xml文件中添加如下依赖配置(这里spring-boot版本2.2.5),这个版本中,默认使用lettuce作为redis连接池。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis<......
  • Sentinel如何持久化数据到Nacos?
    默认情况下Sentinel只能接收到Nacos推送的消息,但不能将自己控制台修改的信息同步给Nacos,如下图所示:但是在生成环境下,我们为了更方便的操作,是需要将Sentinel控制台修改的规则也同步到Nacos的,所以在这种情况下我们就需要修改Sentinel的源码,让其可以实现和Nacos的双向......
  • Redis Sentinel 哨兵模式 故障转移失败 -failover-abort-no-good-slave master mymast
    根据网上的解决方案:1.我核对了sentinel.config和redis.configbind绑定的端口。2.三台redismasterauth都设置了密码3.sentinel.config的sentinelmonitormymaster和sentinelauth-passmymaster也没有错。但在我测试主从复制的时候,发现主从主机无法相连,我在网上找的解决......
  • Sentinel 高可用流量管理框架
    软件简介国产数据库圈,为啥那么多水货?”Sentinel是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel具有以下特性:丰富的应用场景:Sentinel承接了......
  • Sentinel 的QPS限流和Redis流量风控
    目录Sentinel的QPS限流导入依赖:这个限制的时每秒的QPS为1:如果触发风控,设置降级策略。在代码中引入Sentinel注解控制流控规则。用Redis实现流量风控:lua脚本如下:配置过滤器器执行lua脚本,判断访问次数是否超过:我们可以通过这个过滤器得知,再timeWindow时间内,我们的访......
  • Sentinel 对分布式服务进行流量控制
    可以下载sentinel的jar包,用java-jar命令直接启动 默认端口就是8080,这里随便写一下演示,其他修改还是直接看Sentinel网站吧java-jar-Dserver.port=8080sentinel的jar包名.jar 对需要进行流量控制的服务进行依赖导入(这个依赖直接在父工程引入似乎无效,不知为何)<dependency>......