精华内容
参与话题
问答
  • 哨兵2号(Sentinel-2)介绍、下载和预处理、批处理

    万次阅读 多人点赞 2019-04-17 13:57:02
    哨兵2号高分辨率多光谱成像卫星,携带一枚多光谱成像仪(MSI),用于陆地监测,可提供植被、土壤和水覆盖、内陆水路及海岸区域等图像,还可用于紧急救援服务。分为2A和2B两颗卫星。 第一颗卫星哨兵2号A于2015年6月...

    目录

    1、数据介绍:

    2、数据下载:

    2.1、欧空局哥白尼数据中心

    2.2、美国USGS下的EarthExplorer数据下载网站

    3、大气校正:

    4、大气校正后处理:

    4.1 下载安装SNAP:

    4.2 下载安装Sen2Res(集裁剪,pan-sharpening,波段合成于大成者)

    5、处理过程中常见的问题

    欢迎关注个人公众号,做客Super的小阁楼


     

    1、数据介绍:

    哨兵2号是高分辨率多光谱成像卫星,携带一枚多光谱成像仪(MSI),用于陆地监测,可提供植被、土壤和水覆盖、内陆水路及海岸区域等图像,还可用于紧急救援服务。分为2A和2B两颗卫星。

    第一颗卫星哨兵2号A20156月23日01:52 UTC以“织女星”运载火箭发射升空

    6月29日,在轨运行4天的哨兵-2A卫星,传回了第一景数据,幅宽290km,卫星第一次扫描的范围是从瑞典开始,经过中欧和地中海,到阿尔及利亚结束。

    第二颗卫星哨兵2号B于2017年3月07日北京时间9时49分 UTC以“织女星”运载火箭发射升空。

    欧洲航天局介绍说,“哨兵-2B”卫星与2015年6月发射的“哨兵-2A”卫星为同一组,携带高分辨率多光谱成像装置,主要用于监测土地环境,可提供有关陆地植被生长、土壤覆盖状况、内河和沿海区域环境等信息,不仅对改善农林业种植、预测粮食产量、保证粮食安全具有重要意义,还可用于监测洪水、火山喷发、山体滑坡等自然灾害,为人道主义救援提供帮助。两者同时进入运行状态后,每5天可完成一次对地球赤道地区的完整成像,而对于纬度较高的欧洲地区,这一周期仅需3天。

    哨兵-2号卫星携带一枚多光谱成像仪(MSI),高度为786km,可覆盖13个光谱波段,幅宽达290千米。地面分辨率分别为10m20m60m、一颗卫星的重访周期为10天,两颗互补,重访周期为5天。从可见光和近红外到短波红外,具有不同的空间分辨率,在光学数据中,哨兵-2号数据是唯一一个在红边范围含有三个波段的数据,这对监测植被健康信息非常有效。

     

     

                                 

                                         

                                        

           

    Landsat and Sentinel-2

    landsat 8/OLI-TIRS

    sentinel-2/MSI

    https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-2-msi

    Launch date

    February 11, 2013

    June 23, 2015

    March 7, 2017

    Nominal equatorial crossing time

    10:00 a.m.

    10:30 a.m.

    altitude

    sun-synchronous orbit (705 km)

    sun-synchronous orbit (786 km)

    Swath/field of view

    180 km/15°

    290 km/20.6°

    Spectral bands (central wavelength)

       

    Ultra 

    443 nm

    443 nm (60 m)

    Visible

    482 nm, 561 nm, 655 nm

    490 nm (10 m), 560 nm (10 m), 665 nm (10 m)

    Red edge

     

    705 nm (20 m), 740 nm (20 m), 783 nm (20 m)

    NIR

    865 nm

    842 nm (10 m), 865 nm (20 m)

    SWIR

    1609 nm, 2201 nm

    1610 nm (20 m), 2190 nm (20 m)

    Cirrus

    1373 nm

    1375 nm (60 m)

    Water vapor

     

    945 nm (60 m)

    Thermal

    10.9 μm, 12 μm(100 m)

     

     

    哨兵2号(sentinel-2)各个波段的意义说明:

    Band1:海岸/气溶胶波段:用来监测近岸水体和大气中的气溶胶。

    Band2、3、4:可见光波段

    Band5、6、7:红边范围内波段对监测植被健康信息非常有效

    Band8:近红外波段(宽)

    Band8A:近红外波段(窄)

    Band9:水蒸气波段

    Band10、11、12:短波红外波段

    从2015年12月3日起,哨兵2A(Sentinel2A)数据正式向全球用户提供免费下载。

    产品级别:

        Level-0: 原始数据。

        Level-1A:包含元信息的几何粗校正产品。

        Level-1B:辐射率产品,嵌入经GCP优化的几何模型但未进行相应的几何校正。

        Level-1C:经正射校正和亚像元级几何精校正后的大气表观反射率产品。

    欧空局(ESA)仅发布了哨兵2号(S2)的L1C级多光谱数据(MSI),Sentinel-2 L1C是经过正射校正和几何精校正的大气表观反射率产品,并没有进行大气校正。同时,ESA还对S2 L2A级数据进行了定义,L2A级数据主要包含经过大气校正的大气底层反射率数据(Bottom-of-Atmosphere corrected reflectance),但这个L2A数据需要用户根据需求自行生产,为此,ESA发布了专门生产L2A级数据的插件Sen2cor。目前,SNAP对Sen2cor的支持并不好,很难在SNAP中直接调用Sen2cor,所以,这里介绍下sen2cor的命令行配置步骤。当然,L2A级数据还包含一些别的产品,如气溶胶厚度(Aerosol Optical Thickness, AOT)、大气水蒸气(Water Vapour Map, WVM)等。

    注:目前国内用户仅能下载Level-1C数据。2A级产品要用户自己进行处理生产。

    2、数据下载:

    2.1、欧空局哥白尼数据中心

    https://scihub.copernicus.eu/dhus/#/home

    open hub > 进入先注册,用户名要求:Username field accepts only lowercase alphanumeric characters plus ".", "-" and "_".

    然后按步骤就可以下载了。

    2.2、美国USGS下的EarthExplorer数据下载网站

    (数据不是很全,建议从哥白尼数据中心下载,但是也可以两者结合使用)

    https://earthexplorer.usgs.gov/

    ps:需   科    学    上      网

    https://blog.csdn.net/qq_41718357/article/details/100092856

     

     

    3、大气校正:

    关于哨兵2号预处理:

    主要是对1C级产品进行辐射定标和大气校正。主流处理软件为sen2cor。主要参考http://blog.sciencenet.cn/home.php?mod=space&uid=3367669&do=blog&id=1085133一文并附上截图。

    批处理可参考:https://blog.csdn.net/qq_41718357/article/details/89023618

    Sen2cor官方下载地址:

     http://step.esa.int/main/third-party-plugins-2/sen2cor/

     

    进入数据所在文件夹下,键入命令:

    处理全部分辨率:
    L2A_Process J:\s\L1C_T50QNM_A008566_20170211T025103\S2A_MSIL1C_20170211T024831_N0204_R132_T50QNM_20170211T025103.SAFE

    如果想要只处理10分辨率则在后面加上--resolution 10

    L2A_Process J:\s\L1C_T50QNM_A008566_20170211T025103\S2A_MSIL1C_20170211T024831_N0204_R132_T50QNM_20170211T025103.SAFE --resolution 10

     

    4、大气校正后处理:

    4.1 下载安装SNAP:

    大气校正之后可在SNAP进行后续的应用,当然也可以在SNAP里针对特定波段进行导出成tif格式,在其他平台例如erdas、envi中进行操作。下面说下如果导出tif格式:

    SNAP下载:http://step.esa.int/main/download/

    4.2 下载安装Sen2Res(集裁剪,pan-sharpening,波段合成于大成者)

    这是一个可以将20m\60m波段数据升尺度到10m的插件。

    按步骤安装完成后如下图: 

    在处理过程中可以只针对自己的研究区,然后输出成GeoTIFF格式即可。

    批处理流程及参数设置如下:

    • x_min、x_max、y_min、y_max分别是自己研究区的范围,这个可以通过加载自己研究区矢量图,在图像上判断得出。
    • lon_min等和x_min一样的意义,都是取范围的,设置其一即可。
    • select_bands:这里选择 B2,B3,B4,B5,B6,B7,B8,B8A,B11,B12
    • all_data_bands:B1,B2,B3,B4,B5,B6,B7,B8,B8A,B9,B10,B11,B12
    • 其他默认即可,最后一个SR_prefix可加  SR  也可以不加,只是一个前缀,加了20m降尺度成10m的时候,20m波段前会有SR_前缀。
    • write的时候可以选择以GeoTIFF的格式输出。
    • ps:建议先尝试一景影像,看看是怎么回事,再尝试批处理。我的研究区比较小,一个2500m×2500m的区域,处理一景仅需要44秒左右。

    参考:

    https://blog.csdn.net/lidahuilidahui/article/details/102765420

    http://step.esa.int/main/third-party-plugins-2/sen2res/

    https://nicolas.brodu.net/recherche/superres/

     

    5、处理过程中常见的问题

    2019/07/11更新

    关于哨兵过境时间:

    S2A_MSIL1C_20170211T024831_N0204_R132_T50QNM_20170211T025103.SAFE

    从命名中可以看出为2017年2月11日,T=TIME 2点48分21秒但其实这是格林威治时间,所以换算成北京时间还要+8,也就是上午10点48分21秒。

    想知道自己研究区的时间下载一幅影像,按上述方法算下就好。

     

    2019/07/24更新:

    在sen2cor处理完之后,使用snap打不开的情况:

    在SNAP菜单栏点击tools -->plugins-->更新sentinel-2 Toolbox Kit module模块

     

    2019/08/20更新:
    实践证明处理OPER_PRD_MSIL1C_PDMC这种代理商的数据的时候2.8版本还是不行,还得用2.5版本的。遇到问题可以试着换下版本试试。

     

    2019/9/20/更新:

    在验证sen2cor是否安装成功的时候:

    是L2A_Process --help不是L2A_L2A_Process--help,中间是有个空格的。

    2019/12/5/更新:

    有同学发现USGS和欧空局的数据对不上,USGS可能会少那么几景而且可能是无云的,所以如何要送USGS上下载影像的同学需要再到欧空局官网上核实,如果少则补齐。

    2019/12/19/更新:

    因为欧空局的数据相对USGS更全些,当我们用IDM从欧空局下载数据,有时候会超级慢,这时候关闭IDM,选择浏览器内置下载会发现也挺快的。(如何没有一些加速手段,就早上9点之前下载,速度很快)

    2019/12/23/更新:

    关于Sentinel数据写的很不错的博文:

     

    超级禾欠水CSND博客——03-SNAP处理Sentinel-2 L2A级数据(博主创建的欧空局SNAP处理交流QQ群:665903216)

    Melody sugar知乎专栏《环境遥感学习之路》----【Sentinel-2】(2):哨兵2号数据预处理

    松果儿 知乎专栏《Sentinel影像》----Sen2Cor (V2.8)——哨兵二号的预处理

    2020/7/29/更新:

    关于offline数据

    直接点击下载按钮,出现下图绿色提示,offline数据会自动放入你的购物车,不知过了多久左右即可激活offline数据,但是一只能激活一景,重复点下载按钮就会出现下图红色提示。

     

    其他文章:

    sentinel-2、Landsat 云检测:https://blog.csdn.net/qq_41718357/article/details/100132402

    Landsat L2反射率,植被指数产品申请:https://blog.csdn.net/qq_41718357/article/details/83903307

    Sentinel-2批量大气校正:https://blog.csdn.net/qq_41718357/article/details/89023618

    Sentinel-2、landsat等影像批量下载:https://blog.csdn.net/qq_41718357/article/details/100092856

    MODIS数据的批量重投影,重采样+批量波段合成:https://blog.csdn.net/qq_41718357/article/details/88776377

     

     

    欢迎关注个人公众号,做客Super的小阁楼

    http://shub.ys168.com/

     

    展开全文
  • sentinel

    千次阅读 2020-03-02 21:03:35
    Sentinel

     https://github.com/alibaba/sentinel


    1 Docker部署sentinel

    1.1 搜索镜像

    https://hub.docker.com/r/bladex/sentinel-dashboard/tags 

    docker search sentinel
    

    1.2 拉取镜像 

    docker pull bladex/sentinel-dashboard:1.6.3

    1.3 启动sentinel

    docker run -d --name sentinel -p 8858:8858 bladex/sentinel-dashboard:1.6.3
    

    1.4 web界面访问

    http://ip:8858

    登录名/密码 默认是sentinel


    2 使用docker-compose构建 

    2.1 拉取官方jar包

    https://github.com/alibaba/sentinel/releases

    wget https://github.com/alibaba/Sentinel/releases/download/1.6.3/sentinel-dashboard-1.6.3.jar
    [root@yuanyu /]# mkdir -p /usr/local/server/sentinel && cd /usr/local/server/sentinel
    version: "3"
    services:
      gourd-hu-service:
        container_name: sentinel
        restart: always
        image: java:8
        volumes:
          - /usr/local/server/sentinel/sentinel-dashboard-1.6.3.jar:/sentinel-dashboard-1.6.3.jar
          - /etc/localtime:/etc/localtime
        ports:
          - "8858:8858"
        environment:
          - TZ="Asia/Shanghai"
        entrypoint: java -jar sentinel-dashboard-1.6.3.jar  --server.port=8858
    [root@yuanyu sentinel]#  docker-compose up -d

    https://blog.csdn.net/HXNLYW/article/details/104613163

     

    展开全文
  • redis——sentinel

    千次阅读 多人点赞 2019-10-24 15:33:33
    什么是哨兵机制 Redis的哨兵(sentinel)系统用于管理/多个Redis服务器,该系统执行以下三个任务: ·监控:哨兵(sentinel)会不断地检查你的Master和Slave是否运作正常。 ·提醒:当被监控的某个Redis出现问题时,哨兵...

    什么是哨兵机制

    Redis的哨兵(sentinel) 系统用于管理/多个 Redis 服务器,该系统执行以下三个任务:

    ·        监控: 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

    ·        提醒:当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

    ·        自动故障迁移:当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

    例如下图所示:

    在Server1 掉线后:

    升级Server2 为新的主服务器:

    哨兵模式修改配置

    实现步骤:

    1.拷贝到etc目录

    cp sentinel.conf  /usr/local/redis/etc

    2.修改sentinel.conf配置文件

    sentinel monitor mymast  192.168.110.133 6379 1  #主节点 名称 IP 端口号 选举次数

    sentinel auth-pass mymaster 123456 

    3. 修改心跳检测 5000毫秒

    sentinel down-after-milliseconds mymaster 5000

    4.sentinel parallel-syncs mymaster 2 --- 做多多少合格节点

    5. 启动哨兵模式

    ./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &


    1)Sentinel(哨兵) 进程是用于监控 Redis 集群中 Master 主服务器工作的状态

    2)在 Master 主服务器发生故障的时候,可以实现 Master 和 Slave 服务器的切换,保证系统的高可用(High Availability)

    工作方式

    1)每个 Sentinel(哨兵)进程以每秒钟一次的频率向整个集群中的 Master 主服务器,Slave 从服务器以及其他 Sentinel(哨兵)进程发送一个 PING 命令。

    2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel(哨兵)进程标记为主观下线。

    3. 如果一个 Master 主服务器被标记为主观下线,则正在监视这个 Master 主服务器的所有 Sentinel(哨兵)进程要以每秒一次的频率确认 Master 主服务器的确进入了主观下线状态。

    4. 当有足够数量的 Sentinel(哨兵)进程(大于等于配置文件指定的值)在指定的时间范围内确认 Master 主服务器进入了主观下线状态, 则Master 主服务器会被标记为客观下线(ODOWN)。

    5. 在一般情况下, 每个 Sentinel(哨兵)进程会以每 10 秒一次的频率向集群中的所有Master 主服务器、Slave 从服务器发送 INFO 命令。

    6. 当 Master 主服务器被 Sentinel(哨兵)进程标记为客观下线时,Sentinel(哨兵)进程向下线的 Master 主服务器的所有 Slave 从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。

    7. 若没有足够数量的 Sentinel(哨兵)进程同意 Master 主服务器下线, Master 主服务器的客观下线状态就会被移除。若 Master 主服务器重新向 Sentinel(哨兵)进程发送 PING 命令返回有效回复,Master 主服务器的主观下线状态就会被移除。

    哨兵(sentinel) 的一些设计思路和zookeeper非常类似


    我们从启动并初始化说起

    启动并初始化 Sentinel

    启动一个 Sentinel 可以使用命令:

    $ redis-sentinel /path/to/your/sentinel.conf
    

    或者命令:

    $ redis-server /path/to/your/sentinel.conf --sentinel
    
    

    当一个 Sentinel 启动时, 它需要执行以下步骤:

    初始化服务器。

    首先, 因为 Sentinel 本质上只是一个运行在特殊模式下的 Redis 服务器, 所以启动 Sentinel 的第一步, 就是初始化一个普通的 Redis 服务器.

    不过, 因为 Sentinel 执行的工作和普通 Redis 服务器执行的工作不同, 所以 Sentinel 的初始化过程和普通 Redis 服务器的初始化过程并不完全相同。

    比如说, 普通服务器在初始化时会通过载入 RDB 文件或者 AOF 文件来还原数据库状态, 但是因为 Sentinel 并不使用数据库, 所以初始化 Sentinel 时就不会载入 RDB 文件或者 AOF 文件。

    将普通 Redis 服务器使用的代码替换成 Sentinel 专用代码。

    第二个步骤就是将一部分普通 Redis 服务器使用的代码替换成 Sentinel 专用代码。

    比如说, 普通 Redis 服务器使用 redis.h/REDIS_SERVERPORT 常量的值作为服务器端口:

    #define REDIS_SERVERPORT 6379
    

    而 Sentinel 则使用 sentinel.c/REDIS_SENTINEL_PORT 常量的值作为服务器端口:

    #define REDIS_SENTINEL_PORT 26379

    为什么在 Sentinel 模式下, Redis 服务器不能执行诸如 SET 、 DBSIZE 、 EVAL 等等这些命令 —— 因为服务器根本没有在命令表中载入这些命令。

    初始化 Sentinel 状态。

    在应用了 Sentinel 的专用代码之后, 接下来, 服务器会初始化一个 sentinel.c/sentinelState 结构(后面简称“Sentinel 状态”), 这个结构保存了服务器中所有和 Sentinel 功能有关的状态 (服务器的一般状态仍然由 redis.h/redisServer 结构保存):

    struct sentinelState {
    
        // 当前纪元,用于实现故障转移
        uint64_t current_epoch;
    
        // 保存了所有被这个 sentinel 监视的主服务器
        // 字典的键是主服务器的名字
        // 字典的值则是一个指向 sentinelRedisInstance 结构的指针
        dict *masters;
    
        // 是否进入了 TILT 模式?
        int tilt;
    
        // 目前正在执行的脚本的数量
        int running_scripts;
    
        // 进入 TILT 模式的时间
        mstime_t tilt_start_time;
    
        // 最后一次执行时间处理器的时间
        mstime_t previous_time;
    
        // 一个 FIFO 队列,包含了所有需要执行的用户脚本
        list *scripts_queue;
    
    } sentinel;

    初始化 Sentinel 状态的 masters 属性

    Sentinel 状态中的 masters 字典记录了所有被 Sentinel 监视的主服务器的相关信息:

    • 字典的键是被监视主服务器的名字。
    • 而字典的值则是被监视主服务器对应的 sentinel.c/sentinelRedisInstance 结构。

    每个 sentinelRedisInstance 结构代表一个被 Sentinel 监视的 Redis 服务器实例(instance), 这个实例可以是主服务器、从服务器、或者另外一个 Sentinel 。

    实例结构包含的属性非常多, 以下代码展示了一部分属性

    typedef struct sentinelRedisInstance {
    
        // 标识值,记录了实例的类型,以及该实例的当前状态
        int flags;
    
        // 实例的名字
        // 主服务器的名字由用户在配置文件中设置
        // 从服务器以及 Sentinel 的名字由 Sentinel 自动设置
        // 格式为 ip:port ,例如 "127.0.0.1:26379"
        char *name;
    
        // 实例的运行 ID
        char *runid;
    
        // 配置纪元,用于实现故障转移
        uint64_t config_epoch;
    
        // 实例的地址
        sentinelAddr *addr;
    
        // SENTINEL down-after-milliseconds 选项设定的值
        // 实例无响应多少毫秒之后才会被判断为主观下线(subjectively down)
        mstime_t down_after_period;
    
        // SENTINEL monitor <master-name> <IP> <port> <quorum> 选项中的 quorum 参数
        // 判断这个实例为客观下线(objectively down)所需的支持投票数量
        int quorum;
    
        // SENTINEL parallel-syncs <master-name> <number> 选项的值
        // 在执行故障转移操作时,可以同时对新的主服务器进行同步的从服务器数量
        int parallel_syncs;
    
        // SENTINEL failover-timeout <master-name> <ms> 选项的值
        // 刷新故障迁移状态的最大时限
        mstime_t failover_timeout;
    
        // ...
    
    } sentinelRedisInstance;

    创建连向主服务器的网络连接。

     Sentinel 将成为主服务器的客户端, 它可以向主服务器发送命令, 并从命令回复中获取相关的信息。

    对于每个被 Sentinel 监视的主服务器来说, Sentinel 会创建两个连向主服务器的异步网络连接:

    • 一个是命令连接, 这个连接专门用于向主服务器发送命令, 并接收命令回复。
    • 另一个是订阅连接, 这个连接专门用于订阅主服务器的 __sentinel__:hello 频道。
    为什么有两个连接?
    
    在 Redis 目前的发布与订阅功能中, 被发送的信息都不会保存在
     Redis 服务器里面, 如果在信息发送时, 想要接收信息的客户
    端不在线或者断线, 那么这个客户端就会丢失这条信息。
    
    因此, 为了不丢失 __sentinel__:hello 频道的任何信息, 
    Sentinel 必须专门用一个订阅连接来接收该频道的信息。
    
    而另一方面, 除了订阅频道之外, Sentinel 还又必须向主服务
    器发送命令, 以此来与主服务器进行通讯, 所以 Sentinel 还
    必须向主服务器创建命令连接。
    
    并且因为 Sentinel 需要与多个实例创建多个网络连接, 所以
     Sentinel 使用的是异步连接。

    接下来介绍 Sentinel 如何通过命令连接和订阅连接与被监视主服务器进行通讯。

    获取服务器信息

    sentinel默认每十秒钟发送一次INFO命令给主服务器,并获取信息:

    1)关于主服务器本身的信息

    2)主服务器属下所有从服务器信息

    sentinel发现主服务器有新的从服务器时,会创建相应的实例结构和命令连接,订阅连接

    给服务器发送消息

    主观下线

    指的是单个Sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)。
    如果服务器在down-after-milliseconds给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(SDOWN )。
    sentinel会以每秒一次的频率向所有与其建立了命令连接的实例(master,从服务,其他sentinel)发ping命令,通过判断ping回复是有效回复,还是无效回复来判断实例时候在线(对该sentinel来说是“主观在线”)。
    sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度,如果实例在down-after-milliseconds毫秒内,返回的都是无效回复,那么sentinel回认为该实例已(主观)下线,修改其flags状态为SRI_S_DOWN。如果多个sentinel监视一个服务,有可能存在多个sentinel的down-after-milliseconds配置不同,这个在实际生产中要注意。

    客观下线


    客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断,然后开启failover。
    客观下线就是说只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(ODOWN)。
    只有当master被认定为客观下线时,才会发生故障迁移。
    当sentinel监视的某个服务主观下线后,sentinel会询问其它监视该服务的sentinel,看它们是否也认为该服务主观下线,接收到足够数量(这个值可以配置)的sentinel判断为主观下线,既任务该服务客观下线,并对其做故障转移操作。
    sentinel通过发送 SENTINEL is-master-down-by-addr ip port current_epoch runid

    (ip:主观下线的服务id,port:主观下线的服务端口,current_epoch:sentinel的纪元,runid:*表示检测服务下线状态,如果是sentinel 运行id,表示用来选举领头sentinel)

    来询问其它sentinel是否同意服务下线。
    一个sentinel接收另一个sentinel发来的is-master-down-by-addr后,提取参数,根据ip和端口,检测该服务时候在该sentinel主观下线,并且回复is-master-down-by-addr,回复包含三个参数:down_state(1表示已下线,0表示未下线),leader_runid(领头sentinal id),leader_epoch(领头sentinel纪元)。
    sentinel接收到回复后,根据配置设置的下线最小数量,达到这个值,既认为该服务客观下线。
    客观下线条件只适用于主服务器: 对于任何其他类型的 Redis 实例, Sentinel 在将它们判断为下线前不需要进行协商, 所以从服务器或者其他 Sentinel 永远不会达到客观下线条件。只要一个 Sentinel 发现某个主服务器进入了客观下线状态, 这个 Sentinel 就可能会被其他 Sentinel 推选出, 并对失效的主服务器执行自动故障迁移操作。

    选举大哥sentinel

    一个redis服务被判断为客观下线时,多个监视该服务的sentinel协商,选举一个领头sentinel,对该redis服务进行故障转移操作。选举领头sentinel遵循以下规则:
    1)所有的sentinel都有公平被选举成领头的资格。
    2)所有的sentinel都只有一次将某个sentinel选举成领头的机会(在一轮选举中),一旦选举,不能更改。
    3)先到先得,一旦当前sentinel设置了领头sentinel,以后要求设置sentinel为领头请求都会被拒绝。
    4)每个发现服务客观下线的sentinel,都会要求其他sentinel将自己设置成领头。
    5)当一个sentinel(源sentinel)向另一个sentinel(目sentinel)发送is-master-down-by-addr ip port current_epoch runid命令的时候,runid参数不是*,而是sentinel运行id,就表示源sentinel要求目标sentinel选举其为领头。
    6)源sentinel会检查目标sentinel对其要求设置成领头的回复,如果回复的leader_runid和leader_epoch为源sentinel,表示目标sentinel同意将源sentinel设置成领头。
    7)如果某个sentinel被半数以上的sentinel设置成领头,那么该sentinel既为领头。
    8)如果在限定时间内,没有选举出领头sentinel,暂定一段时间,再选举。

    为什么要选?
    简单来说,就是因为只能有一个sentinel节点去完成故障转移。
    sentinel is-master-down-by-addr这个命令有两个作用,一是确认下线判定,二是进行领导者选举。
    过程:
    1)每个做主观下线的sentinel节点向其他sentinel节点发送上面那条命令,要求将它设置为领导者。
    2)收到命令的sentinel节点如果还没有同意过其他的sentinel发送的命令(还未投过票),那么就会同意,否则拒绝。
    3)如果该sentinel节点发现自己的票数已经过半且达到了quorum的值,就会成为领导者
    4)如果这个过程出现多个sentinel成为领导者,则会等待一段时间重新选举。

    转移

    1)挑一个新的主服务器

    2)把其它从服务器的主服务器改成新的

    3)把之前的主服务器改为新主服务器的从服务器

    怎么挑新的主服务器

    1)删除所有下线服务器

    2)删除五秒内没回复INOF命令的服务器

    3)删除数据旧的服务器(连接断开超过down-after-millseconds*10)

    4)根据优先级,选出最高的。

    重点提炼

     

    • Sentinel 是一个特殊模式下的 Redis 服务器, 它使用了不同的命令表, 所以 Sentinel 能使用的命令和普通服务器不同。
    • Sentinel 会读入用户指定的配置文件, 为每个要被监视的主服务器创建相应的实例结构, 并创建连向主服务器的命令连接和订阅连接, 其中命令连接用于向主服务器发送命令请求, 而订阅连接则用于接收指定频道的消息。
    • Sentinel 向主服务器发送 INFO 命令获得属下从服务器信息, 为这些从服务器创建实例结构、命令连接和订阅连接。
    • 默认 Sentinel 十秒一次向被监视的主服务器和从服务器发送 INFO 命令, 当主服务器处于下线状态, 或者 Sentinel 正在对主服务器进行故障转移操作时, Sentinel 向从服务器发送 INFO 命令的频率会改为每秒一次。
    • 对于监视同一个主服务器和从服务器的多个 Sentinel 来说, 它们会以每两秒一次的频率, 通过向被监视服务器的 __sentinel__:hello 频道发送消息来向其他 Sentinel 宣告自己的存在。
    • 每个 Sentinel 也会从 __sentinel__:hello 频道中接收其他 Sentinel 发来的信息, 并根据这些信息为其他 Sentinel 创建相应的实例结构, 以及命令连接。
    • Sentinel 只会与主服务器和从服务器创建命令连接和订阅连接, Sentinel 与 Sentinel 之间则只创建命令连接。
    • Sentinel 以每秒一次的频率向实例(包括主服务器、从服务器、其他 Sentinel)发送 PING 命令, 并根据实例对 PING 命令的回复来判断实例是否在线
    • 当 Sentinel 将一个主服务器判断为主观下线时, 它会向同样监视这个主服务器的其他 Sentinel 进行询问, 看它们是否同意这个主服务器已经进入主观下线状态。
    • 当 Sentinel 收集到足够多的主观下线投票之后, 它会将主服务器判断为客观下线, 并发起一次针对主服务器的故障转移操作。
    展开全文
  • Sentinel

    2019-01-13 16:04:53
    什么是SentinelSentinel 面向分布式服务架构的轻量级流量控制框架,由阿里巴巴开发,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。 ...

    2018年11月底,Hystrix官方宣布不再更新,最终版本也停留在v1.5.18;Hystrix官方同时也推荐我们使用新一代熔断器神器Resilience4j;但我们今天要讲的是阿里的Sentinel。

    什么是Sentinel?

    Sentinel 是面向分布式服务架构的轻量级流量控制框架,由阿里巴巴开发,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。

    Sentinel 的主要特性:
    Sentinel特性

    Sentinel 的开源生态:
    开源生态

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

    Sentinel与Hystrix对比:对比

    Sentinel的历史

    • 2012 年,Sentinel 诞生,主要功能为入口流量控制。
    • 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。
    • 2018 年,Sentinel 开源。
    展开全文
  • 1 Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式服务架构的轻量级流量控制框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护...
  • Sentinel源码编译

    2020-06-29 22:45:49
    Sentinel 面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 0x01:克隆源码 gitclonehttps://github.com/alibaba/Sentinel.git 0x02:导入eclipse中...
  • Redis Sentinel服务配置

    万次阅读 2015-10-19 10:57:17
    1 Redis Sentinel服务配置 1.1简介 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常...
  • Redis Sentinel Java连接

    千次阅读 2018-09-09 12:48:39
    有关Redis Sentinel的具体配置,在前面的文章中已经有, 可以参考:https://blog.csdn.net/vtopqx/article/details/49247285 Redis Sentinel配置完成后,有的需要在Java中连接,其中有好些人问过我相关代码, 所以...
  • Linux redis-Sentinel配置

    千次阅读 2019-04-25 08:22:23
    下载 下载地址:https://redis.io/download 在/usr/local/src目录下执行下载。 wget ... 安装 解压到/usr/local/src目录,放源码包。 tar xzf redis-3.2.8.tar.gz ...创建目录/usr/local/redis: make...
  • 使用GDAL读取Sentinel数据

    千次阅读 热门讨论 2018-08-29 22:50:17
    使用GDAL读取Sentinel数据 GDAL 2.1已经原生支持对于Sentinel数据的...下载下来的Sentinel数据一个ZIP压缩包,里面包含了JPEG2000格式的影像数据以及一些XML格式的元数据文件。 GDAL将Sentinel数据看做一个数据...
  • Redis sentinel 节点修改密码

    千次阅读 2018-06-14 20:28:16
    Sentinel和Redis身份验证 当一个master配置为需要密码才能连接时,客户端和slave在连接时都需要提供密码。 master和slave节点 master通过requirepass设置自身的密码,不提供密码无法连接到这个master。 ...
  • 折腾了半天终于大功告成,现在把重要的地方记录下来,希望帮到有需要的开发者: 1.添加三个依赖 <dependencyManagement> <dependencies> <dependency>...org.springframework.cloud&l...
  • Redis Sentinel的信息同步

    千次阅读 2014-04-14 19:35:41
    Sentinel采用Gossip的思想来做sentinel信息的同步,11年写了一篇文章Gossip算法学习 ,可以看下 其核心思想如下: 1. 去中心化,各个节点之间完全对等,不需要任何的中心节点。 2. 每个参与者都有关于一个自己...
  • sentinel流控设置--流控预热

    万次阅读 2020-06-28 23:59:11
    预热 顾名思义,意思就是让流量慢慢的涨,不让流量突然的达到阈值 这里直接修改之前的规则,选择Warm up 使用场景在秒杀场景
  • Pointer Sentinel Mixture Models TLDR; The authors combine a standard LSTM softmax with Pointer Networks in a mixture model called Pointer-Sentinel LSTM (PS-LSTM). The pointer networks helps with rare ...
  • 要启动sentinel-dashboard首先要找到启动类,sentinel-dashboard一个标准的SpringBoot工程,启动可以在sentinel-dashboard这个项目中找到。 直接启动DashboardApplication.java类,访问如下地址 ...
  • sentinel流控设置--线程数直接失败

    万次阅读 2020-06-28 17:03:19
    为了演示效果,修改Controller代码,让线程多等待一会 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController ...
  • Redis Sentinel 和Redis Cluster对比

    千次阅读 2019-08-13 19:16:10
    Sentinel(哨兵模式)Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也一个...
  • 目录 概述 哨兵的分布式特性 安装Redis-Sentinel集群 Redis-Sentinel集群配置 redis.conf配置 ...sentinel.conf配置 ...Redis-Sentinel哨兵机制为Redis提供了高可用性,这意味着你可以使用哨兵模式创建...
  • sentinel流控设置--流控排队等待

    万次阅读 2020-06-29 00:09:55
    排队等待 顾名思义,请求过多时,让请求匀速的进入后台进行处理。采用漏斗算法,控制流量 设置超时时间,超时的则将请求抛弃,返回错误信息
  • Sentinel 学习笔记

    2019-08-21 16:53:16
    Sentinel Alibaba Sentinel 官方文档地址: https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D Sentinel使用(SFP框架 使用说明): 1. 在pom.xml文件中加入依赖,根据所依赖的Spring Cloud及Spring ...
  • Redis & Redis Sentinel 基本使用

    千次阅读 2018-03-22 23:14:01
    Redis-sentinel 基本使用 本文主要介绍如下几点内容: Redis基本配置 Redis Sentinel基本配置 Redis Client客户端基本内容 Redis Sentinel客户端基本内容 与本文相关的代码与配置文件都已经上传至github上: ...
  • Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立...
  • 阿里Sentinel整合Zuul网关详解

    千次阅读 2019-05-10 09:20:01
    目前来说,大部分公司线上的网关应该Zuul,所以今天我们就来看看如何在Zuul中整合Sentinel。本来想基于Spring Cloud Alibaba来进行整合讲解,整合的时候发现目前还没更新版本,依赖还是之前的版本,咱们就以最原生...
  • Sentinel: 使用注解限流

    千次阅读 2019-03-12 13:07:33
    在前面我们对Sentinel做了一个详细的介绍,可以手动的通过Sentinel提供的SphU类来保护资源。这种做法不好的地方在于每个需要限制的地方都得写代码,从 0.1.1 版本开始,Sentinel 提供了 @SentinelResource 注解的...
  • Spring Cloud Alibaba整合Sentinel流控

    千次阅读 2019-04-22 09:36:21
    前面我们都直接通过集成sentinel的依赖,通过编码的方式配置规则等。对于集成到Spring Cloud中阿里已经有了一套开源框架spring-cloud-alibaba,就是用于将一系列的框架成功的整合到Spring Cloud中。 我这边Spring ...

空空如也

1 2 3 4 5 ... 20
收藏数 15,847
精华内容 6,338
关键字:

sentinel