我可以将一些密钥空间复制到某些节点吗?

我正在试图build立多个API,我想用Cassandra存储数据。 我正在devise它,好像我将有多个主机,但是我设想的主机将有两种types:可信和不可信。

因为这样,我有一些我不想最终复制到一组主机上的数据,但其余的数据都要复制到任何地方。

我考虑简单地为公共数据创build一个节点,为一个受保护的数据创build节点,但这需要可信主机运行两个节点,这也会使API与数据交互的方式复杂化。

我也build立它在一个docker集装箱,我预计会有频繁的节点创build/销毁既可信也不可信。

我想知道是否有可能使用密钥空间来实现我所需的复制策略。

你可以有两个数据中心,一个拥有你的公共数据,另一个拥有私有数据。 您可以将密钥空间复制configuration为仅将该数据复制到一个(或两个)DC。 请参阅NetworkTopologyStrategy的复制文档

然而,这里存在安全问题,因为所有节点都需要能够通过八卦协议互相访问,而且您的客户端应用程序可能需要联系两个DC以进行不同的读取和写入操作。

我build议你考虑为初学者configuration安全可能的SSL ,然后可能是内部authentication 。 注意Kerberos也被支持,但是至less现在你可能需要这么做。

您也可以考虑查看防火墙文档 ,查看节点和客户端之间使用哪些端口,以了解哪些端口需要locking。

最后,正如上面提到的,节点的破坏/创build往往不是好的做法。 Cassandra旨在在运行时能够扩展/缩小您的集群,但是它可能是一个代价高昂的操作,因为它不仅涉及将数据传输到/正在删除/添加的节点,还会影响其他节点在令牌范围之间进行重新平衡。

您可以在Docker容器中运行节点,但是请注意,不要像多个容器一样访问相同的物理资源。 Cassandra对Io延迟非常敏感,例如,多个共享相同物理磁盘的容器可能会导致性能问题。

总之:不,你不能。

cassandra集群中的所有节点都是一个完整的环,您的数据将与您select的分区器一起分发。

您可以在cassandra中拥有多个密钥空间和身份validation和授权,并将您的可信和不可信数据分为不同的密钥空间。 或者你有两个分组来分割你的数据。

根据我的经验,你也不应该尝试创build和销毁cassandra节点作为日常的日常业务。 添加和删​​除节点是昂贵的,需要监视,因为您的群集需要维护repliaction等等。 所以从你的API节点中分离出cassandra集群可能是件好事。