分片集群中的分片集合

本文涉及的产品
云数据库 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 个分块的时候,就会触发数据块迁移的动作

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

欢迎点赞,关注,收藏

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

好了,本次就到这里

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

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

相关文章
|
存储 安全 API
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
660 2
|
Java 数据库连接 API
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有良好的封装性、可移植性,以及数据库无关性。
286 0
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
|
搜索推荐 Java 开发者
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
【5月更文挑战第14天】org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
4005 1
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
957 0
|
Java Maven 数据安全/隐私保护
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
4280 0
|
Java Apache Spring
若依配Mapper,若依修改Caused by: org.springframework.beans.factory.BeanCreationException: Error creating
若依配Mapper,若依修改Caused by: org.springframework.beans.factory.BeanCreationException: Error creating
|
存储 缓存 算法
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
756 0
三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片
|
SQL XML Java
MybatisPlus联合查询
MybatisPlus联合查询
549 0
|
存储 数据挖掘 索引
R语言的数据结构与转换
R语言的数据结构与转换
176 0
R语言的数据结构与转换