【问题标题】:Shard Concept in MongoDBMongoDB 中的分片概念
【发布时间】:2013-12-11 04:38:37
【问题描述】:

假设我们有 3 个节点 N1、N2、N3。

  1. 在节点 1 上 带有副本集的端口 26000 的 mongod 实例
    rs0(主)mongod 实例,端口为 26001,副本集
    rs1(Arbiter) mongod 实例,端口为 26002,副本集
    rs2(中学)
  2. 在节点 2 上 带有副本集的端口 26000 的 mongod 实例 rs0(Secondary) mongod 实例,端口为 26001,副本集 rs1(Primary) mongod 实例,端口为 26002,副本集 rs2(仲裁者)
  3. 在节点 3 上 带有副本集的端口 26000 的 mongod 实例 rs0(Secondary) mongod 实例,端口为 26001,副本集 rs1(Arbiter) mongod 实例,端口为 26002,副本集 rs2(主要)

现在我们有 3 个带有复制集的独立分片,每个分片都有一个辅助和仲裁器 在节点 1 上,我们在端口 27019 上启动 configserver,接下来我们还使用这个 configsvr 实例启动一个 mongos 实例, 然后将每个分片添加到其中。 现在我的问题是我的插入文档的 java 代码应该与这个 mongos 实例对话以插入文档, 或者我可以直接将它们插入到任何通过主实例共享的实例中,它们会自动相应地拆分数据。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-05-08
        • 2021-12-18
        • 2011-04-24
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-05
        相关资源
        最近更新 更多