【问题标题】:Reading/Writing Data into a Cassandra Cluster读/写数据到 Cassandra 集群
【发布时间】:2015-08-07 04:37:04
【问题描述】:

我有一个带有 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

集群的读写一致性级别 (CL) 配置为 ONE。

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

  1. Web 服务应连接到哪个节点?这有关系吗?
  2. 它如何处理读取操作?假设记录被插入“B”,Web 服务尝试从“C”读取它。如果记录还没有写入“C”,它是否仍然从“B”获取它?

如果你提供一些参考会很好。

提前致谢,

【问题讨论】:

    标签: cassandra database nosql


    【解决方案1】:
    1. Web 服务应连接到哪个节点?这有关系吗?

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

    话虽如此,给您的应用程序提供几个节点来连接是个好主意。这将确保它始终可以找到要连接的初始节点。

    1. 它如何处理读取操作?假设记录被插入“B”,Web 服务尝试从“C”读取它。如果记录还没有写入“C”,它是否仍然从“B”获取它?

    是的,对于一个高可用性的分布式数据库,您是在“最终consistency”的前提下运行的。可以在replication 进程中读取陈旧数据。

    这笔交易有多大? Netflix 对此做了一个非常好的演示,标题为:Eventual Consistency != Hopeful Consistency。您应该通读文档并观看视频。底线是,面临陈旧或“脏读”风险的时间通常是低两位数毫秒。

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

    【讨论】:

    • 非常感谢您的详细解答。这回答了我的问题:)
    • 优秀。很高兴我能帮上忙!
    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多