我正在使用 Node.js SDK 连接到 couchbase 集群。在 Node.js 文档中,他们没有指定如何在创建集群对象时传递(集群 Node 的)多个 ip,但 java 文档显示它可以接受 IP 数组,Node.js SDK 中也提供此功能吗?
此外,如果这是连接到具有许多 Node 的集群的方式,那么每当我们向集群添加新 Node 时,是否需要将其 IP 添加到连接字符串并重新启动应用程序?
PS 我是 Couchbase 和 Node.js 的新手,所以请耐心等待
最佳答案
最佳实践是在连接字符串中放置尽可能多的 Node ,以便在其中一个 Node 不可用的情况下,客户端仍然能够最初进行连接。
但是要回答您原来的问题,不,不需要更改/重新启动应用程序。。客户端只需要知道集群中的一个单个 Node ,然后连接到该 Node 并发现所有其他 Node 。
当您考虑客户端如何实际连接到集群时,这两个概念都有意义。
使用单个 Node
- 客户端连接到 10.4.4.1
- 客户端从10.4.4.1请求“Cluster Map”。集群映射包含有关集群本身的信息,包括属于集群的所有 Node 列表
- 客户端连接到集群映射中的所有其他 Node (这意味着 10.4.4.2、10.4.4.3 等)
由于 Couchbase 是一个分布式系统,其中所有 Node 都了解所有其他 Node (因此,您可以登录到任何 Node 的管理控制台来管理集群),应用程序只需要了解一个初始 Node ,连接到该 Node 将通知它们有关所有其他 Node 的信息。
传递多个 Node
假设您从集群中删除了一个 Node 10.4.4.1
,因此您的集群只有 10.4.4.2
和 10.4.4.3
。由于您的应用程序配置为仅连接到 10.4.4.1
,因此您需要立即重新配置代码以连接到另一个 Node ,因为到 10.4.4.1 的连接将会失败。由于 10.4.4.1 不再是集群的一部分,因此它将无法提供有关其他 Node 的信息。
如果您已将所有 Node 传递给集群,客户端确实会尝试仍然连接到10.4.4.1,但是一旦客户端连接失败,它将继续尝试下一个 Node (10.4.4.2
) 并成功获取新配置。
如果您添加了另一个 Node ,那么什么都不会失败 - 当然,建议您最终更新应用程序上的 Node 列表,但这不是严格要求。
关于javascript - 当新的 couchbase Node 添加到集群时,是否需要更改应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137816/