首页 文章

读/写数据到Cassandra集群

提问于
浏览
2

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

  • 答:192.168.0.1(种子提供者)

  • B:192.168.0.2

  • C:192.168.0.3

  • D:192.168.0.4

对于读取和写入,群集的一致性级别(CL)配置为ONE .

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

  • Web服务应连接到哪个节点?这有关系吗?

  • 如何处理读取操作?假设记录已插入"B",并且Web服务尝试从"C"读取它 . 如果记录尚未写入"C",它是否仍然从"B"获取它?

如果你提供一些参考资料会很好 .

提前致谢,

1 回答

  • 0
    • Web服务应连接到哪个节点?这有关系吗?

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

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

    • 如何处理读取操作?假设记录已插入"B",并且Web服务尝试从"C"读取它 . 如果记录尚未写入"C",它是否仍然从"B"获取它?

    是的,具有高度可用的分布式数据库,您在“最终consistency”的前提下运行 . 可以在replication过程中读取陈旧数据 .

    这有多大的交易? Netflix对此题目进行了非常好的演示:Eventual Consistency != Hopeful Consistency . 您应该阅读文档以及观看视频 . 最重要的是,处于陈旧风险或"dirty reads"的时间通常是低两位数毫秒 .

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

相关问题