《高扩展性网站的50条原则》原则19—放松时序约束

2019-03-08  本文已影响0人  Best_Scenery

时序约束

即对物品或对象在用户的两个动作之间的状态必须满足某种约束。

举例

电商系统中,用户浏览某个商品,把它放入购物车并结算这些操作都需要一些时间。有人认为,考虑到绝对的最佳用户体验,无论这个物品是否存在,都要在整个过程中使它保持统一的状态,即从浏览到某个商品开始到放弃购物车或者放弃结算之间都该商品在数据库中标识为“扣押”状态。

弊端

要保持上面例子中的状态的统一在分布式系统中往往比较困难,这样的约束性要求需要增加许多额外写操作(上面例子中用户在添加购物车或购买前会进行大量的商品搜索和浏览), 多个读副本之间同步写库的操作会有一定的延时(哪怕只有几毫秒), 难以保持各节点之间数据的完全一致。

CAP定理

CAP定理是分布式环境中设计核心的三点要求,单这三点要求不可能同时满足。

以上要求只能同时满足2个,CP或者AP。

BASE

CAP的解决方案的缩写叫BASE.

BASE有以下几个特点:

BASE的核心逻辑就是放松时序时序约束。

ACID

要满足时序约束,往往需要实现ACID(原子性、一致性、隔离性、持久性),代价非常高,而且影响性能和吞吐量。它的特点有:

总结

在一些很严格的关键领域采取严格的ACID事务,满足一定的时序约束,在其他很多领域对数据一致性要求不是很高的情况下使用BASE。

上一篇 下一篇

猜你喜欢

热点阅读