当我从 Couchbase 集群查询视图时,每台机器都会返回相同的视图查询结果吗?
无论哪台机器实际响应请求,我都希望集群返回相同的响应。
您的应用程序对一致视图结果的依赖程度如何?请记住,Couchbase 索引是最终一致的,这意味着集群不会同时更新,尤其是当有大量数据更改时。因此,对于已经存在了一段时间的数据,您可以期望机器之间的结果集一致;但是,最近更改的数据可能不会反映在最新的视图查询中。关键是设计您的应用程序来处理这种情况。
Couchbase 视图的存储分布在集群节点上,就像数据一样。例如,在一个三节点集群和一个视图上,视图的 1/3 将位于集群的每个节点上。每个集群上的视图部分是与该节点上的 vBuckets 中的数据相对应的部分。因此,当您查询 Couchbase 视图时,它会转到每个节点来处理该查询。当您使用 SDK 时,这对您来说都是透明的,但这就是在后台发生的事情。当重新平衡发生时,视图也会发生变化,因为 vBucket 正在移动。默认情况下 IndexAwareRebalances 设置为 true。
您还必须了解视图的更新频率。默认情况下,如果有 5000 个数据突变,则每 5 秒一次。不是或。可以调整这些默认值,但如果例如您只有 1000 个突变,则索引器将不会自行运行。也要小心那个 stale=false 的东西。它会让你一直使用它时遇到真正的麻烦,尤其是在重新平衡期间。
另外,要知道 Couchbase 是强一致的,但视图最终是一致的。