
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
BASE理论是程序员在学习分布式编程开发技术的时候需要重点掌握的一个编程理论知识,下面我们就通过案例分析来简单了解一下,BASE理论的概念与应用方式分析。
1、BASE理论是什么
BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strongconsistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到Eventualconsistency。接下来我们着重对BASE中的三要素进行详细讲解。
基本可用:指分布式系统在出现不可预知故障的时候,允许损失部分可用性。
响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。
功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。
弱状态:也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
2、ACID和BASE的区别与联系
BASE是对CAPAP理论的延伸,Redis等众多系统构建与这个理论之上。
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。ACID和BASE代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
3、终一致性五钟变种
在实际工程实践中,终一致性存在以下五类主要变种:
因果一致性:如果ProcessA通知ProcessB它已经更新了数据,那么ProcessB的后续读取操作务必基于A写入的新值。与此同时,与ProcessA无因果关系的ProcessC的数据访问则没有这样的限制。
读你所写一致性:如果ProcessA写入了新的值,那么ProcessA的后续操作都会读取到新值。但是其它用户可能要过一会才可以看到。
会话一致性:一次会话内一旦读到某个值,不会读到更旧的值。
单调读一致性:一个用户一旦读到某个值,不会读到比这个值更旧的值,其他用户不一定。
单调写一致性:一个系统需要能够保证来自同一个进程的写操作被顺序地执行
其中重要的变体是二条:读你所写一致性。特别适用于数据的更新同步,用户的修改马上对自己可见,但是其他用户可以看到他老的版本。Facebook的数据同步就是采用这种原则。
4、分布式系统的应用
分布式系统是一个非常广泛的概念,它终要落实到解决实际问题上,不同的问题有不同的方法和架构。所有的开源软件都是以某个应用场景出现,而纯粹以“分布式”概念进行划分的比较少见。
但如果以算法划分,到能分出几类:
以Leader选举为主的一类算法,比如paxos、viewstamp,就是现在zookeeper、Chuby等工具的主体
以分布式事务为主的一类主要是二段提交,这些分布式数据库管理器及数据库都支持
以若一致性为主的,主要代表是Cassandra的W、R、N可调节的一致性
以租赁机制为主的,主要是一些分布式锁的概念,目前还没有看到纯粹“分布式”锁的实现
以失败探测为主的,主要是Gossip和phi失败探测算法,当然也包括简单的心跳
以弱一致性、因果一致性、顺序一致性为主的,开源尚不多,但大都应用在Linkedin、Twitter、Facebook等公司内部
当然以异步解耦为主的,还有各类Queue
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。