我目前正在考虑如何使用NoSQL解决方案为Web应用程序实现身份验证。我遇到的问题是,在大多数NoSQL解决方案(例如Cassandra,MongoDB)中,可能会延迟写入。例如,我们在节点A上写入,但不能保证写入同时出现在节点B上。这与NoSQL解决方案背后的方法是合乎逻辑的。
现在有一个想法是你没有二次读取(所以一切都超过了主人)。这可能适用于MongoDB(你实际上有一个主人),但不适用于Cassandra(所有节点都相同)。但是我们的应用程序在世界各地的几个独立点运行,因此我们需要多主机功能。
目前我不知道Cassandra的解决方案,我可以更新数据,并确保后续读取(对所有节点)确实有变化。那么如何在那些认证请求(读取)可以并行出现在几个节点上的NoSQL解决方案之上构建身份验证呢?
感谢您的帮助!
答案 0 :(得分:6)
尊重Apache Cassandra:
ConsistencyLevel是一个枚举,它根据模式定义控制读写行为。不同的一致性级别具有不同的含义,具体取决于您是否正在执行写入或读取操作。注意,如果W + R> ReplicationFactor,其中W是要写入时阻塞的节点数,R是要阻止读取的数字,您将具有强烈一致的行为;也就是说,读者总会看到最近的写作。其中最有趣的是进行QUORUM读写操作,这样可以保持一致性,同时在面对节点故障时仍然可以使用高达一半的ReplicationFactor。当然,如果延迟比一致性更重要,那么您可以为其中一个或两个使用较低的值。
这是在应用程序端管理的。具体来说,问题在于如何设计Cassandra实现,跨Cassandra节点的复制因子以及应用程序在读/写方面的行为。
写
读