首页 > 其他分享 >sentinel管理后台

sentinel管理后台

时间:2024-08-06 14:54:38浏览次数:10  
标签:管理 信息 拉取 后台 client 规则 sentinel server

在上文中,我们学习了如何在应用中集成 sentinel,并定义资源,但我们仍需要为资源定义规则。

在应用日常运行过程中,当发现资源需要被限流,在项目中通过代码定义规则、验证、发布,这个过程费时费力,亟需一种更加便捷的运维工具。

sentinel 中提供了单独部署的控制台应用:sentinel dashboard,使得我们可以在浏览器上以图形化的方式对资源规则进行 crud,大大减少了维护的成本。

在这里插入图片描述

通信模块

我们将单独部署的 sentinel dashboard 称之为 sentinel server,集成 sentinel 的应用称之为 sentinel client。那 server 和 client 之间怎么通信呢?

server 和 client 之间是通过 http 协议进行通信,client 如果想要搭配 server 使用,需要额外在应用中引入 sentinel-transport 模块用于通信。

transport 模块的实现有三种:

  • 基于 java.net.ServerSocket 实现的 sentinel-transport-simple-http 模块
  • 基于 Spring MVC 实现的 sentinel-transport-spring-mvc 模块
  • 基于 Netty 实现的 sentinel-transport-netty-http 模块

如无特殊要求,一般使用 sentinel-transport-simple-http 即可,我们下文也以此来介绍 server 和 client 之间的通信原理。

客户端发现

在开始的开始之前,我们有个问题,server 是如何发现 client 的呢?是借助于 zookeeper 进行的服务发现嘛?还是其他的类似机制?

倒也没那么复杂,sentinel 没有借助额外的组件来实现服务发现。只需 client 启动时加入几个 JVM 参数,就可将 client 当前的机器信息上报给 server:

  • -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口
  • -Dproject.name client 项目名称
  • -Dcsp.sentinel.api.port=xxxx 如果一台机器上部署了多个 client,为了防止端口冲突,可以自行指定 client 和 server 通信的端口(选填)

那么它是怎么上报的?何时上报的呢?

心跳机制

在 client 中,当进入资源时,sentinel 会触发一系列初始化动作,其中就有 HeartbeatSender 的初始化(在 sentinel扩展章节有介绍)。HeartbeatSender 在初始化之后,会定时向 csp.sentinel.dashboard.server 地址发送心跳,心跳信息里包含当前机器 ip、port、sentinel 版本等信息。

server 接收到了心跳信息,会将心跳信息中的机器信息添加到列表中,并记录最后一次心跳时间(如果最后心跳时间距今超过 30s,则标记 client 失联)。

事件通知

好了,现在 server 也发现 client 了。那如果我在 server 进行了规则的修改,client 是如何感知到并修改当前服务的规则呢?

我们通过下面的流程图来了解规则从浏览器修改到 client 内部规则更新的整个过程:

在这里插入图片描述

根据上图我们可以看到核心部分就是根据请求的 commandName 找到对应的 handler。

在 sentinel 中会通过 SPI 机制找到所有的 CommandHandler 实现类,然后通过解析类上的 @CommandMapping 注解获取 commandName 和 handler 的对应关系。

在这里插入图片描述

数据拉取

在了解了 server 如何发现 client 以及 server 如何将事件推送到 client 之后。接下来我们来了解下 server 如何主动从 client 中拉取数据的。

为了能够在 dashboard 中查看客户端的实时调用、配置规则等信息,server 中需要主动拉取 client 的以下几种信息:

  • 「实时监控」页面的监控统计信息
  • 「簇点链路」页面的调用链路信息
  • 各个规则模块的配置规则信息

如何拉取监控信息

  1. 浏览器调用 /metric/queryTopResourceMetric.json 接口,从 InMemoryMetricsRepository 获取 metrics 数据
  2. InMemoryMetricsRepository 数据由 MetricFetcher 定时从 client 中拉取
  3. client 内部的 metrics 存储于文件中,通过 MetricSearcher 可以按照时间进行检索(metrics 具体写入、查询逻辑后续章节会介绍))

在这里插入图片描述

如何拉取链路信息

  1. 浏览器调用 /resource/machineResource.json 接口,通过 SentinelApiClient 从 client 拉取数据
  2. client 从 Constants.ROOT 拉取链路信息或从 ClusterBuilderSlot#clusterNodeMap 拉取资源

如何获取规则等信息

  1. 浏览器调用 /v1/flow/rules 接口,通过 SentinelApiClient 从 client 拉取规则数据
  2. client 从对应的 RuleManager(如:FlowRuleManager)获取规则数据

在这里插入图片描述

总结

本章我们学习了 sentinel dashboard(server) 如何搭配 sentinel 的业务应用(client)使用,并介绍了 server 和 client 之间的底层通信行为,其大致可分为三种:

  1. client 通过心跳机制,使得 server 发现 client 并记录
  2. server 在发生规则变更时,会发送事件请求到 client,client 内部通过 commandName 的分发来处理对应的事件
  3. server 会以定时、实时的方式通过 http 请求从 client 拉取数据,从而在 dashboard 中实时展示客户端请求等信息

标签:管理,信息,拉取,后台,client,规则,sentinel,server
From: https://blog.csdn.net/qq_31996357/article/details/140943775

相关文章

  • (十一)项目风险管理
    一、定义项目风险管理的目的在于提高正面风险的概率和影响,降低负面风险的概率和影响,从而提高项目成功可能性。其过程包括:11.1规划风险管理:定义如何实施风险管理活动的过程;11.2识别风险:识别单个项目风险,以及整个项目风险的来源,并记录风险特征的过程;11.3实施定性风险分析......
  • springboot+vue农产品在线管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网的普及,电子商务已成为推动各行各业转型升级的重要力量。在农业领域,传统农产品销售模式面临着信息不对称、流通环节多、成本高企等挑战,严重制约了农产品的市场竞争力与农民的收入增长。因此,构建一个高效......
  • springboot+vue农产品销售与管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容进度安研究背景随着信息技术的飞速发展和农业现代化进程的加快,农产品销售与管理模式正经历着深刻的变革。传统农产品销售链条长、信息不对称、流通效率低等问题日益凸显,严重制约了农业产业的升级与农民收入的增加。特别是在“互联网+”背景......
  • 作业管理是计算机科学中的一个重要领域,它主要关注如何高效、有效地管理和控制计算机系
    作业管理是计算机科学中的一个重要领域,它主要关注如何高效、有效地管理和控制计算机系统中的任务执行。作业管理不仅包括任务的调度和执行,还涉及到用户与计算机系统之间的交互方式,如界面管理、人机交互、图形界面、语音控制以及虚拟现实等技术。任务管理:这是作业管理的核......
  • 前端包管理工具 -- NPM、CNPM、NVM、NRM、YARN、NPX、PNPM
    前端包管理工具NPM、CNPM、NVM、NRM、YARN、NPX、PNPM一、npm包管理工具、常用命令npminstall<pack_name>npmrundev#npm仓库登录、退出npmloginnpmlogoutnpmadduser#npm发布npmpublishnpmunpublishnpminfo<pack_name>二、cnpm淘宝的npm源......
  • 计算机毕业设计django+vue出租车服务管理信息系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和共享经济的兴起,出租车服务行业正经历着前所未有的变革。传统出租车行业面临着调度效率低下、乘客体验不佳、车辆管......
  • Python:学生成绩管理系统(大学编程期末实验)
    引言在这个信息时代,教育管理的自动化已成为提高效率的关键。本文将介绍如何使用Python开发一个学生成绩管理系统,旨在简化成绩记录、查询和分析的过程。创作灵感来源本项目灵感来源于我在教育机构的工作经历,以及对提高教育管理效率的持续追求。通过复盘过往项目,我意识到一个......
  • Java计算机毕业设计咖啡馆管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着咖啡文化的普及和消费者对品质生活追求的不断提升,咖啡馆作为休闲聚会、商务洽谈的重要场所,其数量与规模在全球范围内迅速增长。然而,传统的手工管......
  • CVE-2023-0562银行储物柜管理系统登录页面sql注入漏洞靶场复现
    在PHPGurukul银行储物柜管理系统1.0中发现了一个漏洞。它被评定为临界状态。受此问题影响的是组件登录的文件index.php的一些未知功能。对参数username的操作会导致sql注入。攻击可能是远程发起的。该漏洞已被公开,并可能被利用。此漏洞的标识符是VDB-219716。抓登录包放salmap......
  • 基于uniapp微信小程序+SpringBoot+Vue的生日福利管理系统设计和实现(源码+论文+部署讲
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......