读/写数据到Cassandra集群

时间:2015-05-25 16:50:22

标签: cassandra database nosql

我是一个包含IP的4个节点的Cassandra集群:

  1. A:192.168.0.1(种子提供者)
  2. B:192.168.0.2
  3. C:192.168.0.3
  4. d:192.168.0.4
  5. 对于读取和写入,群集的一致性级别(CL)配置为ONE。

    我想通过网络服务在群集中写入/读取记录,但我有几个问题:

    1. Web服务应连接到哪个节点?这有关系吗?
    2. 如何处理读取操作?假设记录被插入" B",并且Web服务尝试从" C"中读取它。它仍然是从" B"如果该记录尚未写入" C"?
    3. 如果你提供一些参考资料会很好。

      提前致谢,

1 个答案:

答案 0 :(得分:0)

  1. Web服务应连接到哪个节点?这有关系吗?
  2. 不,您告诉您的服务连接到哪个节点并不重要。 Cassandra使用gossip protocol来获取有关整个群集的信息,包括它可以连接到的其他节点。这是为了允许您在群集中添加或替换节点,而不会威胁应用程序的可用性。

    现在有了这样的说法,最好给你的应用程序提供一些连接的节点。这将确保始终可以找到要连接的初始节点。

    1. 如何处理读取操作?假设记录被插入" B",并且Web服务尝试从" C"中读取它。它仍然是从" B"如果该记录尚未写入" C"?
    2. 是的,通过高可用性的分布式数据库,您在最终consistency的前提下运行。"可以在replication过程中阅读陈旧数据。

      这笔交易有多大? Netflix对此标题做了很好的演示:Eventual Consistency != Hopeful Consistency。您应该阅读文档以及观看视频。最重要的是,是否有时间处于陈旧或肮脏的阅读风险之下。通常是两位数毫秒。

      所以最后,除非你处理非常高的读取吞吐量,否则这不应该成为一个问题。如果您发现它是,则您可以始终increase your read and/or write consistency level查看受影响的数据。