我似乎无法找到很多关于RethinkDB中的集群如何实际工作的文档。
据我所知,RethinkDB没有这样的逻辑,我需要自己实现它,但我仍然始终连接到整个集群,这是正确的吗? / p>
答案 0 :(得分:4)
在Cassandra中,我通过定义一个或多个主机连接到群集,因此,如果其中一个主机已关闭,甚至已被删除,我仍然可以连接到整个群集,在更新代码/配置之前,反映我的主机IP地址的变化。
在RethinkDB中,您通过连接到群集中的节点来连接到群集。该节点将负责与集群中的所有其他节点进行通信。如果该节点与群集断开连接,则可能无法进行写入或读取,具体取决于群集分片和复制。如果该节点失败,您将无法执行任何操作。此时,您可以尝试连接到另一个节点。
据我所知,RethinkDB没有这样的逻辑,我需要自己实现
是的,如果节点出现故障,RethinkDB将不会自动将您重新连接到群集中的另一个节点。话虽如此,这可能就像拥有多个连接并在它们之间切换一样简单(除非我遗漏了什么!)。
创建数据库时,它是为整个集群创建的“类型”,没有办法也不需要指定将要处理它的确切服务器。
是的,当您创建数据库时,它是为整个群集创建的。数据库并不真正“存在”特定节点。它只是存在于特定节点中的表。
创建表时我没有指定主副本标记,哪个服务器将是主副本?
RethinkDB会自动处理这个问题。它将根据以下内容选择主副本所在的服务器:
如果要手动控制主服务器或辅助服务器最终的服务器,可以通过table_config
数据库中的rethinkdb
表手动设置。 (您在该数据库中占据了一席之地。它可以让您更好地了解RethinkDB的工作原理!)
如果我指定分配给多个服务器的标签 - 同样的问题适用。
与上述相同。
如何选择将成为主副本的最终服务器?
与上述相同。
在文档方面,我建议如下:
分片和复制:http://rethinkdb.com/docs/sharding-and-replication/(虽然你的问题建议你可能已经读过这个:))