MongoDB分片

MongoDB中使用分片集群结构分布:

image.png

Shard:
用于存储实际的数据块,提供高可用性和数据的一致性。
分片就是指将数据拆分,将其分散存在不同的机器上的过程。
每个分片会包含分片数据的一部分。每个分片都可以部署为副本集(replica set)。
每个Shard可以是一个mongod实例,也可以是一组mongod实例构成的Replication Set。为了实现每个Shard内部的auto-failover(自动故障切换),MongoDB官方建议每个Shard为一组Replica Set

Config Server:
mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
这些元数据信息记录了集群数据到分片的映射。
对数据操作时,路由使用这些元数据定位操作到明确的分片中。
config节点为至少3个节点的复制集
为了将一个特定的collection存储在多个shard中,需要为该collection指定一个shard key(片键),例如{age: 1} ,shard key可以决定该条记录属于哪个chunk(分片是以chunk为单位)。
Config Servers就是用来存储:所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、该集群中所有DB和collection的sharding配置信息。

Query Routers:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
客户端由此接入,然后询问Config Servers需要到哪个Shard上查询或保存记录,再连接相应的Shard进行操作,最后将结果返回给客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给Routing Process,而不必关心所操作的记录存储在哪个Shard上。(所有操作在mongos上操作即可)

shard的replica set的架构图:

image

config servers的replica set的架构图:

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容