• 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

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

  • 相关阅读:
    window.location.href的用法
    echarts折线图阴影设置
    SVN使用教程图文教程
    jksj算法训练营-第二课02 时间复杂度和空间复杂度分析
    jkjj算法训练营笔记-第二课01 训练环境配置、编码技巧和code style
    MySQL 基础模块的面试题总结
    MySQL 事务的面试题总结
    MySQL 中锁的面试题总结
    MySQL 命令和内置函数
    MySQL 性能优化 & 分布式
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10534505.html
Copyright © 2020-2023  润新知