Skip to main content

moregeek program

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

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的实现方式

©著作权归作者所有:来自51CTO博客作者洛神灬殇的原创作品,请联系作者获取转载授权,否则将追究法律责任

解密秒杀系统架构:不是所有的秒杀都是秒杀-多极客编程

摘要:究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构。本文分享自华为云社区《​​【高并发】秒杀系统架构解密,不是所有的秒杀都是秒杀(升级版)!!​​》,作者: 冰 河。究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构。电商系统架构在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数

【深入浅出sentinel原理及实战】「基础实战专题」零基础实现服务流量控制实战开发指南(2)-多极客编程

你若要喜爱你自己的价值,你就得给世界创造价值。Sentinel的组成部分Sentinel 主要由以下两个部分组成。Sentinel核心库(Java客户端) :Sentinel的核心库不依赖任何框架或库,能够运行于Java 8及以上的版本的运行时环境中,同时对 Spring Cloud、Dubbo 等微服务框架提供了很好的支持。Sentinel控制台(Dashboard) :Sentinel提供的一

精华总结 |「跨越疫情之境,迈向新的征程」盘点一下2022年度我们开发团队对于云原生的技术体系的变革历程-多极客编程

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。「新的挑战已开启,回顾2022年最开心的两件事」一转眼,2022年就这么悄无声息的过去了,对我而言,最高兴的就是新冠疫情已经不是那么可怕了,大家不需要再担心天天怎么去排队做核酸了,哈哈......,相信你也有同感吧!同时也见证了足球史上非常伟大的一幕,梅老板终于圆梦,举起了期盼已久的大力神杯,再次回味一下这个时刻

高并发环境下构建缓存服务,你需要注意这6点-多极客编程

摘要:高并发环境下构建缓存服务需要注意哪些问题?本文分享自华为云社区《​​【高并发】高并发环境下构建缓存服务需要注意哪些问题?​​》,作者:冰 河。缓存特征(1)命中率:命中数/(命中数+没有命中数)(2)最大元素(空间):代表缓存中可以存放的最大元素的数量,一旦缓存中元素的数量超过这个值,或者缓存数据所占的空间超过了最大支持的空间,将会触发缓存清空策略。根据不同的场景,合理设置最大元素(空间)的

【深入浅出sentinel原理及实战】「框架整合专题」sentinel服务框架对接dubbo服务框架整合开发指南(4)-多极客编程

开源框架适配为了减少开发的复杂程度,Sentinel 对大部分的主流框架都进行了适配,例如:Web Servlet、Dubbo、Spring Cloud、gRPC、Spring WebFlux 和 Reactor 等。云原生微服务体系Spring Boot/Spring CloudQuarkusWeb 适配Web ServletSpring WebSpring WebFluxJAX-RS (Jav

微服务系列 2:微服务化框架的模型和治理能力设计-多极客编程

紧接上一篇,​​服务化框架落地的挑战和核心需求​​,那么基于这些核心诉求,我们整个的微服务框架的模型是如何?又该具备哪些核心的治理能力呢?通过本文来一一知晓!一、服务治理的理解随着互联网的发展和容器化的发展,更进一步的推动了微服务化的建设,在微服务体系下,我们的服务治理,首先要做的就是针对我们大量的服务怎么更好的进行管理,保证我们系统在运行过程中能够自动化的发现问题并自动解决一些问题,从而使我们的

es client性能测试初探-多极客编程

最近在工作中协助研发进行了ES优化,效果还是非常明显的,几乎翻倍。除了通过各种业务接口测试ES性能以外,还可以直接请求ES接口,绕过服务,这样应该数据回更加准确。所以,ES Client学起来。 准备工作 首先,先准备了一个ES服务,这里就不多赘述了,大家自己在尝试的时候一定主意好ES Server和ES Client的版本要一致。 其次,新建项目,添加依赖。 学习资料 搜一下,能搜到很多的ES学

版本控制工具git使用指南-多极客编程

前言:git是分布式版本控制系统,由linux创始人亲自设计,目前是最广泛使用的版本控制工具。本文介绍了版本控制系统的发展和GIT历史,并针对GIT安装和常用命令给出了试验。最后还列举了比较全面的指令供参考。1.历史简介1.1什么是版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控

jvm面试大总结-多极客编程

一、汇总 JVM是运行在操作系统之上的,它与硬件没有直接的交互。先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆、方法区,线程私有的有java栈、本地方法栈、程序计数器。 方法区是用来加载class文件的区域,静态变量、常量、类元信息、运行时的常量池存放在在方法区中, 方法区在jdk1.7之前它又叫做永久代,但是jdk1.8之

一文详解rocketmq的存储模型-多极客编程

摘要:RocketMQ 优异的性能表现,必然绕不开其优秀的存储模型。本文分享自华为云社区《​​终于弄明白了 RocketMQ 的存储模型​​》,作者:勇哥java实战分享。RocketMQ 优异的性能表现,必然绕不开其优秀的存储模型 。1 整体概览首先温习下 RocketMQ 架构。整体架构中包含四种角色 :Producer :消息发布的角色,Producer 通过 MQ 的负载均衡模块选择相应的

高并发环境下构建缓存服务,你需要注意这6点-多极客编程

摘要:高并发环境下构建缓存服务需要注意哪些问题?本文分享自华为云社区《​​【高并发】高并发环境下构建缓存服务需要注意哪些问题?​​》,作者:冰 河。缓存特征(1)命中率:命中数/(命中数+没有命中数)(2)最大元素(空间):代表缓存中可以存放的最大元素的数量,一旦缓存中元素的数量超过这个值,或者缓存数据所占的空间超过了最大支持的空间,将会触发缓存清空策略。根据不同的场景,合理设置最大元素(空间)的

web自动化测试入门篇03——selenium使用教程-多极客编程

    😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。 💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。     (阅读目录) 1. 目的   web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通