JER*_*RRY 1 mongodb architecture
我是mongodb的新手。我已经设置了一个mongodb 架构,其中一个mongo shard(mongos)连接到三个shards(replica sets),三个配置服务器。架构如下所示:

现在mongos与这些分片相连。mongos 中的数据将被拆分到这三个分片中。我怀疑的是它们是否shard 1包含与3 个分片完全相同的数据shard 2,shard 3或者所有 3 个分片都有不同的数据。
那么让我们看看这里在参考架构中代表的“角色”。请记住,这是架构的全部内容的“2 美分之旅”。
此进程是“路由器”,因为它充当“客户端”连接到分片集群的接口。您可以拥有多个mongos实例,因此您不仅限于“一个”。正如图中所指出的,它们与“配置服务器”进行通信,以便根据提交的查询或操作确定将请求发送到哪个“分片”。
这些是分片集群的“大脑”。本质上,它们包含“元数据”,它说明哪些“数据块”或“部分数据”出现在哪个“分片”上。它们以“合理冗余的方式”彼此保持一致,以便向mongos“路由器”提供该信息。
这里主要是一个“元”概念。尽管可以将单个服务器作为“分片”,但通常建议不要使用“副本集”作为分片节点。“分片”的目的是将数据“特定”保存到“定义的范围”。这通过在分片集群的“节点”之间“拆分”的“分片键”起作用。“拆分”的全部性质由位于已经描述的“配置服务器”上的“分片配置”决定。“分片”上的数据仅存在于该分片上,“无处可去”。
副本集的目的是不言自明的。它本质上是从给定的“主”节点“复制”数据,该节点是唯一接受“写入”操作的节点。这是对一个或多个“次要”节点进行的。你只需要一个“副本集的辅助节点”,但如果你这样做了,那么你真的需要另一个“仲裁者”节点来打破选举的僵局。
“选举”的意思是,当副本集的一个成员出现故障或以其他方式不可用时,将举行“选举”以确定哪个成员成为新的“主要”。这里需要“多数”投票,因此需要“奇数”的成员可以投票(并非所有成员类型都可以投票)。
分片没有“重复”。可能有一段时间相同的数据同时出现在一个分片和另一个分片上,但这永远不会反映在“配置服务器”中(如果是,那么这就是损坏)。有一个称为“块迁移”的过程,这就是所有这一切的目的,其中分配给一个分片的数据“平衡”以存在于另一个分片上。但是前面提到的“元数据”是“原子更新的”,因此应该对真正的数据源实际驻留在何处有一致的看法。
“副本集”成员是有意复制的地方。这是为了数据冗余,如果一个成员出现故障,那么还有其他成员可以继续工作。他们“应该”有一个一致的观点,但这在很大程度上取决于你的应用程序中关于一致性“保证”的“写关注”。尽管如此,如果只是罕见的,可能会出现问题。(但云中的网络分区经常发生)。
“分片”的作用与副本集的“冗余”相反。他们的作用是“分发”数据。这意味着根据定义,数据不会在分片上“复制”(已经给出的时刻案例),因此一般 CRUD 操作是“分布式”或“有针对性的”,跨或定向到将要处理的相关“分片”为您的操作提供数据。
简而言之。分片用于“数据分发”,以便通过将工作负载“定位”到特定的“分片节点”或将工作负载“拆分”到多个节点来使操作具有可扩展性。任何适合您的应用目的。
分片节点之间总是有不同的数据,这就是它们存在的目的。
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |