论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
主机系统
›
linux
›
MongoDB Shard分片集群架构介绍:分片服务器 (Shard Ser ...
MongoDB Shard分片集群架构介绍:分片服务器 (Shard Servers)、设置服务器 ...
曹旭辉
金牌会员
|
2025-1-10 18:55:10
|
显示全部楼层
|
阅读模式
楼主
主题
961
|
帖子
961
|
积分
2883
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
MongoDB 分片(Sharding)简介
在MongoDB中,
分片
是一种将数据分布在多个服务器(也称为
分片服务器
)上的方法,用于水平扩展数据库以处理更大的数据集或更高的吞吐量。劈面对大规模、高容量的数据,单个服务器无法有用处理时,分片是MongoDB的关键特性之一。通太过片,可以进步读写性能,并提供高可用性和容错能力。
MongoDB 分片集群架构
MongoDB的分片集群由三个主要组件构成:
分片服务器 (Shard Servers)
:
这些是现实存储数据的节点,每个分片服务器负责存储数据的一部分。集群中的数据被分别为多个“块”(chunks),每个分片服务器负责一部分这些块。
设置服务器 (Config Servers)
:
设置服务器存储关于分片集群的元数据,包括数据在各分片之间的分布环境。设置服务器维护集群的状态,并提供路由请求所需的信息。为了确保冗余和容错,在生产环境下的分片集群中必须有
恰好三台设置服务器
。
路由服务器 (Mongos Routers)
:
mongos
进程作为
路由器
,介于客户端请求和精确的分片服务器之间。它们自己不存储数据,而是根据设置服务器中存储的元数据,将查询和写入操作定向到精确的分片或一组分片。
每个组件在集群架构中扮演着不同的脚色,共同协作以处理MongoDB中的大规模数据处理。
1.
分片服务器 (Shard Servers)
脚色
:一个
分片
是一个MongoDB服务器(或副本集),它存储分片集群中的一部分数据。
数据分区
:数据被分别为块,这些块分布在分片服务器上。每个块包含肯定范围的数据(通常基于
分片键
),每个分片负责一个或多个这样的块。
分片键
:
分片键
决定了数据怎样在各个分片之间分配。它是文档中的一个字段或字段组合,MongoDB利用它来对数据举行分区。选择符合的分片键对于实现最佳性能和数据分布至关重要。
副本集 (Replica Sets)
:分片通常实现为
副本集
,即一组MongoDB服务器,它们维护相同的数据集以提供冗余和高可用性。这样,纵然某个分片节点出现故障,也可以从副本集的其他成员继续提供数据服务。
示例
:如果你有一个存储用户数据的分片集合,每个分片大概根据user_id范围存储一部分数据。一个分片大概持有user_id 1–1000的数据,另一个分片持有1001–2000的数据,依此类推。
2.
设置服务器 (Config Servers)
脚色
:设置服务器存储关于分片集群的
元数据
,包括数据在各分片之间的分布环境以及分片集群自己的状态。
职责
:
块分布
:设置服务器存储哪些分片持有哪些块的信息。当客户端查询分片集群时,mongos路由器会咨询设置服务器以确定哪个分片应处理该查询。
集群元数据
:它们还存储定义数据分区方式的元数据,包括分片键、块范围以及每个块的位置信息。
设置服务器的数量
:生产环境中应该有
恰好三台设置服务器
以确保冗余。如果一台设置服务器发生故障,其他两台仍可继续提供元数据。这防止了关键集群信息的单点故障。
设置数据
:设置服务器存储以下数据:
块范围
:块范围与分片服务器的映射。
分片元数据
:有关分片集合、分片键和块数量的信息。
集群状态
:有关集群状态的信息(例如,当块迁移正在举行时)。
3.
路由服务器 (Mongos Routers)
脚色
:mongos路由器作为
接口
,位于客户端应用程序和分片集群之间。它们根据设置服务器中存储的元数据,将客户端请求路由到适当的分片。
工作原理
:
当客户端连接到MongoDB集群时,它会连接到一个或多个mongos进程。mongos进程负责请求的路由。
对于
读取操作
,mongos会将请求转发到精确的分片。如果查询涉及多个分片(例如,没有利用分片键的查询),它大概会将请求发送到多个分片。
对于
写入操作
,mongos确保数据根据分片键写入精确的分片。如果写入操作超过多个分片,mongos会协调该操作的执行。
路由逻辑
:mongos利用来自设置服务器的信息来确定块的位置以及怎样路由请求。如果块在分片之间移动,mongos会通过设置服务器得知并相应地路由请求。
可扩展性
:mongos进程自己不存储数据,且是无状态的,这意味着可以通过部署多个mongos进程来水平扩展,以应对更高的流量。客户端可以连接到任何可用的mongos,后者会根据需要路由请求。
MongoDB 分片集群架构图:
+---------------------+
| Client |
+---------------------+
|
+--------------------+
| Mongos Routers |
| (Query Router) |
+--------------------+
| | |
+------------------------+ | +----------------------+
| | | |
+-------------------+ +-------------------+ +-------------------+
| Shard Server 1 | | Shard Server 2 | | Shard Server 3 |
| (Replica Set) | | (Replica Set) | | (Replica Set) |
+-------------------+ +-------------------+ +-------------------+
| | |
+-------------------+ +-------------------+ +-------------------+
| Config Server 1 | | Config Server 2 | | Config Server 3 |
| (Replica Set) | | (Replica Set) | | (Replica Set) |
+-------------------+ +-------------------+ +-------------------+
复制代码
客户端
:通过mongos路由器连接到MongoDB集群。
Mongos 路由器
:处理客户端的请求,并将其路由到适当的分片。
分片服务器
:存储现实的数据,分布在多个服务器上。
设置服务器
:存储关于数据分布和集群状态的元数据。
分片集群操作
添加/移除分片
:当集群增长或缩小,可以添加新的分片服务器或移除现有的分片。MongoDB会动态重新分配块,以平衡负载。
块平衡
:运行在设置服务器上的MongoDB平衡器确保块在各分片之间均匀分布。如果某个分片的数据过载,块将被迁移到其他分片,以平衡集群。
横向扩展
:通过增加更多的mongos路由器,可以提拔处理更高流量的客户端请求的能力。通过增加更多的分片服务器,可以增加数据存储和处理能力。
总结
MongoDB的分片集群是一种强大的水平扩展方法。它利用:
分片服务器
来存储数据,
设置服务器
来管理元数据和块分布,
Mongos 路由器
根据分片键将客户端请求路由到精确的分片。
通过将数据分布在多个分片上并利用高效的路由机制,MongoDB可以或许处理大规模数据集和高吞吐量,使其成为那些需要超越单个服务器能力的应用程序的理想选择。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
曹旭辉
金牌会员
这个人很懒什么都没写!
楼主热帖
网络安全应急响应 - 03 - 日志分析与内 ...
Redis - 介绍与使用场景
Nmap抓包分析与绕过Windows防火墙 ...
Mysql 的Innodb引擎和Myisam数据结构和 ...
一招教你如何高效批量导入与更新数据 ...
【docker系列】docker API管理接口增加 ...
聊聊Spring事务控制策略以及@Transacti ...
用代码收集每天热点内容信息,并发送到 ...
微服务架构演进
Maven配置私有仓库
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表