关于“Base 一种Acid的替代方案”

我最初听说BASE,是跟一个同事聊到分布事务的时候,同事提到的。当时,他是拿BASE跟分布事务相提并论的(至少我理解是这样的)。后来看了这篇阐述BASE的文章,才发现跟最初想象差别很大,这也是我写篇文章的原因之一。

Base 一种Acid的替代方案

http://queue.acm.org/detail.cfm?id=1394128

我E文很差,看的是中文翻译http://www.javaeye.com/articles/2776

文章介绍了分布/集群应用中由于异步、分布交易(跨网络、异构系统)、缓存等因素,以致使传统的Acid事务模型不能(或不适合)解决交易完整性的问题。
文章中提到了CAP定理,这个定理也间接地说明了acid事务模型无法适用于特定的分布应用系统。
尤其是P(partition tolerance)分区容错性,即使出现单个组件无法可用,操作依然可以完成。
BASE即基本可用(BA)、弱状态(S)、最终一致性(E).文章用一些具体生动的例子去描述如何应用这些原则和具体的手段去做到满足用户可接受的交易需求的同时,最大限度的提高系统性能和可用性。
本来想写个对此文章的更专业一些的评论,但发现自己并不具备这样的能力。下面我会说明一些我的看法,着重提出一些该文章(我认为)容易产生误解的地方,但很抱歉我没有能力深入、严谨地论述我的观点。

本文对面向简单交易的大型电子商务网络系统应用的设计提出了一些很有价值的概念和具体的手段。

1、用户可接受的最终结果。这个概念的价值在于,技术层次上或系统内部的暂时的不一致或不稳定状态,只要能够满足最终用户需求,是可以接受的,并且利用这一概念和一些具体的手段可以提高系统性能和可用性。

2、分析了一些在大型电子商务应用系统中会遇到的关于交易的问题。

3、一些手段。比如事件驱动、利用系统消息解耦,消息、操作顺序等等。

当然,对于其他读者,还有不同读者感兴趣的其他有价值的内容,也有些容易使部分读者产生误解的地方。
1、背景和前提 

  猜测作者的用意是针对在传统的单数据库系统的局部环境下通过acid事务手段设计实现的交易功能,在复杂的分布、集群、缓存系统环境下无法用同样的手段(acid事务)实现,从而提出一些概念和手段用于解决这些问题。相当一部分读者(比如我),潜意识就认为两种系统存在巨大差异,如果这个前提或背景在文章中没有说明,可能不会想到是要跟传统单数据库环境系统做比较的。

2、面向业务的交易和面向数据状态的事务处理

  这两个概念本来就存在很大差别,只可惜中英文都用Transaction(交易、事务)这个单词。前者是面向应用的,强调的是一个业务处理过程对用户的体验和业务需求的满足,而后者是面向系统的技术层次的概念,用于阐述数据状态转移过程中的原则和约束。显然,acid是后者,而BASE相关的事务是指的前者。容易产生混淆的另一个原因是在单数据库系统环境下业务交易的实现是直接通过acid事务实现的。

3、Base到底是什么?

  绝对不是事务,或者说是跟acid相提并论的事务概念。可以理解为一种架构风格,一些概念、原则和方法用于实现分布、集群、缓存系统中的业务交易或解决一些相关的问题。

4、Base是新理论或新概念吗?

  我认为不是,这篇文章里提到的一些概念和手段已经在很多系统中使用,BASE只是理论和实践的总结和抽象。“人们经常会遇到交易与运行结余之间的这种延迟(例如,ATM取款或者手机通话).”这是作者解释最终一致性时用到的一个例子。但很遗憾,ATM取款所代表的交易类型以及它背后的支持系统恰恰是和文章本身要解决的问题及其系统环境有太多的相似(分布、异构、消息系统、交易完整性)。有自己解释自己的重大嫌疑。这个问题也说明BASE所阐述的内容并不是什么新鲜事物。
5、容易误解的标题。

  BASE替代acid?前面1、2、3的观点是我对这篇文章的理解,确实是很难找到一个很准确的标题用于概括文章用意。无论如何,“Base 一种Acid的替代方案”不是个好的标题,这么专业的文章也搞标题党。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值