Cassandra会根据应用程序请求生成的时间生成时间吗?
情景
假设我有两个app节点向Cassandra节点发送写请求和删除请求。执行顺序是
App2节点滞后于App1节点大约500ms的差异。因此,来自app2端的删除请求比wite请求更早获得时间戳,并且它永远不会发生。
在两个请求之间引发睡眠1秒以解决此问题,但是想要了解当应用时间不同步时Cassandra时钟如何为每个请求的写入工作。
TIA
答案 0 :(得分:1)
关于卡桑德拉的一些值得注意的事情:
所以直接回答你的问题
Cassandra检测到冲突(大概)是同一记录。因此,它应用客户端时间戳验证逻辑来获取获胜者,并且app1写入获胜和删除被忽略。
当您添加1秒的延迟时,您的输入顺序正确,并且没有冲突可确保正确删除写入。
DataStax的这篇旧文章将详细解释:http://www.datastax.com/dev/blog/why-cassandra-doesnt-need-vector-clocks
底线是 Cassandra CQL依赖于客户端时间戳来解决此类冲突。
这是一个非常简化的事件版本,不适用于复杂的场景。请阅读博客,以便更好地理解w.r.t的冲突解决方案。卡桑德拉的钟表。