Cassandra如何保证数据最终一致性

Cassandra如何保证数据最终一致性:
1、逆熵机制(Anti-Entropy)
使用默克尔树(Merkle Tree)来确认多个副本数据一致,对于不一致数据,根据时间戳来获取最新数据。

2、读修复机制(Read Repair)
当Cassandra读数据时,需要根据读一致级别设定读取N个节点的副本数据,并按照时间戳返回最新数据给用户后,会对所有副本数据进行检测和修复,确保所有副本数据一致。

3、提示移交机制(Hinted Handoff)
当Cassandra写数据时,需要根据写一致性级别将数据写入到N个节点数据副本中,只有N个节点写入成功才会给用户返回操作成功,为防止要写入节点宕机导致操作失败,Cassandra采用提示移交机制将操作相关数据写入到随机节点,宕机节点恢复后可根据这些数据进行重放,最终获得数据一致性。
Gossip(闲话)协议会将宕机节点恢复的消息传递给其他节点,并及时进行数据修复。
提示移交机制产生的数据保存在系统表(system.hints)中,默认保存3小时。

4、分布式删除(Distributed Deletes)
由于Cassandra在多个节点上保存数据副本,如果直接对记录进行删除,在所有副本数据完全删除前,多个节点间数据不一致且无法按照时间戳判断该记录需要被修复还是被删除。Cassandra采用分布式删除机制,在删除记录时插入一条关于该记录的墓碑(tombstone),墓碑中包含接受客户端请求的存储节点执行请求的时间(Local delete time),通过墓碑来标识该记录已被删除。
Cassandra中压缩过程中实现垃圾回收机制,清理这些被墓碑标记的记录,以释放这些记录占用空间。

=======================================================

参考链接:

https://www.cnblogs.com/xxdfly/p/5641684.html

http://www.sohu.com/a/230312547_100123121

https://www.cnblogs.com/bozhang/articles/3114678.html

=======================================================

原文地址:https://www.cnblogs.com/gaogao67/p/10534505.html

时间: 2024-08-30 12:33:31

Cassandra如何保证数据最终一致性的相关文章

数据最终一致性方案设计

https://servicecomb.incubator.apache.org/cn/docs/saga_pack_design/ https://servicecomb.incubator.apache.org/cn/docs/distributed_saga_1/ https://servicecomb.incubator.apache.org/cn/docs/distributed_saga_2/ https://servicecomb.incubator.apache.org/cn/d

[转]CAP原理与最终一致性 强一致性 透析

在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾.因此在进行分布式架构设计时,必须做出取舍.而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值.因此设计分布

CAP原理与强一致性、最终一致性

CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾.因此在进行分布式架构设计时,必须做出取舍.而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值.因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡.对于大多数web应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向. 当然,牺牲一致性,并不是完全不管数据的一致性,否则数据是混乱的,那么系统可用性再高分布式再好也没有了价值.牺牲一致性,只是不再要求关系型数据库中的强一致性,而是

CAP原理和最终一致性(Eventually Consistency)

在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾.因此在进行分布式架构设计时,必须做出取舍.而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值.因此设计分布

CAP原理与最终一致性 强一致性 弱一致性

CAP原理中,有三个要素: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾.因此在进行分布式架构设计时,必须做出取舍.而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值.因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡.对于大多数web应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向. 当然,牺

一文讲透微服务下如何保证事务的一致性

原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 从本地事务到分布式事务的演变 什么是事务?回答这个问题之前,我们先来看一个经典的场景:支付宝等交易平台的转账.假设小明需要用支付宝给小红转账 100000 元,此时,小明帐号会少 100000 元,而小红帐号会多 100000 元.如果在转账过程中系统崩溃了,小明帐号少 100000 元,而小红帐号金额不变,就会出大问题,因此这个时候我

使用MQ来保证分布式事务的最终一致性

前言 之前我们讨论了如何拆分一个订单下单的一个服务(https://www.cnblogs.com/linkstar/p/9610268.html) 从单体到微服务的拆分,当时我们只是对原来的整个服务做了一个简单的拆分,但是在实际中肯定会遇到很多问题,所以我们这里解决一个最容易也是最有可能在实际中遇到的问题,事务. 在单体架构中,我们很容易去维护一个事务,我们想要对一个事务操作回滚也很容易,而在分离成微服务之后,我们想要在多个服务上去维护一个事务就比较困难了.这里我们不再讨论分步事务的实现,转而

Kafka在高并发的情况下,如何避免消息丢失和消息重复?kafka消费怎么保证数据消费一次?数据的一致性和统一性?数据的完整性?

1.kafka在高并发的情况下,如何避免消息丢失和消息重复? 消息丢失解决方案: 首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的所有处于ISR的分区都确认收到该消息后,才算发送成功 消息重复解决方案: 消息可以使用唯一id标识 生产者(ack=all 代表至少成功发送一次) 消费者 (offset手动提交,业务逻辑成功处理后,提交offset) 落表(主键或者唯一索引的方式,避免重复数据) 业务逻辑处理(选择唯一主键存储到R

如何基于日志,同步实现数据的一致性和实时抽取?

一.背景 事情是从公司前段时间的需求说起,大家知道宜信是一家金融科技公司,我们的很多数据与标准互联网企业不同,大致来说就是: 玩数据的人都知道数据是非常有价值的,然后这些数据是保存在各个系统的数据库中,如何让需要数据的使用方得到一致性.实时的数据呢? 过去的通用做法有几种,分别是: DBA开放各个系统的备库,在业务低峰期(比如夜间),使用方各自抽取所需数据.由于抽取时间不同,各个数据使用方数据不一致,数据发生冲突,而且重复抽取,相信不少DBA很头疼这个事情. 公司统一的大数据平台,通过Sqoop