【发布时间】:2018-05-09 17:17:14
【问题描述】:
我们正在探索使用 Cassandra 作为存储时间序列类型数据的一种方式,所以这可能有点像个菜鸟问题。其中一个用例是从 Kafka 流中读取数据,查找匹配项,并增加一个计数器(例如,5 个客户点击了 beta 页面上的链接 alpha,将 (beta, alpha) 递增 5)。但是,我们希望非常广泛的并行度能够跟上负载,因此可能会有多个消费者同时从 Kafka 读取数据。
我的问题是:Cassandra 如何解决多个来源对给定计数器的多个同时写入?
据我了解,对具有不同时间戳的计数器的多次写入将按照收到的时间戳顺序添加到计数器中。但是,如果要同时写入 exact 相同的时间戳,Cassandra 的 LWW 模型会抛出其中一个计数器增量吗?
如果我们有一个大型集群(超过 100 个节点),ALL 或 QUORUM 写入的性能可能不足以跟上消息流量。使用 THREE 写入似乎可能会导致进程 #1 写入节点 A、B 和 C,但进程 #2 可能会写入 X、Y 和 Z。LWT 会在这里工作,还是不能擅长反击?
【问题讨论】:
标签: cassandra distributed-transactions consistency eventual-consistency