数据一致性是分布式原理CAP的一个要素,在以往使用Mysql或Oracle时,几乎不用为一致性操心,而现在用到了Cassandra(目前使用了2.0.0版本),它保证的是数据的最终一致,导致在实际使用过程中出现了很多问题。
很多问题的根源,就是在更新一条记录,如果马上查询,结果竟然还是旧数据,或者新插入条数据,在查询会发现结果为空。这就是最终一致性的特点,而解决这个问题,即实现强一致性,需要实现以下条件:(nodes_written + nodes_read) > replication_factor 。注:replication_factor 表示数据的复制份数,nodes_written 表示一次写需要同步的节点数,nodes_read表示一次读需要读取的节点数。
这都是在Datastax网站提及的。
上面是理论基础,而在具体测试时,还是出了问题,3台服务器,读2份,写2分(2+2>3),按说应该可以实现强一致。
在使用Hector测试时,无论如何修改读写份数,都无法实现强一致,放弃。
后又改用Astyanax,使用的连接池策略为轮询(ConnectionPoolType.ROUND_ROBIN),发现了一个奇怪的规律:每三条记录只能出现一条更新成功的;然后根据这个规律,修改了代码,每个插入操作循环三次,再取出来后结果就是一致的。
然后使用Cassandra自带的cql客户端,多次的修改同一记录,并且查询,发现结果是一致的。
通过查看日志,发现两种客户端请求产生的后台日志是相同的,但通过Astyanax客户端的请求会轮流发送到三个机器上,而Cassandra的cql客户端的请求只发送的一台机器上。于是想到jAstyanax是否有不同的请求策略,发现其提供了三种策略(TOKEN_AWARE,ROUND_ROBIN和BAG ),测试BAG方式,结果所有的同一主键的请求被发送到一台机器,查询结果是一致的,但连续更新大概3万次后,有出现了不一致,需要再研究一下,不过却是很大的改善了一致性。
目前正在查看Cassandra的源码实现,努力找出问题根源。
相关推荐
这个库,通常被称为`cassandra-driver`,是一个高性能、全面特性的解决方案,它使得在Python环境中进行大规模分布式数据存储操作变得简单而高效。 **Python驱动的基本特性:** 1. **异步支持**:`cassandra-driver...
该系统采用Cassandra作为分布式存储解决方案,旨在满足气象数据存储的高可用性和性能要求。 1. Cassandra关键技术点 Cassandra是一种开源的分布式NoSQL数据库系统,基于一致性哈希算法的P2P环形结构。该结构使得每...
2. **高并发读写性能**:面对大量随机读写请求,Cassandra通过其独特的数据分布和复制策略,确保了系统的稳定性和响应速度,有效应对了市场中缺乏成熟解决方案的问题。 3. **无现有产品能满足的特定需求**:在...
总结来说,Cassandra作为一款强大的NoSQL数据库,以其独特的分布式架构、灵活的数据模型和出色的扩展性,成为许多大规模数据存储解决方案的选择。深入了解和熟练掌握Cassandra的使用,对于构建高可用、高性能的...
综上所述,阿里云Cassandra结合了Apache Cassandra的核心优势,并在云环境中进行了优化,提供了一套高效、稳定且易于管理的大规模数据存储解决方案。通过深入理解其技术架构和最佳实践,用户可以更好地利用这一服务...
总的来说,Apache Cassandra 3.5是一个强大且成熟的数据库解决方案,尤其适用于大数据场景。通过理解其核心概念,掌握3.5版本的改进,以及有效地部署和管理集群,你可以充分利用Cassandra的优势,构建稳定、高效的...
它的设计灵感来源于Google的Bigtable,旨在提供高可用性、线性可扩展性和强一致性的数据存储解决方案。在互联网时代,随着大数据的爆发,Cassandra因其出色的性能和容错能力而备受关注。 ### 1. Cassandra目录结构 ...
### Cassandra 数据存储系统详解 #### 一、引言与背景 Cassandra 是一款由 Facebook 开发的分布式存储系统,主要用于...通过其独特的设计和技术特点,Cassandra 成为了许多大型互联网企业的首选数据存储解决方案。
本项目“使用一致性级别=ALL的高性能CassandraScylla集群读取修复程序_Python_下载.zip”显然是一个旨在解决此类问题的解决方案。它可能包含了一个Python实现的读取修复程序,用于优化在ALL一致性级别下的读取性能。...
**Cassandra 入门指南** Cassandra 是一个分布式NoSQL数据库系统,由Facebook开发并开源,现由Apache软件基金会管理。...Cassandra是一个强大且灵活的数据库解决方案,尤其适合处理海量分布式数据。
根据业务需求的不同,我们可以选择CA(高一致性和可用性)、CP(高一致性和分区容忍性)、或者AP(高可用性和分区容忍性)的数据库解决方案。 2. 应用编程模型,即NoSQL数据库如何与其他系统组件交互,例如客户端和...
**Cassandra分布式模型与源...总结来说,Cassandra通过其独特的分布式模型和强大的源代码实现,提供了高效、可扩展和容错的数据库解决方案。理解和分析其源代码对于优化系统性能、解决故障以及进行定制化开发至关重要。
这个创新性的解决方案使得用户可以在同一个数据存储平台上享受到Cassandra的分布式特性和Elasticsearch的强大搜索功能。Elassandra结合了两者的优势,为大数据管理和分析提供了一站式解决方案。 Cassandra是一款...
### 存储问题解决方案 #### 一、对象存储 **对象存储**是一种广泛应用于云环境中的数据存储方式,尤其适合处理非结构化的海量数据。它通过扁平化的数据组织方式,将数据作为独立的对象存储,并附加元数据进行索引...
除了这些协议,还有一些其他的共识算法,如Viewstamped Replication (VR)和raft-like protocols,它们都在不同的场景下提供了一致性解决方案。 在实际应用中,选择合适的一致性协议取决于系统的具体需求。例如,...
在荔枝FM的实践中,架构师刘耀华提到了系统理论、问题与需求、系统调研、架构设计、最佳实践及问题与答疑等多个方面。首先,荔枝FM面临的单一机房架构问题包括数据安全和业务可用性。单点故障可能导致数据无法访问或...
它们能提供高可用性和水平扩展性,但同时也需要处理数据分片、复制和一致性问题。 5. **冗余与容错**:为了保证系统的可靠性,需要引入冗余机制。例如,通过主备模式、副本集或分布式集群来确保服务在单点故障时仍...
这些系统能够提供高可用性和数据一致性,并支持水平扩展。 - **示例**:使用MongoDB进行数据存储。 ```python from pymongo import MongoClient # 连接MongoDB client = MongoClient('mongodb://localhost:...
这份“分布式系统 概念与设计 习题答案(完整版)”涵盖了该领域的核心概念、设计原则以及常见问题的解决方案。 分布式系统的主要目标包括提高可用性、可扩展性、性能和容错能力。以下是一些关键知识点: 1. ...
### Nosql_分布式存储及应用系统架构分析...综上所述,Memcached、Cassandra和Redis都是优秀的NoSQL解决方案,各自在不同的应用场景中展现出了独特的优势。了解它们的特点和技术细节对于构建高性能的应用系统至关重要。