首页 > 其他分享 >【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)

时间:2023-01-04 19:32:19浏览次数:63  
标签:实战 sentinel 规则 Sentinel 控制台 推送 客户端

Sentinel控制台

Sentinel提供了一个轻量级的开源控制台 Sentinel Dashboard,它提供了机器发现与健康情况管理、监控(单机和集群)、规则管理与推送等多种功能。

Sentinel控制台提供的功能如下

  • 查看机器列表以及健康情况:Sentnel 控制台能够收集 Sentinel 客户端发送的心跳包,判断机器是否在线。
  • 监控(单机和集群聚合):Sentinel 控制台通过 Sentinel 客户端暴露的监控 API,可以实现秒级的实时监控。
  • 规则管理和推送:通过 Sentinel 控制台,我们还能够针对资源定义和推送规则。
  • 鉴权:从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel。

Sentinel Dashboard是我们配置和管理规则(例如流控规则、熔断降级规则等)的重要入口之一。通过它,我们不仅可以对规则进行配置和管理,还能实时查看规则的效果。

安装Sentinel 控制台

如何下载和安装 Sentinel 控制台,具体步骤如下。

  1. 使用浏览器,您可以从Sentinel Dashboard下载页面在​​release发行版​​中选择下载对应版本的Sentinel控制台的 jar 包,如下图所示。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_客户端

1.1. 点击下载即可,如下图所示。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_02

  1. 此外也可以从最新版本的​​源码仓库​​自行构建Sentinel控制台,下载源码。如下图所示

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_客户端_03

2.1. 使用以下命令将代码打包成一个 fat jar: mvn clean package即可。

  1. 打开命令行窗口,跳转到Sentinel Dashboard jar包所在的目录,执行以下命令,启动 Sentinel Dashboard,使用如下命令启动编译后的控制台:
java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard \
-jar target/sentinel-dashboard.jar

3.1. 上述命令中我们指定几个 JVM 参数,其中 -Dserver.port=8080 是 Spring Boot 的参数, 用于指定 Spring Boot 服务端启动端口为 8080。其余几个是 Sentinel 客户端的参数。

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

  • -Dcsp.sentinel.dashboard.server=localhost:8080 向Sentinel接入端指定控制台的地址,经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问localhost:8080即可访问Sentinel 控制台。
  • -Dproject.name=sentinel-dashboard 向Sentinel指定应用名称,比如上面对应的应用名称就为sentinel-dashboard

从 Sentinel 1.6.0 开始,Sentinel 控制台支持简单的登录功能,默认用户名和密码都是 sentinel。用户可以通过如下参数进行配置:

  • -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 分钟;
  1. 启动完成后,使用浏览器访问“​​http://localhost:8080/”,跳转到​​ Sentinel 控制台登陆页面,如下图。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_客户端_04

  1. 分别输入用户名(sentinel)和密码(123456),点击下方的登录按钮,结果如下图。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_客户端_05

业务服务客户端接入Sentinel服务

业务服务客户端需要引入Transport 模块来与 Sentinel 控制台进行通信。您可以通过 pom.xml 引入 JAR 包:

<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.8.6</version>
</dependency>
配置启动参数

启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口(默认是 8719)。除了修改 JVM 参数,也可以通过配置文件取得同样的效果。

sentinel-core 的配置项

​project.name​​ 项用于指定应用名(appName)。若未指定,则默认解析 main 函数的类名作为应用名。实际项目使用中建议手动指定应用名。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_06

日志相关配置项

若需要在单台机器上运行相同服务的多个实例,则需要加入 -Dcsp.sentinel.log.use.pid=true 来保证不同实例日志的独立性

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_07

sentinel-transport-common 的配置项

csp.sentinel.api.port可不提供,默认为 8719,若端口冲突会自动向下探测可用的端口。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_客户端_08

注意:确保业务客户端有访问量,Sentinel会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,将客户端纳入到控制台的管辖之下。

注意:您还需要根据您的应用类型和接入方式引入对应的 适配依赖,否则即使有访问量也不能被 Sentinel 统计。

验证是否接入成功 - 查看机器列表以及健康情况

客户端正确配置并启动后,会在初次调用后主动向控制台发送心跳包,汇报自己的存在; 控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果在Sentinel 控制台上看到对应的应用,机器列表页面可以看到对应的机器,则表明客户端接入成功了。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_09

当您在机器列表中看到您的机器,就代表着您已经成功接入控制台;如果没有看到您的机器,请检查配置,并通过 ${user.home}/logs/csp/sentinel-record.log.xxx 日志来排查原因,详细的部分请参考 日志文档。

规则管理及推送

Sentinel 控制台同时提供简单的规则管理以及推送的功能。规则推送分为 3 种模式,包括 "原始模式"、"Pull 模式" 和"Push 模式"。

原始模式
规则管理

您可以在控制台通过接入端暴露的 HTTP API 来查询规则。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_10

规则推送

目前控制台的规则推送也是通过规则查询更改HTTP API来更改规则。这也意味着这些规则仅在内存态生效,应用重启之后,该规则会丢失。以上是原始模式。

【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)_推送_11

规则存储

当了解了原始模式之后,我们非常鼓励您通过动态规则并结合各种外部存储来定制自己的规则源。我们推荐通过动态配置源的控制台来进行规则写入和推送,而不是通过Sentinel 客户端直接写入到动态配置源中。在生产环境中,我们推荐 push 模式。

Sentinel 同时还提供应用维度规则推送的示例页面(流控规则页面,前端路由为 /v2/flow),用户改造控制台对接配置中心后可直接通过 v2 页面推送规则至配置中心。Sentinel 抽取了通用接口用于向远程配置中心推送规则以及拉取规则:

  • DynamicRuleProvider<T>: 拉取规则(应用维度)
  • DynamicRulePublisher<T>: 推送规则(应用维度)

用户只需实现 DynamicRuleProvider 和 DynamicRulePublisher 接口,并在 v2 的 controller 中通过 @Qualifier 注解替换相应的 bean 即可实现应用维度推送。

  • Nacos的实现方式
  • Apollo的实现方式

标签:实战,sentinel,规则,Sentinel,控制台,推送,客户端
From: https://blog.51cto.com/alex4dream/5989200

相关文章

  • 靶场实战1-prime1
    本文知识交流学习心得,如果被拿去做违法乱纪的事情,请自行负责,与作者无关 一.信息收集Prime_1目标,获取靶机root权限开启之后,得到用户名victor,但是不知道密码(是需要我......
  • ArcGIS Pro从0到1入门实战教程
     翎树文化书都有1000多分钟视频和样例数据。基于ArcGISPro2.8.前 言2015年1月美国ESRI公司全新设计,推出ArcGISPro1.0版本,原本是解决ArcGIS三维短板问题,经过6年多的......
  • 第十阶段:互联网项目实战
    认清现实,放弃幻想。(特此感谢动力节点老杜分享出来的学习路线)10.第十阶段:互联网项目实战10.1项目:动力商城10.1.1技术架构SpringBoot+SpringCloud+......
  • JS逆向实战10——某集团RSA长加密
    由于本网站较为特殊目标网站加密与其他稍有不同目标网站:68747470733a2f2f65632e6d696e6d6574616c732e636f6d2e636e2f6f70656e2f686f6d652f70757263686173652d696e666f2f......
  • Kotlin实战之Fuel的高阶函数
    ​​Fuel​​​是一个用Kotlin写的网络库,与OkHttp相比较,它的代码结构比较简单,但是它的巧妙之处在于充分利用了​​Kotlin的语言特性​​,所以代码看上去干净利落。OkH......
  • 第七阶段:企业框架实战
    认清现实,放弃幻想。(特此感谢动力节点老杜分享出来的学习路线)7.第七阶段:企业框架实战7.1Linux/Centos7.1.1学习目标1.掌握Centos系统常用命令2.掌握......
  • 《Unity 2D与3D手机游戏开发实战》上架了。
    新书上架了。这本书主要是Unity开发的入门,附带了一个简单的2D例子,一个3DRPG的简单例子和一个尽可能用插件实现的射击游戏的例子。书很薄,不过因为是彩页印刷,价钱不是那么实......
  • USB应用实战视频教程第5期:手把手玩转USB HID免驱方式下位机和QT6.4上位机开发上篇(2022
     前两期USB实战视频教程分享了USBBULK的下位机和QT6.4下位机开发,本期视频教程,我们带来HID的免驱方式玩法,上篇依然是先分享下位机开发方式另外还有很重要的一点,早期的F1,F2......
  • 从实战开始,零基础Docker入门教程
    前提本文是基于windows环境下使用docker的学习文章其实我也有很长的一段时期在ubuntu系统下开发,很喜欢linux系统的纯净方便,但是当你身边同事都是使用windows与你交流沟通......
  • Spring Cloud Alibaba组件之Sentinel
    目录一引入Sentinel学习二Sentinel入门三搭建Sentinel Dashboard四Springboot项目接入Sentinel五接入限流埋点六限流配置七熔断降级八熔断降级SpringClo......