GMTC北京站本周日开幕,58个议题全部上线,点击查看 了解详情
写点什么

最终一致性的另一种选择

2014 年 6 月 24 日

自从 CAP 理论问世以来,最终一致性(Eventual Consistency)基本上成为了分布式系统设计的业界标准。最终一致性一方面让系统在分区(Partition)短期失效的时候仍能继续运转,另一方面也为业务提供了某种程度的异步性。然而,不同的系统对于数据不一致性的容忍度是不同的,异步性对某些业务场景也会造成限制。

业内最近的讨论中出现了不少对最终一致性的批判。Wyatt Lloyd 等人最近在 ACM 上发布了一篇标题叫做《最终一致性的不适用场景》的论文,文中论到:对于那些对时序一致性(temporal consistency)要求较高,对操作顺序有强要求的系统而言,最终一致性并不怎么好,甚至会造成严重的业务灾难。比如,如果一系列操作的消息被复制到跨地域的节点上,而消息传递的顺序却被打乱,则远程节点上被触发的一系列事件恐怕会产出跟其他节点截然不同的结果。

因果一致性提议将分布式系统设计成能够以精准确保上下文顺序的方式传递消息。这种模型更强调一致性而非分区容忍性,这一点在分布式系统设计领域看起来似乎像是开倒车,但该模型对优先级的强调实际上是一种更精细的设计思路,它对每个系统独特的需求和设计进行了更深入的思考。

“当人们在两种模型之间进行选择的时候,很多系统为了可用性和分区容忍性而牺牲了强一致性,而另外一些系统——比如处理金钱的系统——则为了实现强一致性而牺牲了可用性或分区容忍性。对于此类应用而言,强一致性是必要的。”——Lloyd 等

因果一致性并不是最终一致性的替代。因果一致性是针对那种需要绝对一致性场景的系统设计思路。到底选择因果一致性还是最终一致性,这并不是非此即彼的,你可以在风险灰度区间中选择合适的点。至于哪个模型更加适合你的系统,最终取决于系统的目的,以及对失效的容忍度。

查看英文原文: Alternatives to Eventual Consistency

2014 年 6 月 24 日 04:133201

评论

发布
暂无评论
发现更多内容

week 12 作业

Geek_2e7dd7

Golang写算法

卒迹

golang 算法

挽救你的视频号:能够把PPT转换成视频,把备注转换成语音的开源项目

陈磊@Criss

产品经理的架构思维

吴世亮

架构 产品经理 电商

java安全编码指南之:对象构建

程序那些事

Java 安全 安全编码指南 对象构建

SpreadJS 纯前端表格控件应用案例:表格数据管理平台

Geek_Willie

揭开链表的真面目

Java旅途

Java 数据结构 链表

C语言内存泄露很严重,如何应对?

华为云开发者社区

c 内存泄露 内存 代码 函数

云原生如何来进行HTTPS升级

soolaugust

架构 云原生 设计模式

性能相关 磁盘I/O子系统

Linuxer

Keepass+Synology 打造私人密码管理器

zj坚果

week 12 学习总结

Geek_2e7dd7

自己做的 PPT 总被批「缺少干货」?试试先回答这三个问题

Tony Wu

效率工具 方法论 PPT

anyRTC Native 4.1.0.1与Web SDK 4.0.11上线

anyRTC开发者

学习 WebRTC 语音 直播 sdk

文件系统

Linuxer

Cassandra Gossip协议的二三事儿

华为云开发者社区

源码 三次握手 开发者 Cassandra Gossip协议

区块链usdt支付系统开发,承兑支付跑分系统搭建

WX13823153201

区块链usdt支付系统开发

DockerHub 镜像仓库的使用

哈喽沃德先生

Docker 容器 微服务 镜像 容器技术

在面试中成长

escray

学习 面试 面试现场

面试是一张窄窄的船票

escray

学习 面试 面试现场

拖延症竟然是自己给自己的一种奖励?如何干掉它?

非著名程序员

个人成长 拖延症 番茄土豆工作法

面试必备知识点:悲观锁和乐观锁的那些事儿

鄙人薛某

面试 乐观锁 悲观锁 CAS 并发控制

1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知

YourBatman

Hibernate-Validator Bean Validation 数据校验 JSR380

话题讨论 | 当你敲代码累了时,一般喜欢吃点什么补充能量?

InfoQ写作平台官方

加班 写作平台 代码 话题讨论

管理时间还是挥霍时间?

钰湚—付晓岩

学习 时间管理 工作体会 工作哲学

MySQL复杂where条件分析

程序员历小冰

MySQL

新时代背景下的Java语法特性

九叔

Java java 14 java 14 新特性 Java 分布式

Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试​」

清菡

jenkins

甲方日常4

句子

工作 随笔杂谈 日常

oeasy教您玩转linux-010110内容回顾

o

你也许还不懂静态方法和实例方法

架构师修行之路

最终一致性的另一种选择-InfoQ