我们使用一个多数据中心(DC) cassandra集群。在写入集群期间,我只希望本地DC对其节点执行写操作,因为我们已经将写入请求路由到所需的DC,只基于启动写入的源。因此,我只希望本地DC处理写入,而不希望其他DC对其节点执行写入操作。但后来,由于在各DC节点之间进行复制,我希望在DC之间复制书面数据。当我在第一个place.If中限制只写入一个DC时,在写入操作期间不打开与位于不同DC中的远程主机的连接时,是否有可能在DC之间复制数据。我之所以绝对需要在所有DC中复制数据,是因为在从集群读取数据时,我们希望从读取请求的任何DC读取数据,而不一定是本地请求。
有谁能解决这个问题吗?
发布于 2018-07-20 12:27:47
数据总是写入所有DC,LOCAL一致性级别只是说确认应该来自本地节点,而不是来自其他DC.
从DSE架构指南 (也可以在那里看到图像):
在多个数据中心部署中,DataStax企业(DSE)通过选择一个协调节点来优化写入性能。客户端应用程序联系的协调器节点将写入请求转发到每个其他数据中心中的一个副本,并带有一个特殊标记将写入转发到其他本地副本。如果写入一致性级别为
LOCAL_ONE或LOCAL_QUORUM,则只有与协调器节点相同的数据中心中的节点必须响应客户端请求才能成功。使用LOCAL_ONE或LOCAL_QUORUM可以减少地理延迟,并减少客户端写入请求对响应时间的影响。
我建议阅读本指南来理解Cassandra/DSE是如何工作的--如果你有这些信息,它会使事情变得简单得多。
https://dba.stackexchange.com/questions/212765
复制相似问题