分片集群中的分片集合

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 分片集群中的分片集合

分片集群中的分片集合

MongoDB 中 分片集群有专门推荐的模式,例如 分片集合

它是一种基于分片键的逻辑对文档进行分组,分片键的选择对分片是非常重要的,分片键一旦确定,MongoDB 对数据的分片对应用是透明的

mongodb 分片中,有一个概念叫做数据块,默认一个数据块是 64 M ,这个也是可以配置的

他在 mongodb 中的 地位是这个样子的:

mongos 会将数据发送到 数据块中,实际上是 1 个 shard 分片对应多个数据块,也可以不对应数据块

例如上图,当一个数据块变大的时候,就会分成 2 个,慢慢的若数据块的数量多到一定的程度,就会发生快的迁移,识别和处理这个事情,都是平衡器进行处理的,例如

在数据块迁移的过程中,mogos 发送数据的方向还是不会变的,迁移的过程中,原来的数据块会先复制一个副本作为接收数据,实际的数据块继续迁移

例如块的迁移会有这样的规律:

  • 在块的个数,对比之后相差 1-20个,则会依次迁移 2 个
  • 若是 20 - 80 个,则会一次迁移 4 个
  • 若是 80 -无限多个,则会一次迁移 8 个

迁移的过程中,块的大小,块的数量都会影响我们分片集群的性能,

  • 若块的大小超过了我们的默认值,就需要拆,这就会影响性能
  • 搬迁的时候,对于网络资源的消耗 和 CPU 则会有影响

当搬迁完毕之后,相应数据块所在的分片就会通知 config server 更新配置,且原来复制的副本也会被删掉,此处 mogos 发送的数据,就会往新的一边进行发送

统一将上述涉及到的知识点梳理一下:

上述说到的分片集合,是因为数据量会越来越大,那么分片就会随之发生切割,和迁移的动作,这是为了满足在 mongodb 里面进行均匀分布

  • mogos 是会进行 请求分流

是通过路由节点来将不同的请求分发到不同的分片和块中

  • 数据也是会分流

数据分流,主要还是说数据均匀分布,内部有一个平衡器进行保证

  • 块何时会拆分呢?

默认的快大小是 64 M,若我们的块数据超过这个值就会触发拆分

  • 数据块迁移什么时候会触发?

迁移的目的还是为了分片在集群中均匀分布,所以数据块会发生迁移,一般是在集群中分片相差 8 个分块的时候,就会触发数据块迁移的动作

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
14天前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
5月前
|
存储 NoSQL 算法
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
|
NoSQL 算法 Redis
Redis集群哈希槽数据分片
Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽. 集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。
249 0
Redis集群哈希槽数据分片
|
存储 NoSQL Redis
redis集群查询集群中的值
redis集群查询集群中的值
|
算法
29MyCat - 分片规则(固定分片hash算法)
29MyCat - 分片规则(固定分片hash算法)
51 0
|
存储 缓存 算法
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
488 0
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
|
NoSQL 关系型数据库 MongoDB
|
存储 算法 中间件
MyCat - 分片 - 分片规则 - 取模分片 | 学习笔记
快速学习 MyCat - 分片 - 分片规则 - 取模分片
MyCat - 分片 - 分片规则 - 取模分片 | 学习笔记
|
存储 算法 关系型数据库
MyCat - 分片 - 分片规则 - 范围分片 | 学习笔记
快速学习 MyCat - 分片 - 分片规则 - 范围分片
MyCat - 分片 - 分片规则 - 范围分片 | 学习笔记
|
存储 算法 中间件
MyCat - 分片 - 分片规则 - 固定分片 hash 算法 | 学习笔记
快速学习 MyCat - 分片 - 分片规则 - 固定分片 hash 算法
MyCat - 分片 - 分片规则 - 固定分片 hash 算法 | 学习笔记