我有一个运行单个Membase服务器(1.7.1.1)的应用程序,我用它来缓存数据,否则我将从我们的中央SQL Server数据库中获取数据。我有一个与Membase服务器关联的默认存储桶,并遵循传统的数据获取模式:
我希望在我的默认群集中添加一个额外的服务器,并重新平衡密钥。 (我还为一个额外的服务器启用了复制)。
在这种情况下,我很好奇我如何使用当前模式(或修改它)以确保当我的两个服务器之一在自动故障转移中发生故障时,我不会使数据不同步或手动故障转移方案。
根据我的理解,如果一台服务器发生故障(称之为服务器A),在它关闭但仍然连接到集群期间,将会有一个缓存密钥未命中(如果活动密钥与服务器A相关联,而不是服务器B)。在这种情况下,在上面的数据获取模式中,我将不会返回任何数据并直接从SQL Server获取。但是,当我尝试将数据存储回我的Membase群集时,会将数据存储在服务器B中,并在下次提取时将该密钥重新映射到服务器B吗?
据我所知,一旦我将服务器A标记为"故障转移",服务器B的副本密钥将成为活动密钥,但我不清楚如何处理服务器A的间歇情况无法访问,但尚未标记为故障转移。
非常感谢任何帮助!
答案 0 :(得分:1)
这是一个非常古老的版本。但有几点要澄清。
NULL
,False
或类似值。我建议您为您的应用程序使用适当的Couchbase客户端,这有助于区分这两者。In"更新" Couchbase(> 2.x)的版本有一个特殊的get-from-replica命令可用于couchbase(或membase)样式的桶,它允许您显式读取副本节点的信息。但请注意,您仍然无法写入此类节点。
您的整体策略似乎对缓存非常理解;除了您需要了解如果节点不可用,那么您的数据的某个百分比将不可用(对于读取和写入),直到节点再次重新启动或故障转移为止。没有