Cassandra多DC:在LOCAL上写入并从任何DC读取

时间:2018-07-19 05:02:54

标签: apache datastax cassandra-3.0

我们使用多数据中心(DC)Cassandra集群。在写入群集的过程中,我只希望LOCAL DC在其节点上执行写入操作,因为我们已经仅根据启动写入的源将写入请求路由到所需的DC。因此,我只希望LOCAL DC来处理写操作,而不希望其他DC对其节点执行写操作。但是后来由于跨DC的节点之间进行复制,我希望写入的数据跨DC进行复制。首先将写入限制为一个DC时,是否可以在DC之间进行复制。如果在写操作期间未打开与位于不同DC中的REMOTE主机的连接,以后是否可以在DC之间进行数据复制。为什么我肯定需要所有DC中的数据副本,是因为在从集群读取数据时,我们希望从读取请求所依赖的任何DC中读取数据,而不必是本地的。

有人对此有解决方案吗?

1 个答案:

答案 0 :(得分:0)

  1. 如果只想在Local DC中执行写入,则可能要使用Local_Quorum一致性。
  2. 检查键空间定义中是否需要这些限制。两个DC中都应具有“网络拓扑”和RF类。像这样: ALTER KEYSPACE <Keyspace_name> WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2}; 它指出,在满足一致性要求之后,Cassandra会将写操作传播到另一个DC。

  3. 如果不限于一个DC,但请使用Quorum一致性进行读取,但要注意,这可能会增加位延迟,因为Cassandra也必须从其他数据中心读取数据。