Prepare to Pick Two

本文探讨了分布式系统中一致性(Consistency)、可用性(Availability)及分区容忍性(Partition tolerance)之间的权衡,即CAP原理。通过分析指出,在实际应用中往往难以同时实现这三个特性,并讨论了如何在这些特性之间进行合理选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Prepare to Pick Two

Bill de hÓra

SoMETiMES ACCEpTing A ConSTRAinT or giving up on a property can lead to a better architecture, one that is easier and less expensive to build and run. Like buses, desirable properties tend to come in threes, and trying to define and build a system that supports all three can result in a system that does noth- ing especially well.
A famous example is Brewer’s conjecture, also known as Consistency, Avail- ability, and Partitioning (CAP), which states that there are three properties that are commonly desired in a distributed system—consistency, availability, and partition tolerance—and that it is impossible to achieve all three. Trying to have all three will drastically increase the engineering costs and typically increase complexity without actually achieving the desired effect or business goal. If your data must be available and distributed, achieving consistency becomes increasingly expensive and eventually impossible. Likewise, if the system must be distributed and consistent, ensuring consistency will lead at first to latency and performance problems and eventually to unavailability since the system cannot be exposed as it tries to reaches agreement.
It’s often the case that one or more properties are considered inviolate: data cannot be duplicated, all writes must be transactional, the system must be

100% available, calls must be asynchronous, there must be no single point of failure, everything must be extensible, and so on. Apart from being naïve, treating properties as religious artifacts will stop you from thinking about the problem at hand. We start to talk about architectural deviation instead of prin- cipled design and we confuse dogmatism with good governance. Instead we should ask, why must these properties hold? What benefit is to be had by doing so? When are these properties desirable? How can we break up the system to achieve a better result? Be ever the skeptic, because architectural dogma tends to undermine delivery. The inevitability of such tradeoffs is one of the most difficult things to accept in software development, not just as architects, but also as developers and stakeholders. But we should cherish them; it’s far better than having limitless choice, and accepting tradeoffs often induces a creative and inventive result.
Bill de hÓra is chief architect with NewBay Software, where he works on large scale web and mobile systems. He is co-editor of the Atom Publishing Protocol and previously served on the W3C RDF Working Group. He is a recognized expert on REST style and message-passing architectures and protocol design.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值