2013-12-11 105 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服務器,並且所有數據都應該僅從它填充。

如果您向分片服務器插入數據,它將不會分發,並且只會保留在該服務器上。