• Sentinel安装使用和配置,sentineldashboard安装使用和配置


    Sentinel安装使用和配置,sentinel-dashboard安装使用和配置

    ================================

    ©Copyright 蕃薯耀 2021-04-01

    https://www.cnblogs.com/fanshuyao/

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

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

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

    在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。
    Hystrix 通过 线程池隔离 的方式,来对依赖(在 Sentinel 的概念中对应 资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。

    Sentinel 对这个问题采取了两种手段:
    通过并发线程数进行限制
    和资源池隔离的方法不同,Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要您预先分配线程池的大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。

    通过响应时间对资源进行降级
    除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。

     


    二、Sentinel dashboard控制台安装启动
    1、Sentinel官网下载地址:

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

    当前最新版本是:sentinel-dashboard-1.8.1.jar

    版本一致性:
    Spring Cloud Alibaba Version:2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE
    Sentinel Version:1.8.0
    Nacos Version:1.4.1
    RocketMQ Version:4.4.0
    Dubbo Version:2.7.8
    Seata Version:1.3.0


    Spring Cloud Alibaba Version:2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE
    Sentinel Version:1.7.1
    Nacos Version:1.2.1
    RocketMQ Version:4.4.0
    Dubbo Version:2.7.6
    Seata Version:1.2.0

    官方版本说明:

    https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

    Spring Cloud Alibaba Sentinel官网文档:

    https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel

    Sentinel 控制台官网文档:

    https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0


    2、Sentinel dashboard控制台运行启动
    注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

    Sentinel默认启动端口是8080,和Tomcat默认的端口冲突,如果需要修改Sentinel默认启动端口,使用参数:-Dserver.port=8070

    Sentinel 启动命令格式:

    java -jar sentinel-dashboard.jar
    java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

    示例:

    java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

    启动后:
    INFO: Sentinel log output type is: file
    INFO: Sentinel log charset is: utf-8
    INFO: Sentinel log base directory is: C:\Users\用户名\logs\csp\
    INFO: Sentinel log name use pid is: false
    Tomcat started on port(s): 8700 (http) with context path ''

    Sentinel Linux后台启动:

    nohup java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -jar /java/sentinel-dashboard-1.8.1.jar &

    Sentinel 指定日志目录启动:

    java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.log.dir=C:\logs\sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

    启动后:
    INFO: Sentinel log output type is: file
    INFO: Sentinel log charset is: utf-8
    INFO: Sentinel log base directory is: C:\logs\sentinel-dashboard\
    INFO: Sentinel log name use pid is: false

    启动(是否注册Sentinel自己):
    不注册Sentinel自己

    java -Dserver.port=8070 -Dcsp.sentinel.log.dir=C:\logs\sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

    注册Sentinel自己

    java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.log.dir=C:\logs\sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

    访问地址:

    http://localhost:8070/

    用户名:sentinel
    密码:sentinel

    从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是:sentinel


    3、Sentinel dashboard控制台启动配置项

    复制代码
    -Dserver.port=8080:用于指定 Sentinel 控制台端口为 8080,如若8080端口冲突,可使用 -Dserver.port=新端口 进行设置。。
    -Dcsp.sentinel.dashboard.server=localhost:8080:指定控制台地址和端口,会自动向该地址发送心跳包。地址格式为:hostIp:port,l配置成ocalhost:8080即监控自己
    -Dproject.name=sentinel-dashboard:指定Sentinel控制台程序显示的名称
    -Dcsp.sentinel.log.dir:指定Sentinel 日志文件目录,默认是:${user.home}/logs/csp/
    -Dcsp.sentinel.api.port=xxxx:本地的 Sentinel 客户端端口(可选,默认是 8719,有冲突会尝试向后探测)。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口(默认是 8719)。
    -Dcsp.sentinel.app.type=1:从 1.6.3 版本开始,控制台支持网关流控规则管理。启动参数以将您的服务标记为 API Gateway,在接入控制台时您的服务会自动注册为网关类型,然后您即可在控制台配置网关规则和 API 分组。
    
    用户可以通过如下参数进行鉴权配置:
    -Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
    -Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel;
    -Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
    复制代码

    同样也可以直接在 Spring properties 文件中进行配置。

    注意:部署多台控制台时,session 默认不会在各实例之间共享,这一块需要自行改造。

    配置方式
    Sentinel 提供如下的配置方式:
    JVM -D 参数方式
    properties 文件方式(1.7.0 版本开始支持)
    其中,project.name 参数只能通过 JVM -D 参数方式配置(since 1.8.0 取消该限制),其它参数支持所有的配置方式。
    优先级顺序:JVM -D 参数的优先级最高。若 properties 和 JVM 参数中有相同项的配置,以 JVM 参数配置的为准。
    用户可以通过 -Dcsp.sentinel.config.file 参数配置 properties 文件的路径,支持 classpath 路径配置(如 classpath:sentinel.properties)。
    默认 Sentinel 会尝试从 classpath:sentinel.properties 文件读取配置,读取编码默认为 UTF-8。

    复制代码
    配置项    类型    默认值    最小值    描述
    auth.enabled    boolean    true    -    是否开启登录鉴权,仅用于日常测试,生产上不建议关闭
    sentinel.dashboard.auth.username    String    sentinel    -    登录控制台的用户名,默认为 sentinel
    sentinel.dashboard.auth.password    String    sentinel    -    登录控制台的密码,默认为 sentinel
    sentinel.dashboard.app.hideAppNoMachineMillis    Integer    0    60000    是否隐藏无健康节点的应用,距离最近一次主机心跳时间的毫秒数,默认关闭
    sentinel.dashboard.removeAppNoMachineMillis    Integer    0    120000    是否自动删除无健康节点的应用,距离最近一次其下节点的心跳时间毫秒数,默认关闭
    sentinel.dashboard.unhealthyMachineMillis    Integer    60000    30000    主机失联判定,不可关闭
    sentinel.dashboard.autoRemoveMachineMillis    Integer    0    300000    距离最近心跳时间超过指定时间是否自动删除失联节点,默认关闭
    sentinel.dashboard.unhealthyMachineMillis    Integer    60000    30000    主机失联判定,不可关闭
    server.servlet.session.cookie.name    String    sentinel_dashboard_cookie    -    控制台应用的 cookie 名称,可单独设置避免同一域名下 cookie 名冲突
    复制代码

    更多配置项见:

    https://github.com/alibaba/Sentinel/wiki/%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%A1%B9

    注:若通过控制台推送规则时出现 invalid type 或 empty type 的错误,请确保 transport 模块版本与 core 模块版本保持一致;若控制台版本 >= 1.7.1,请将接入端的相关依赖也升级至 1.7.1 及以上版本。


    三、Sentinel规则管理及推送
    一般来说,规则的推送有下面三种模式:

    推送模式 说明 优点 缺点
    1、原始模式
    API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource)
    优点
    简单,无任何依赖


    缺点
    不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境


    2、Pull 模式
    扩展写数据源(WritableDataSource), 客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件 等
    优点
    简单,无任何依赖;规则持久化 不保证一致性;


    缺点
    实时性不保证,拉取过于频繁也可能会有性能问题。

    3、Push 模式
    扩展读数据源(ReadableDataSource),规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。
    优点
    规则持久化;一致性;快速


    缺点
    引入第三方依赖


    四、、项目配置Sentinel,在Sentinel dashboard实现监控
    1、pom.xml文件引入依赖

    引入 Sentinel,使用 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-sentinel 的 starter。

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>


    2、application.properties文件配置

    #spring.cloud.sentinel.transport.port 端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。
    spring.cloud.sentinel.transport.port=8719
    #默认是:localhost:8080,自定义后:localhost:8070
    spring.cloud.sentinel.transport.dashboard=localhost:8070

    3、使用浏览器打开:

    http://127.0.0.1:8901/sentinel

    刚打开时,没有发现我们的项目,那是因为Sentinel使用了懒加载,要请求一下接口才会显示出来:
    http://127.0.0.1:8901/sentinel

    4、Sentinel 详细项目使用

    见:

    https://www.cnblogs.com/fanshuyao/p/14607028.html
  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/ExMan/p/15876491.html
Copyright © 2020-2023  润新知