Sharding运行模式、元数据、持久化详解

运行模式

单机模式

能够将数据源和规则等元数据信息持久化,但无法将元数据同步至多个Sharding实例,无法在集群环境中相互感知。 通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据而产生不一致的错误。 适用于工程师在本地搭建 Apache ShardingSphere 环境。

支持持久化类型jdbc

集群模式

提供了多个Sharding实例之间的元数据共享和分布式场景下状态协调的能力。 在真实部署上线的生产环境,必须使用集群模式。它能够提供计算能力水平扩展和高可用等分布式系统必备的能力。 集群环境需要通过独立部署的注册中心来存储元数据和协调节点状态。

支持持久化配置ZooKeeper、Etcd

总结一下,这两种模式的主要区别在于,运行多个节点的时候,元数据是否共享。比如,你运行了多个单机模式的proxy,这时候,你登录其中一个proxy节点,去新增一张表,那么这张新增的表,只能够在你操作的proxy节点看到,其他节点是看不到的。其他节点要是想要看到的话,也是有一些办法的,等说过元数据之后,咱们再谈一谈单节点之间如何实现数据的共享。而集群模式则能够实现多个节点的元数据共享,当我们在其中一个节点中新增了一张表,其他节点也能够看到新增的表,因为集群模式下,所有的节点的元数据是同步的。这种同步,是通过ZooKeeper或者Etcd这样的中间件实现的。

元数据

元数据是表示数据的数据。从数据库角度而言,则概括为描述数据库的数据。因此如列名、数据库名、用户名、表名等以及数据自定义库表存储的关于数据库对象的信息都是元数据。而 ShardingSphere 中的核心功能如数据分片、加解密等都是需要基于数据库的元数据生成路由或者加密解密的列实现,由此可见元数据是ShardingSphere 系统运行的核心,同样也是每一个数据存储相关中间件或者组件的核心数据。

也就是说,ShardingSphere-Proxy所提供的一切功能,比如:数据分片、读写分离等,都是对元数据组合利用的结果。功能的背后是需要有数据的支撑的。元数据是非常重要的,所以,需要进行持久化存储,我们不能够因为我们的Sharding重启了,元数据发生了丢失。

元数据持久化

不管是单机模式还是集群模式,都需要将元数据保存下来,需要配置对应的仓库。当元数据仓库和配置文件同时存在的情况下,proxy会优先从元数据仓库中读取信息,之后才从配置文件中读取。

  • 单机模式,持久化仓库类型:JDBC

  • 集群模式,持久化仓库类型:ZooKeeper、Etcd

  • 当然元数据也可以不持久,即单机模式的jdbc,默认采用H2数据库内存形式存储。以这种方式启动的proxy,每次从配置文件中读取信息,创建对应资源和规则的元数据,以内存的形式保存下来。proxy结束运行的时候,内存中对应的元数据也会被销毁。

下方图片是使用MySQL作为元数据持久化仓库的方案,我们可以看到其存储的元数据,使用四列信息来描述:id、key、value、parent

单机模式下如何实现元数据的同步

有好好的集群模式不使用,为什么要在单机模式下,实现元数据的同步?

不是不使用,是因为在一些特殊的场景下,不能够使用官方提供的集群模式。

先来说一说,我所面临的场景:

1. 公司的技术栈是Golang,不想要引入过多的Java生态的中间件。

2. 目前Sharding的集群模式支持ZooKeeper、Etcd。Go的技术栈,自然而让就倾向于使用Etcd,但是Proxy组件,集群模式目前不支持使用Etcd,具体可以看这个issue。

3. 公司目前有K8S集群,能够支持自动伸缩和滚动更新,即使,频繁重启proxy不会造成太大的影响。

所以,公司就想要在K8S上部署多个Proxy副本,并且多个副本的元数据持久化仓库指向同一个,这样就可以通过重启Proxy副本的方式,来使用元数据的同步了(当我们配置了持久化仓库了,重启的proxy会优先从仓库中加载元数据,如果仓库为空,才会从配置文件中加载元数据)。

单机模式多节点替代集群模式方案
单机模式多节点替代集群模式方案

 

参考资料:

元数据持久化仓库

元数据在 ShardingSphere 中加载的过程  

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+小程序的鲜花管理系统(鲜花1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本网上花店微信小程序分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理公告信息以及鲜花信息,能够与用户进行相互交流等操作&am…

金融学期末速成笔记

【拯救者】金融学速成(基础习题) 重点: 市场经济是发达的商品经济。在市场经济条件下,市场机制作为资源配置方式,发挥基础性作用。 除具有商品经济的一般特征外,与商品经济相比,市场经济还具有一些新的特征…

后悔没早点知道,Coze 插件 + Cursor 原来可以这样赚钱

最近智能体定制化赛道异常火爆。 打开闲鱼搜索"Coze 定制",密密麻麻的服务报价直接刷屏,即使表明看起来几十块的商家,一细聊,都是几百到上千不等的报价。 有趣的是,这些智能体定制化服务背后,最核心的不只是工作流设计,还有一个被很多人忽视的重要角色 —— …

嵌入式采集网关(golang版本)

为了一次编写到处运行,使用纯GO编写,排除CGO,解决在嵌入式中交叉编译难问题 硬件设备:移远EC200A-CN LTE Cat 4 无线通信模块,搭载openwrt操作系统,90M内存

基于Multisim数字电子秒表0-60S电路(含仿真和报告)

【全套资料.zip】数字电子秒表电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.秒表最大计时值为60秒; 2. 2位数码管显示,分辨率为1秒; 3.具有清零…

昇思大模型平台打卡体验活动:项目2基于MindSpore通过GPT实现情感分类

昇思大模型平台打卡体验活动:项目2基于MindSpore通过GPT实现情感分类 1. 载入与处理数据集 在情感分类任务中,我们使用了IMDB数据集,首先需要对数据进行加载和处理。由于原数据集没有验证集,我们将训练集重新划分为训练集和验证…

Mac如何实现最简单的随时监测实时运行状态的方法

Mac book有着不同于Windows的设计逻辑与交互设计,使得Mac book有着非常棒的使用体验,但是在Mac电脑的使用时间过长时,电脑也会出现响应速度变慢或应用程序崩溃的情况,当发生的时候却不知道什么原因导致的,想要查询电脑…

有趣的Midjourney作品赏析(附提示词)

中文提示词:国风少年 C4D软件,高分辨率,超细节,超现实主义, 英文提示词:National Style Youth Cinema4D,high resolution,hyper detailed,surrealism, --niji 6 --ar 1:1 中文提示词:粘土模型,男性穿着中世纪欧洲蓝色盔甲&#x…

时序预测 | gamma伽马模型锂电池寿命预测 EM算法粒子滤波算法结合参数估计

时序预测 | gamma伽马模型锂电池寿命预测 EM算法粒子滤波算法结合参数估计 目录 时序预测 | gamma伽马模型锂电池寿命预测 EM算法粒子滤波算法结合参数估计预测效果基本介绍参考资料 预测效果 基本介绍 gamma伽马模型锂电池寿命预测 EM算法粒子滤波算法结合参数估计 伽马模型、…

男同事36岁,听说被裁拿了12万。今天看到他退了群,但下午领导就反悔了,让他回来,还要把12万补偿退回来

亲爱的读者们,今天咱们来聊聊职场那些事儿。你听说过吗?有位男同事,36岁,被裁了,拿了12万补偿金,然后退了群。你以为这就是结局?不,故事才刚刚开始! 想象一下&#xff0…

李佳琦回到巅峰背后,双11成直播电商分水岭

时间倏忽而过,又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》,到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较,再到直播间运营一时手快多发了红包……整个双11周期下来,李佳琦直播间在刷新…

Golang | Leetcode Golang题解之第546题移除盒子

题目: 题解: func removeBoxes(boxes []int) int {dp : [100][100][100]int{}var calculatePoints func(boxes []int, l, r, k int) intcalculatePoints func(boxes []int, l, r, k int) int {if l > r {return 0}if dp[l][r][k] 0 {r1, k1 : r, k…

Python | Leetcode Python题解之第553题最优除法

题目; 题解: class Solution:def optimalDivision(self, nums: List[int]) -> str:if len(nums) 1:return str(nums[0])if len(nums) 2:return str(nums[0]) "/" str(nums[1])return str(nums[0]) "/(" "/".joi…

新手 Vue 项目运行

前言:前面讲了我们已经将spingboot项目运行起来了,现在我们只需将后台管理的Vue项目运行起来即可完成整个项目。 在运行vue项目之前,请先运行springboot项目,运行步骤请看:运行Springboot Vue 项目_springbootvue项目…

光学全息详解

一、光学全息概述 1.1 光学全息的基本思想与原理的概述 光波是电磁波, 随时间振动,并在空间传播。光波照射物体时, 其振幅和相位就被空间调制。物光波的振幅给出物体的亮度(强度)信息, 相位给出物体的方位(深度和位置)信息。若能采用某种方法把物光波的振幅和相位同时记录下来…

自定义包和第三方包

1.自定义包由自己创建(创建步骤如下) 2.第三方包由大佬开发可通过python安装后自带的pip安装第三方包(安装时由于默认连接的是外网网速较慢,可换国内的网如(清华网):https://pypi.tuna.ysinghua.edu.cn/simple&#x…

SNH48 GROUP燃动杭州 第五届偶像运动会落下帷幕

2024年11月9日,“我们能赢”SNH48 GROUP第五届偶像运动会在杭州运河体育公园盛大开赛,本次运动会由高榕及SNH48郭爽、GNZ48梁娇作为赛事特邀主持人,并于小红书、微信视频号、SNH48 GROUP官方直播APP口袋48及MEET48全程直播。SNH48&#xff08…

Latex使用花体符号\mathbb{R}报错解决办法

一、背景 latex的优势是可以进行自动排版,以及复杂公式的编辑。然而,编辑花体符号R时,使用命令\mathbb{R}报错,编译不通过,这里记录一下解决办法。 二、Latex使用花体符号\mathbb{R}报错解决办法 在LaTeX中&#xf…

当当网创始人李国庆邀您:共襄创客匠人5000人“全球创始人IP领袖高峰论坛”

创客匠人正式官宣!当当网原CEO、联合创始人和首席大股东、CRYSTO董事长、CEO李国庆,受邀参加创客匠人5000人“全球创始人IP领袖高峰论坛”,将与我们携手共赴这场巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-…

docker安装zookeeper,以及zk可视化界面介绍

1. zookeeper 1.1. zookeeper简单介绍 ZooKeeper 是一个分布式的开源协调服务,最初由 Apache Hadoop 项目开发,用于构建分布式应用程序。它提供了一个简单的接口,允许开发人员实现诸如配置维护、域名服务、分布式同步、组服务等常见任务。Z…