一致性要求每次的请求都能返回最新的数据结果,数据库的每次更新所有的客户端请求都能得到相同的返回结果。分布式数据库Cassandra也是基于CAP理论来实现的,并采用了AP,因此在数据一致性方面做出牺牲。
除单一的一致性概念之外还有一致性度的区分,严格一致性是最强度的模型,该模型要求每次的数据读取必须返回最新写入的值。在分布式系统中实现严格一致性显然是不现实的,实际当中我们忽略系统的异常因素及其网络失败造成的数据无法更新,从而导致系统数据为不可用状态。最终一致性则是要求系统所有的更新最终都应用到所有的副本节点中,在此过程中可以以消耗一定时间为代价,虽然在某个时间节点副本数据是不一致的,但经过一段时间后所有节点数据达到一致性。
Cassandra使用了可调的最终一致性行模型,通过复制因子来调节一致性级别。复制因子越大系统性能就越差,而一致性结果则越强,一致性级别的选择决定数据库需要多少个副本针对读写做出成功相应,才能认作该次请求是成功的。在Cassandra中可以针对读写分别指定一致性级别,一致性级别越高则需要更多的节点做出请求响应,Cassandra的优势主要是快速写入,虽然一致性级别可以同复制因子相同,但强一致性的完成需要消耗系统性能,因此一致性级别的设置通常小于复制因子,即使某些节点是不可用状态更新操作也将返回成功。
Cassandra的事务及ACID
Cassandra只支持ACID中的AID,并不支持一致性属性,而且没有使用典型的回滚及锁机制。
原子性(Atomicity)
Cassandra处理数据更新(插入、更新、删除)操作的原子性是在分区级别,这样可以在相同分区中将数据行的插入、更新、删除归为单一操作。在处理数据的并发修改时是用时间戳来决定更新。Cassandra针对某些成功写入的节点数据不能进行自动回滚,比如当一致性级别为QUORUM,复制因子为3,协调节点需要等待其他两个节点的确认,如果一个节点写入成功另一个节点失败,写入成功节点的数据并不会进行回滚操作。
隔离性(Isolation)
Cassandra写入和更新的隔离性是在行级,意味着在分区中写入只对当前客户端可见直到写入操作完成。任何在相同分区的批量更新操作同样是执行基于行级的隔离,除非在多个分区中进行更新操作。
持久性(Durability)
Cassandra提供强持久的写入操作,在写成功确认前通过将数据记录到内存及提交日志中实现本地持久化。在数据库刷新内存表到磁盘之前,如果服务失败可以通过提交日志获取丢失的数据,Cassandra还通过将写入的数据复制到多个副本的提交日志中来增强数据的持久性。
相关推荐
Cassandra:Cassandra数据一致性与副本策略.docx
【Cassandra一致性详解】 在2019云栖大会上,郭泽晖(索月)对Cassandra的...总的来说,Cassandra通过灵活的策略和机制,为分布式系统提供了在CAP三者之间平衡的能力,使得开发者可以根据业务需求来定制其一致性模型。
Cassandra 的数据分布和一致性策略基于其分区策略。每个键(Key)都会被哈希计算出一个分布式散列值,这个值决定了数据将在哪个节点上存储,并且可以通过一致性哈希实现数据的均匀分布。这种设计使得 Cassandra 能够...
它使用一致性哈希来分发数据,并且支持多数据中心部署,确保低延迟的数据访问。 2. **Spark简介**:Apache Spark是为大规模数据处理设计的开源计算框架,它提供了基于内存的计算,显著提高了数据处理速度。Spark...
- **一致性级别(Consistency Level)**:用户可以根据需求设置读写操作的一致性级别,平衡数据一致性和可用性。 6. **CQL(Cassandra Query Language)** - 为了简化数据操作,Cassandra提供了类似SQL的查询语言...
此外,由于采用了去中心化的架构,Cassandra 在保证数据一致性的同时还能很好地处理分区问题,即在网络分区的情况下仍然能够正常工作。 #### 三、应用场景与案例分析 Cassandra 最初是为了满足 Facebook 的 Inbox ...
总结起来,微服务架构下的数据一致性需要综合考虑多种因素,包括服务间的通信方式、事务管理策略以及数据库的设计。开发者需要权衡不同的一致性模型,结合具体业务场景选择合适的解决方案,以确保系统的稳定性和可靠...
由于分布式系统可能出现数据不一致,Cassandra提供了反熵(Anti-Entropy)机制,定期进行数据修复以保持数据一致性。数据修复可以手动触发,也可以设置为定时任务。 ### 8. 灾备与恢复 为了应对灾难情况,...
Cassandra作为一款开源的分布式NoSQL数据库系统,以其高可扩展性、高性能和强大的数据一致性而著称,被广泛应用于处理大量结构化和半结构化数据的场景中。 ### 关键知识点一:Cassandra架构原理 Cassandra采用了一...
8. **Repair机制**:为了保证数据一致性,Cassandra提供了一种叫做Repair的操作,定期检查并修复数据副本之间的不一致。 9. **CQL(Cassandra Query Language)**:Cassandra引入了类似SQL的查询语言CQL,简化了...
- **数据分布策略**:数据的分布采用了一致性哈希算法,确保数据均匀分布在节点环上,每个数据项都有多个副本以提高数据的可用性和冗余度。 - **存储机制**:Cassandra采用隐式传送(Hinted Handoff)机制处理节点...
总而言之,这份关于Cassandra 3.0的文档涵盖了从基础概念、系统架构、数据一致性、存储引擎到具体部署和运维的全面介绍。文档内容详实,对于想要深入学习和使用Cassandra的开发者和系统管理员来说,是一份非常有价值...
同时,我们还需要关注数据的一致性问题,因为Cassandra支持最终一致性,所以在设计应用时需要根据实际业务需求来调整一致性级别。 总的来说,Cassandra是一个非常强大的分布式数据库,它的无中心、弹性可扩展、高...
通过灵活的数据模型、复制策略和一致性控制,Cassandra能够满足各种复杂业务的需求。然而,其最终一致性的特性可能不适合那些需要严格一致性的应用,因此在选择Cassandra时,需要根据具体业务场景进行权衡。
- Read/Write Consistency:用户可以选择不同的一致性级别,平衡读写速度和数据一致性。 6. **监控与故障恢复** - JMX接口:用于系统监控和管理,例如查看节点状态、性能指标。 - 系统日志:记录Cassandra运行中...
2. **一致性与可用性**:Cassandra 支持多副本策略,可以配置不同的一致性级别(如 QUORUM、ONE、ALL 等),以平衡读写速度和数据一致性。这使得开发者可以根据业务需求选择最适合的一致性策略。 3. **容错性**:当...
在3.11.13版本中,Cassandra继续优化了这一特性,确保在大规模分布式环境下的数据一致性和服务稳定性。 3. **Gossip 协议**:Cassandra 使用 Gossip 协议进行节点间通信,每个节点都会周期性地与其他节点交换状态...
在实际应用中,饿了么可能遇到了诸多挑战,如数据一致性、系统扩展性、以及故障恢复等问题,通过使用Cassandra,饿了么可能已经找到了有效的解决方案。此外,对于Cassandra与大数据技术的整合,文章可能会详细讨论...