2013-12-11 129 views
0

考虑我们有3个节点N1,N2,N3。MongoDB中的碎片概念

  1. 在节点1个 的mongod实例与端口26000与副本集
    RS0(主)的mongod实例与端口26001与副本集
    RS1(仲裁器)的mongod实例与端口26002与副本集
    RS2(二次)
  2. 在节点2上 与端口26000与副本的mongod实例设置 RS0(次级)的mongod实例与端口26001与副本集 RS1(主)的mongod实例与端口26002与副本集 RS2(A rbiter)
  3. 在节点3 与端口26000与副本的mongod实例设置 RS0(二次)的mongod实例与端口26001与副本集 RS1(仲裁器)的mongod实例与端口26002与副本集 RS2(主)

现在我们有3个独立的碎片与复制组,每个组有一个辅助和仲裁者 节点1,我们在端口27019 configserver开始,接下来我们也是用这个configsvr例如, 启动一个mongos实例,然后每个碎片增加它。 现在我的问题是我的java代码插入文档应该与这个mongos实例插入文档, 或我可以直接插入他们在任何共享通过主要实例,他们会自动分裂相应的数据。

回答

1

这是分片的基本概念 - 它完全不受什么机器运行哪个进程的影响。

您应该只将您的应用程序连接到mongos进程。在任何情况下,您都不应该直接在任何分片/主分区上操作数据。

您将直接连接到分片的唯一时间是用于各种管理维护任务。您的应用程序甚至不应该知道它们正在运行的主机或端口 - 它只需要知道如何连接到mongos进程。

5

首先,您的配置服务器正在运行。之后,你应该有你的应用程序连接到mongos服务器。 您应该只连接到mongos服务器,并且所有数据都应该仅从它填充。

如果您向分片服务器插入数据,它将不会分发,并且只会保留在该服务器上。