首页 > 其他分享 >分片/分区和副本

分片/分区和副本

时间:2023-12-04 11:15:02浏览次数:28  
标签:副本 分区 分片 数据 节点 路由

slot也有分区的意思;(redis里)

这是两个很重要的概念,新的存储中间件如ES、Kafka、MongoDB等都用了这两种技术;

分片/分区是实现数据分流的重要手段,也是实现动态扩容的重要手段;

而副本则是冗余数据实现高可用

而数据具体是放哪个分片则是通过路由来实现,kafka它要求所有的数据都有一个key,根据key来路由;

 

假设一个数据服务集群有三个节点+路由节点构成(可能叫客户端节点),然后又配置了6个分区和两个副本(包括主副本)

那么均衡的说,是每个节点都有两个主分片和两个备份分片(备份副本);所有节点加起来有12个分区/分片;

我们先假设6个数据分片分别是分片1/2/3/4/5/6,节点1有分区1/2,节点2有分区3/4,节点3有分区5/6

当我们提交数据的时候是提交到路由节点,路由节点根据数据的key路由得到它是保存在分片4上,然后再找出分片4是节点2来处理,因此会把数据发给节点2去处理;

节点2将数据保存在分区4上;

 

而副本似乎应该再有3个备份节点?还是直接复用这三个主数据节点?

我们假设是复用主节点,则要求节点1挂了还有其他节点可以有分片1/2的数据,因此可以这样:

节点1有节点3的分片5/6的数据,节点2有节点1的分片1/2的数据,节点3有节点2的分片3/4的数据;

所以数据结构是这样:

节点一有分片1/2的主数据,分片5/6的副本

节点二有分片3/4的主数据,分片1/2的副本

节点三有分片5/6的主数据,分片3/4的副本

这样就实现了高可用,比如节点1挂了,仍然有节点2可以提供分片1/2的数据;

 

当然最好还是六个数据节点,其中三个专门做冗余,毕竟数据同步入库也是一个耗资源的操作。

 

这里还有一个问题就是:

怎么实现动态扩容呢?比如我加了两台数据节点(和两台数据冗余节点),这个感觉好像很难动态路由到新的节点上?

举个例子,之前是根据求模的方式,如之前是只有3个节点,所以分母是3;其实key是1/2/3的就分别到了节点2,节点3,节点1上(求模值+1);

现在是五个节点,分母是5了,然后又来了key是3的数据,这个时候它按之前的路由算法就是应该在节点4上而非节点1上了,那之前保存在节点1的数据是会自动迁移?

标签:副本,分区,分片,数据,节点,路由
From: https://www.cnblogs.com/silentdoer/p/17333253.html

相关文章

  • Linux 分区
    1、磁盘寻址方式(MBR)若按照上述分区则linux/dev文件下的硬盘设备应该为:/dev/sda1/dev/sda2/dev/sda3/dev/sda5/dev/sda6/dev/sda7其中sda4不见了是因为它作为了扩展分区,其实也就是包括了sda5~sda7统称扩展分区。 例题:  2、GPT分区表原理    ......
  • 数值分区间
    问题:B列小于10大于等于0的返回B列数值;大于等于10小于20的返回11;大于等于20的返回22;大于等于-5小于0的返回-1,大于等于-10小于-5的返回-2AI解决:调整提问语序:B列大于等于20的返回22;大于等于10小于20的返回11;大于等于0小于10的返回B列数值;大于等于-5小于0的返回-1,......
  • Vue3 + Express 实现大文件分片上传、断点续传、秒传
    前言在日常开发中,文件上传是常见的操作之一。文件上传技术使得用户可以方便地将本地文件上传到Web服务器上,这在许多场景下都是必需的,比如网盘上传、头像上传等。但是当需要上传比较大的文件的时候,容易碰到以下问题:上传时间比较久;中间一旦出错就需要重新上传;一般服务端会对......
  • linux存储管理及分区
    存储管理1.添加一块硬盘,并能正确使用它。步骤:添加一块磁盘(虚拟机设置处添加),lsblk能够查看。创建分区fdisk​m查看全部可用的参数​n添加新的分区​d删除某个分区信息​l列出所有可用的分区类型​t改变某个分区的类型​p查看分区信息​w保存并退出​q不保存直接退......
  • 嵌入式linux主机通过分区镜像生成固件,DD备份分区后打包成固件,px30刷机教程 ,rockchip
    我这边有一个工控路由器因为刷机变砖了,网上下载不到固件,自己暂时还没有搞过编译。我找到了同型号的路由器,把它的系统制作成镜像。具体操作分为三步:第一步,直接用DD命令备份了几个分区,分区我暂时还不知道,直接用分区编号命名:ddif=/dev/mmcblk1p1of=/media/usb0/mmcblk1p1ddi......
  • linux存储管理中的基本分区
    在Linux存储管理中,了解基本分区是非常重要的。总结如下:1.主引导记录(MBR)分区:MBR分区是传统的分区方式,它将硬盘的第一个扇区用于引导代码和分区表。MBR分区最多支持4个主分区,或者3个主分区和1个扩展分区。2.扩展分区:扩展分区是MBR分区中的一种特殊类型,它可以包含多个逻辑分区。......
  • 什么是kafka中topic、分区、副本、偏移量、消息保留策略
    Kafka是一个开源的分布式流式数据平台,也成为分布式消息队列。用于高吞吐量、低延迟的数据发布和订阅。 1、什么是topic(主题)? 在Kafka中,Topic(主题)是数据发布和订阅的基本单位,它代表了相同类型的消息流。 一个Topic可以看作是一个逻辑上的数据流管道,消息的生产者(Prod......
  • 关于es中集群,节点,分片和副本的理解
    集群页面中每一个对象就是一个集群节点集群中包含许多es实例,其中一个es实例就是一个节点节点也分许多功能分片和副本该例子中分片数为9,副本数为1数据节点就是Node注意:a和b是同样的数据,a为主分片,b为副本分片,但是同样的数据不能放在相同的节点上面(比如a1和b1不能),......
  • 分区内存管理分区选择法
    注意:上图是我的解答,下面的图不是的。我在阅读教材后,对三种分区选择法有了一定的了解,作出了如下解答:但我又有一个疑惑:一个分区只能放一个程序吗?于是我上网查询,并浏览到这篇文章,学习其中的例题后,我认为只要内存空间足够,一个分区就能放多个程序。并作出了最开始那张图片的解答。......
  • 在Linux上使用终端给系统增加新的存储盘与分区
    在Linux系统中,你可以使用终端命令来增加新的存储盘与分区。本篇博客将指导你逐步完成这个过程。步骤1:识别新的存储盘首先,你需要插入新的存储盘到Linux系统中,或者通过MVwave给安装在本机的linux增加内存。然后,使用以下命令来查看系统是否识别到新的存储盘:sudofdisk-l这将列......