其他
如何平衡存储系统的一致性和可用性?
The following article is from 大数据DT Author 李玥
导读:本文从高可用视角来重新审视数据一致性问题,讨论如何在可用性和一致性上取得相对的平衡。
以不同格式或数据结构存储多个副本。 在不同类型的外部存储中存储多个副本。 在本地磁盘或内存中缓存数据的副本。
仅仅是为了写代码的时候更方便地读取数据,就随意增加副本。比如,为了便于查询,将数据库中A表中的部分字段,在B表中也保存一份。 系统中存在多个外部存储,为了读写方便,在每个外部存储都保存一份数据副本。比如,集群的元数据保存在ZooKeeper中,为了方便管理控制台操作,也在MySQL中保存一份同样的数据。 不考虑系统的性能实际要求,为了让系统速度更快一些,在Redis和内存中缓存数据。
重试指的是,让失败的节点重新执行更新操作。如果重试成功,系统将重新回到一致的状态。 回滚指的是,让之前更新成功的节点执行回滚操作,回到更新前的状态,也可以让系统重新回到一致状态。
幂等性,可以保证多次重试同一个更新操作不会改变状态的正确性; 原子性,则可以避免在更新具有复杂数据结构的状态失败时,只更新了部分状态的尴尬局面。
基本可用是对可用性的妥协,指的是在故障时,系统以响应时间变长、部分功能不可用或者部分请求失败为代价,换取整个系统仍然可以提供基本的服务能力。 软状态和最终一致则是对一致性的妥协。具体地说,就是牺牲了原子性和隔离性,允许系统内出现外部可见的“中间状态”,但需要在短时间内恢复为一致状态,达成最终一致。
(欢迎大家加入数据工匠知识星球获取更多资讯。)
联系我们
扫描二维码关注我们
微信:SZH9543邮箱:ccjiu@163.comQQ:2286075659热门文章
我们的使命:发展数据治理行业、普及数据治理知识、改变企业数据管理现状、提高企业数据质量、推动企业走进大数据时代。
我们的愿景:打造数据治理专家、数据治理平台、数据治理生态圈。
我们的价值观:凝聚行业力量、打造数据治理全链条平台、改变数据治理生态圈。
了解更多精彩内容
长按,识别二维码,关注我们吧!
数据工匠俱乐部
微信号:zgsjgjjlb
专注数据治理,推动大数据发展。