MongoDB中的碎片概念

时间:2013-12-11 04:38:38

标签: mongodb

考虑我们有3个节点N1,N2,N3。

  1. 在节点1上 mongod实例,端口26000,副本集
    rs0(主)mongod实例,端口26001,副本集

    rs1(Arbiter)mongod实例,端口26002,副本集
    RS2(二次)
  2. 在节点2上 mongod实例,端口26000,副本集 rs0(辅助)mongod实例,端口26001具有副本集 rs1(主)mongod实例,端口26002,副本集 RS2(仲裁器)
  3. 在节点3上 mongod实例,端口26000,副本集 rs0(辅助)mongod实例,端口26001具有副本集 rs1(Arbiter)mongod实例,端口26002,副本集 RS2(主)
  4. 现在我们有3个独立的分片,其复制集各有一个辅助和仲裁 在节点1上,我们在端口27019上启动configserver,接下来我们也使用这个configsvr实例启动一个mongos实例, 然后将每个分片添加到它。 现在我的问题是我的java代码插入文件应该与这个mongos实例进行对话以插入文档, 或者我可以直接在任何共享的主要实例中插入它们,它们会相应地自动拆分数据。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

首先,您的配置服务器必须正在运行。之后,您应该将应用程序与mongos服务器连接起来。 您应该只连接到mongos服务器,并且只应从中填充所有数据。

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