本地只写Cassandra节点

时间:2016-06-24 15:34:10

标签: cassandra

我有一个快速生成测量的过程,我希望将它们存储在Cassandra中。该过程在数据中心的服务器上运行,并且在同一数据中心中存在Cassandra节点,以及另一个节点。如果生成测量的服务器失去连接,我希望在本地记录测量值,然后恢复连接以使数据被环正确处理。是否可以运行某种本地只写Cassandra节点(使用最少的硬盘空间),它连接到其他节点,或者我是否必须通过某种消息总线?

1 个答案:

答案 0 :(得分:1)

你想要的是"只写"节点和中心节点。卡桑德拉没有直接的支持。 这是您的选择

在每个写节点和主服务器上都有像Apache Kafka(我个人最喜欢的)这样的消息传递总线。将数据写入每个节点上的kafka,然后使用kafka-mirror-maker将每个节点的kafka镜像到主服务器。在主服务器上,编写一个小应用程序,将从kafka接收的所有数据写入cassandra。如果连接断开,节点的kafka仍将保存数据,当连接恢复时,镜像制造商将在其停止的位置继续。

对于您拥有的每个节点,创建一组单独的所有密钥空间,为每个节点分配一个数据中心,为中央服务器分配一个数据中心,设置每个节点将其密钥空间复制到中央服务器的复制设置(即到中央数据中心)但不到其他节点。例如,您有2个逻辑键空间(kA,kB),2个节点(每个节点上分别为dc1,dc2数据中心名称)和主服务器(数据中心名称:dc0)。 您需要创建kA_dc1 kB_dc1,kA_dc2 kB_dc2密钥空间并设置以下复制设置。

  • kA_dc1,kB_dc1:复制到 dc1和dc0
  • kA_dc2,kB_dc2:复制到 dc2和dc0

之后你需要修改你的程序来查询所有的键空间(因为键空间包含相同的模式,应该很容易)