美文网首页SpringCloud_Alibaba
八、Sentinel介绍和使用

八、Sentinel介绍和使用

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2020-06-07 21:12 被阅读0次

    1. Sentinel介绍

    1.1 什么是Sentinel

    Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量
    为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

    1.2 Sentinel 特征

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

    1.3 Sentinel 2大主要组成部分

    1 核心库(Java 客户端)

    不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。

    2 控制台(Dashboard)

    基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

    2. Sentinel使用

    Sentinel所有知识都可以官网查询:官网地址

    2.1 安装Sentinel控制台

    ```
    # 直接使用jar命令启动项目(控制台本身是一个SpringBoot项目)
    java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar
    ```
    
      1. 防火墙将端口放行,重载规则后浏览器访问 ( 默认用户名密码是 sentinel/sentinel )
       firewall-cmd --zone=public --add-port=8850/tcp --permanent 
       firewall-cmd --reload
      

    浏览器地址:http://192.168.2.89:8850

    sentinel登陆界面
    登陆后界面
      1. 设置Sentinel自启动(jar包自启动)
      • 在jar包同目录下新建启动脚本
        vim sentinel-start.sh
        # 加入如下内容:
        #!/bin/sh
        export JAVA_HOME=/usr/local/jdk1.8.0_251
        export PATH=$JAVA_HOME/bin:$PATH
        nohup java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar /usr/local/sentinel/sentinel-dashboard-1.7.2.jar > /usr/local/sentinel/sentinel.log 2>&1 &
        echo $! > /var/run/sentinel.pid
        
      • 新建停止脚本sentinel-stop.sh
        vim sentinel-stop.sh
        # 加入如下内容:
        #!/bin/sh
        PID=$(cat /var/run/sentinel.pid)
        kill -9 $PID
        
      • 增加权限
        chmod +x sentinel-start.sh
        chmod +x sentinel-stop.sh
        
      • 新建开机启动脚本
        vim /lib/systemd/system/sentinal.service
        # 加入如下内容:
        #!/bin/sh
        [Unit]
        Description=nacos
        After=network.target
        
        [Service]
        Type=forking
        ExecStart=/usr/local/sentinel/sentinel-start.sh
        ExecStop=/usr/local/sentinel/sentinel-stop.sh
        PrivateTmp=true
        
        [Install]  
        WantedBy=multi-user.target
        
      • 自启命令
        systemctl daemon-reload  #先进行文件生效配置
        systemctl start sentinel # 启动
        systemctl stop sentinel # 停止
        systemctl enable sentinel # 设置自启
        systemctl status sentinel
        
        启动命令时错误:-bash: ./sentinel-start.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
        错误原因:这个文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。
        修改错误:使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把 xxxxxxx.sh中的\r 替换成空白!

    2.2 微服务集成Sentinel

      1. 在pom.xml中加入下面依赖,因容错在上游,所以在消费者中引入
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
      </dependency>
      
      1. 配置文件中配置Sentinel
      spring:
        cloud:
          sentinel:
            transport:
              port: 13001 #跟控制台交流的端口,随意指定一个未使用的端口即可,防火墙放行
              dashboard: 192.168.2.89:8850 # 指定控制台服务的地址
              ##非局域网内的地址,有问题,还未解决
              // TODO
      

    相关文章

      网友评论

        本文标题:八、Sentinel介绍和使用

        本文链接:https://www.haomeiwen.com/subject/uwcvzhtx.html