在将cassandra的节点配置为互备以后,某天其中一个节点突然down机了,这个时候发现通过cassandra的thrift api往另外的节点写数据也没法成功了。研究了下thrift的api以后,推测估计是跟client的consistency level有关系。
consistency level即一致性级别,用来根据配置的副本因子(ReplicationFactor
)来控制cassandra的读写行为,在读或写操作下,不同的一致性级别有不同的含义。所以读写的一致性级别定义是不完全一样的。
Write
Level
|
Behavior
|
ANY
|
Ensure that the write has been written to at least 1 node, including HintedHandoff
recipients.
|
ONE
|
Ensure that the write has been written to at least 1 replica's commit log and memory table before responding to the client.
|
QUORUM
|
Ensure that the write has been written to N/2+1
replicas before responding to the client.
|
LOCAL_QUORUM
|
Ensure that the write has been written to <ReplicationFactor>
/ 2 + 1 nodes, within the local datacenter (requires NetworkTopologyStrategy
)
|
EACH_QUORUM
|
Ensure that the write has been written to <ReplicationFactor>
/ 2 + 1 nodes in each datacenter (requires NetworkTopologyStrategy
)
|
ALL
|
Ensure that the write is written to all N
replicas before responding to the client. Any unresponsive replicas will fail the operation.
|
Read
Level
|
Behavior
|
ANY
|
Not supported. You probably want ONE instead.
|
ONE
|
Will return the record returned by the first
replica to respond. A consistency check is always done in a background
thread to fix any consistency issues when ConsistencyLevel.ONE
is used. This means subsequent calls will have correct data even if the initial read gets an older value. (This is called ReadRepair
)
|
QUORUM
|
Will query all replicas and return the record with the most recent timestamp once it has at least a majority of replicas (N/2+1
) reported. Again, the remaining replicas will be checked in the background.
|
LOCAL_QUORUM
|
Returns the record with the most recent timestamp once a majority of replicas within the local datacenter have replied.
|
EACH_QUORUM
|
Returns the record with the most recent timestamp once a majority of replicas within each datacenter have replied.
|
ALL
|
Will query all replicas and return the record
with the most recent timestamp once all replicas have replied. Any
unresponsive replicas will fail the operation.
|
在这些级别中,为了保证读写的一致性,我们基本都采用Quorum这级,但是在我们这个场景中,如果在一个节点down的情况下,还有保证另一个节点写入的话,只能使用写入ONE这个级别了。读取的时候还是Quorum,如果也用ONE的话,会存在不一致的情况,不过在这种情况下,会有一个后台线程来做同步
参考
http://wiki.apache.org/cassandra/API
分享到:
相关推荐
Understand eventual consistency and use the right consistency level for your situation Understand data distribution with Cassandra Develop simple application using Java driver and implement ...
Cassandra通过一致性级别(Consistency Level)来控制读写操作的一致性要求,不同的业务场景可以根据需求选择最适合的一致性级别,以平衡性能和数据完整性。例如,对于写操作,可以选择将数据同步复制到多个节点上,...
- **一致性级别(Consistency Level)**:用户可以根据需求设置读写操作的一致性级别,平衡数据一致性和可用性。 6. **CQL(Cassandra Query Language)** - 为了简化数据操作,Cassandra提供了类似SQL的查询语言...
- **一致性级别(Consistency Level)**:客户端可以通过设置一致性级别来控制读写操作的一致性程度。 - **冲突解决机制**:当出现写入冲突时,Cassandra采用最新的写入时间戳作为解决冲突的标准。 4. **性能优化...
- **CL(Consistency Level)**:用户可以设置读写操作的一致性级别,平衡一致性和可用性。 5. **工具与运维** - **Cassandra CLI**:命令行工具,用于交互式管理Cassandra集群。 - **Cassandra Query Language ...
使用PHPcassa时,要充分理解Cassandra的分片(Partitioning)、副本(Replication)策略,以及一致性级别(Consistency Level)的设置,这些都是优化性能和保证数据一致性的关键。 在实际项目中,可能还需要关注...
- **Consistency Level**:定义了一次写入或读取操作必须成功达到多少个节点才能被认为是成功的。 #### 四、总结 通过以上对Cassandra术语的详细解析,我们可以更深入地理解其内部机制及工作原理。这些概念不仅...
5. **一致性级别(Consistency Level, CL)** - **CL可调整**:用户可以根据业务需求,选择从强一致性(如ALL)到最终一致性(如ANY)的不同一致性级别。常见的CL包括ANY、ONE、QUORUM、ALL和SERIAL,以平衡读写...
- **Consistency Level**:在`org.apache.cassandra.service`中,一致性级别控制读写操作的确认策略。 ### 4. 数据读写流程 - **写操作**:客户端请求到达后,经过Gossip协议确定目标节点,然后将Mutation对象发送...
- **Consistency Level**:一致性级别,包括ONE、QUORUM和ALL等,用于控制写入或读取数据时所需的副本数量。 - **Range Query**:范围查询,允许用户根据Row Key或者Token进行数据检索。 ##### 2.3 高级API 除了...
一致性级别(Consistency Level)是Cassandra的重要概念,用户可以根据业务需求选择强一致或最终一致的读写策略。 在Jupyter Notebook环境中使用Apache Cassandra,开发者可以利用Python的Cassandra驱动程序,如...
一致性级别(Consistency Level)则控制读写操作的可见性和耐用性,包括强一致性、最终一致性等多种选择。 ### 9. 垂直扩展与横向扩展 Cassandra不仅可以通过添加更多节点进行横向扩展,也支持在同一节点上增加...
- 一致性级别(Consistency Level)允许开发者在读写操作时选择强一致性和最终一致性之间的权衡。 3. **CQL(Cassandra Query Language)**: - Cassandra使用CQL作为其SQL-like接口,简化了数据操作。在建模时,...
7. **Consistency Level**:决定读写操作的一致性级别,例如,QUORUM表示需要大多数节点确认操作成功。 8. **TTL (Time To Live)**:用于自动删除数据,防止数据无限期存储。 9. **Secondary Indexes**:虽然不...
一致性级别(Consistency Level)是这种权衡的核心概念,它定义了在返回结果前,系统需要确认多少副本节点的响应。在这个场景中,我们关注的是“ALL”一致性级别,这是一种最高级别的数据一致性保证。 ALL 一致性...
BASE是NoSQL数据库存在的三大基石之一,BASE是指Basically Available、Soft-state、Eventual Consistency的缩写。BASE是对CAP定律的补充,它强调了系统的可用性和最终一致性。 最终一致性是NoSQL数据库存在的三大...