sentinel dashboard分布式改造落地设计实现解释(二)-分布式discovery组件

discovery

discovery负责维护app/机器资料库,transport健康检测, transport上下线处理。discovery关键是分布式存储,后续研究一下raft,其复制,状态机,快照技术,但个人觉得,discovery功能只是作为目录,提供app/resource,支持搜索和规则更改,不需要太严谨和高效的技术保障。

上图discovery涉及的znode,discovery监听transport的实例(item)的上下线,维护app/机器,删除对应分片。

app/机器资料库

       discovery负责构建app/机器资料库和健康检查,用于查询metrics,规则发布,原discovery组件通过心跳登记app/机器实例,更新lastHeartbeatTime, 检查lastHeartbeatTime判断机器是否监控。改造后,心跳实现基于zookeeper的watcher方式,通过监控znode获得上下线通知, 增加或移除machine。

上图基于zookeeper的discovery实现

上图zookeeper discovery初始化 

  • refreshAppAndMachine

刷新app/机器资料,读取/transport/instances的子节点,获取node data,dataMachineInfo序列号,反序列化获得MachineInfo对象,更新AppManagement

  • UpAndDownTransportListenerManager

监听管理器负责设置和启动监听器,包括zookeeper连接状态监听,tranport上线和下线3个监听器

transport上线下线

transport实例下线或撤下,相应的机器和分片需要增加或删除

transport上线

transport上线,增加机器对象

transport下线

transport下线,做两件事,移除机器对象,删除对应的分片

删除对应分片,首先成为主节点,主节点负责删除

选主涉及到上图两个节点

选主使用latch znode,选为主节点,写入自身的实例id到instance znode,即ip:port,选主服务凭此判断是否自身节点选上(实例Id相同),选主是否已完成

Zookeeper重连

Zookeeper连接断开重连后,需要对app/机器资料库校对,实际调用refreshAppAndMachine

NEXT

弹性资源

目前版本分布式调度资源预先启动worker,需要对服务数量评估,启动相适应worker实例数,下一版本集成弹性资源组件,根据服务数(实际是transport数量),动态申请资源

上图集成弹性资源的技术架构图

  1. dashboard监控分片数量,也是transport登记数量,根据数量按一定策略申请/注销fetcher资源
  2. fetcher主节点监控fetcher实例,每次调度根据当前的fetcher分配分片

 app/机器资料库

改造后每个dashboard的app/机器资料库是全量的,服务实例数多,性能和资源影响大,特别是dashboard上下线。

至此,sentinel dashboard分布式改造实现解释完成,后面继续sentinel原理源码分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】护网蓝队之应急响应

蓝队技术栈 Linux入侵排查 系统排查 一、查看历史命令 在Linux系统中,检查历史命令记录是安全审计的重要步骤之一,它可以帮助您了解系统上用户(包括潜在的黑客)的活动。以下是对您描述的重新表述和补充: 检查历史命…

webpack自定义插件 ChangeScriptSrcPlugin

插件文件 class ChangeScriptSrcPlugin {apply(compiler) {const pluginName "ChangeScriptSrcPlugin";compiler.hooks.compilation.tap(pluginName, (compilation, callback) > {compilation.hooks.htmlWebpackPluginAlterAssetTags.tapAsync(pluginName,(html…

LabVIEW提高开发效率技巧----节省内存

在LabVIEW开发过程中,内存管理是保障程序稳定性和性能的关键。本文将详细介绍如何通过队列处理来节省内存,尤其是如何通过解耦释放不再需要的数据,防止内存泄漏。通过多个实际例子,从不同角度探讨队列处理在大数据量或长时间运行的…

使用Airtest自动化某云音乐爬取歌曲名称

简介 本文将介绍如何使用Airtest自动化工具来模拟用户操作,从某云音乐中爬取与特定关键词相关的歌曲名称。我们将以搜索“文字”相关的歌曲为例,并将结果保存到本地文件。 准备工作 安装Airtest并配置好Android设备或模拟器。确保你的设备上已安装某云…

C0027.在Clion中解决CPU和内存过高的问题

解决办法 最新版的 clion 在 advance setting里,可以勾选 Use the Resharper C language engine (CLion Nova)。 有显著的性能提升。

深入探索JavaCV:功能强大的Java计算机视觉库

🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…

积木报表静态资源不生效,界面乱码 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 从实战中分析问题,解决问题,以下笔记学习为主 关于JimuReport的网站:文档中心 1. 问题所示 引入积木报表之后,界面静态文件不生效,最终截图如下: 大致浏览器终端报错如下: 基本信息如下: Uncaught SyntaxError: U…

项目管理的坎坷之路与 MBTI 的启示录

项目管理这一路走来,经历了无数的坎坷、不顺和阻碍。幸运的是,遇见 MBTI 之后,我仿佛看到了新的希望,终于我也看到了花团锦簇,也看到了灯彩佳话。那一夜,我也曾梦见百万雄兵。 什么是 MBTI ? M…

AI大模型学习路线路径,巨详细!

大模型技术已经成为推动人工智能发展的关键力量。无论你是初学者还是有经验的开发者,想要掌握大模型应用,都需要遵循一定的学习路线。 从核心技术解析到模型微调与私有化部署,逐步深入大模型应用的世界。 这份学习路线图详细的介绍了那年每…

gitee建立/取消关联仓库

目录 一、常用指令总结 二、建立关联具体操作 三、取消关联具体操作 一、常用指令总结 首先要选中要关联的文件,右击,选择Git Bash Here。 git remote -v //查看自己的文件有几个关联的仓库git init //初始化文件夹为git可远程建立链接的文件夹…

【CSS3】css开篇基础(3)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

经营异常移除申请操作流程

经营异常是怎么回事?是什么意思?企业工商异常通常由以下几个原因造成1.未及时填报年度报告(补报年报后解除,目前新规最高罚款一万)2.公司地址是挂靠或者搬迁地址未及时变更,被列入地址异常名录。&#xff0…

MFC工控项目实例二十六创建数据库

承接专栏《MFC工控项目实例二十五多媒体定时计时器》 用选取的型号为文件名建立文件夹,再在下面用测试的当天的时间创建文件夹,在这个文件中用测试的时/分/秒为数据库名创建Adcess数据库。 1、在StdAfx.h文件最下面添加代码 #import "C:/Program F…

flutter TabBar自定义指示器(带文字的指示器、上弦弧形指示器、条形背景指示器、渐变色的指示器)

带文字的TabBar指示器 1.绘制自定义TabBar的绿色带白色文字的指示器 2.将底部灰色文字与TabrBar层叠,并调整高度位置与胶囊指示器重叠 自定义的带文字的TabBar指示器 import package:atui/jade/utils/JadeColors.dart; import package:flutter/material.dart; im…

LeetCode102. 二叉树的层序遍历(2024秋季每日一题 43)

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入…

React 项目热更新失效问题的解决方案和产生的原因

背景和意义 在修复React项目热更新失效的问题时,经过一系列问题排查和依赖升级,最终成功修复了问题并为后续开发规避了类似的问题。 依赖升级 Vite版本升级 原React项目Vite版本升级到^4.4.5 Vite 4 在构建和开发服务器的性能上进行了优化&#xff…

气膜高尔夫:不惧天气,挥杆无忧—轻空间

高尔夫是一项户外运动,但恶劣天气常常成为阻碍。然而,在气膜高尔夫球馆中,无论外面下雨或酷暑,内部环境始终保持宜人,提供理想的打球体验。气膜技术为球员打造了一个全天候的运动空间,彻底摆脱了天气的束缚…

【中危】Oracle TNS Listener SID 可以被猜测

一、漏洞详情 Oracle 打补丁后,复测出一处中危漏洞:Oracle TNS Listener SID 可以被猜测。 可以通过暴力猜测的方法探测出Oracle TNS Listener SID,探测出的SID可以用于进一步探测Oracle 数据库的口令。 建议解决办法: 1. 不应该使…

大数据治理:数据时代的挑战与应对

目录 大数据治理:数据时代的挑战与应对 一、大数据治理的概念与内涵 二、大数据治理的重要性 1. 提高数据质量与可用性 2. 确保数据安全与合规 3. 支持数据驱动的决策 4. 提高业务效率与竞争力 三、大数据治理的实施策略 1. 建立健全的数据治理框架 2. 数…

【Linux系统编程】冯诺依曼体系结构与操作系统

目录 1、冯诺依曼体系结构 1.1 冯诺依曼体系结构的组成 1.2 程序运行时必须要加载到内存 1.3 数据通信 1.4 为什么要有内存 2、操作系统 2.1 概念 2.2 设计OS的目的 2.3 如何理解管理 2.4 系统调用和库函数的概念 1、冯诺依曼体系结构 我们常见的计算机,如…