连接并使用RethinkDB集群

时间:2015-04-20 07:08:43

标签: database-replication rethinkdb database-cluster

我似乎无法找到很多关于RethinkDB中的集群如何实际工作的文档。

  1. 在Cassandra中,我通过定义一个或多个主机连接到群集,因此,如果其中一个主机已关闭,甚至已被删除,我仍然可以连接到整个群集,在更新代码/配置之前,反映我的主机IP地址的变化。
  2. 据我所知,RethinkDB没有这样的逻辑,我需要自己实现它,但我仍然始终连接到整个集群,这是正确的吗? / p>

    1. 在创建数据库时,它是为整个群集创建的“种类”,没有办法也不需要指定将要处理它的确切服务器。创建表时我没有指定主副本标记,哪个服务器将是主副本?如果我指定分配给多个服务器的标记 - 同样的问题适用。如何选择将作为主副本的最终服务器?

1 个答案:

答案 0 :(得分:4)

  

在Cassandra中,我通过定义一个或多个主机连接到群集,因此,如果其中一个主机已关闭,甚至已被删除,我仍然可以连接到整个群集,在更新代码/配置之前,反映我的主机IP地址的变化。

在RethinkDB中,您通过连接到群集中的节点来连接到群集。该节点将负责与集群中的所有其他节点进行通信。如果该节点与群集断开连接,则可能无法进行写入或读取,具体取决于群集分片和复制。如果该节点失败,您将无法执行任何操作。此时,您可以尝试连接到另一个节点。

  

据我所知,RethinkDB没有这样的逻辑,我需要自己实现

是的,如果节点出现故障,RethinkDB将不会自动将您重新连接到群集中的另一个节点。话虽如此,这可能就像拥有多个连接并在它们之间切换一样简单(除非我遗漏了什么!)。

  

创建数据库时,它是为整个集群创建的“类型”,没有办法也不需要指定将要处理它的确切服务器。

是的,当您创建数据库时,它是为整个群集创建的。数据库并不真正“存在”特定节点。它只是存在于特定节点中的表。

  

创建表时我没有指定主副本标记,哪个服务器将是主副本?

RethinkDB会自动处理这个问题。它将根据以下内容选择主副本所在的服务器:

  1. 服务器分发负载(哪些服务器有更多表和数据)。
  2. 特定服务器已经是该表的主要/辅助服务器。
  3. 如果要手动控制主服务器或辅助服务器最终的服务器,可以通过table_config数据库中的rethinkdb表手动设置。 (您在该数据库中占据了一席之地。它可以让您更好地了解RethinkDB的工作原理!)

      

    如果我指定分配给多个服务器的标签 - 同样的问题适用。

    与上述相同。

      

    如何选择将成为主副本的最终服务器?

    与上述相同。


    在文档方面,我建议如下:

    分片和复制:http://rethinkdb.com/docs/sharding-and-replication/(虽然你的问题建议你可能已经读过这个:))