连接并使用 RethinkDB 集群

Connect to and work with a RethinkDB cluster

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

  1. 在 Cassandra 中,我通过定义一个或多个主机来连接到一个集群,所以如果其中一个主机出现故障,甚至被删除,我仍然可以在 code/configuration 之前连接到整个集群将更新,反映我的主机 IP 地址的变化。

据我了解,RethinkDB 没有这样的逻辑,我需要自己实现它,但我仍然会始终连接到整个集群,对吗? ?

  1. 创建数据库时,它是为整个集群 "kind of" 创建的,没有办法也不需要指定具体的服务器来处理它。创建 table 并且我没有指定主副本标签时,哪个服务器将是主副本?如果我指定分配给多个服务器的标签 - 同样的问题适用。最终作为主副本的服务器是如何选择的?

In Cassandra I connect to a cluster by defining one or more hosts, so in case one of them is down, or even has been removed, I still can connect to the whole cluster, before the code/configuration will be updated, reflecting the changes of my hosts IP addresses.

在 RethinkDB 中,您通过连接到集群中的一个节点来连接到集群。该节点将负责与集群中的所有其他节点进行通信。如果该节点与集群断开连接,则您可能无法进行写入或读取,具体取决于您的集群分片和复制。如果该节点出现故障,您将无能为力。届时,您可以尝试连接到另一个节点。

As far as I've understood it, RethinkDB doesn't have such a logic and I'd need to implement it myself

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

When creating a database, it is "kind of" created for the whole cluster, there is no way and no need to specify the exact servers which would be taking care of it.

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

When creating a table and I don't specify a primary replica tag, which server will be the primary replica?

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

  1. 服务器分布负载(哪些服务器有更多tables和数据)。
  2. 特定服务器是否已经是 table 的 primary/secondary。

如果要手动控制主次最终在哪个服务器,可以通过rethinkdb数据库中的table_configtable手动设置。 (你在那个数据库上达到了顶峰。它让你更好地了解 RethinkDB 的工作原理!)

If I specify a tag which is assigned to multiple servers - same question applies.

同上

How is the final server which will be the main replica selected?

同上


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

分片和复制:http://rethinkdb.com/docs/sharding-and-replication/(尽管您的问题表明您可能已经阅读过这篇文章:))