一致性问题的模式和思路

一.酸碱平衡理论

ACID在英文中的意思是“酸”,BASE的意思是碱

1.ACID(酸)

     关系型数据库天生用于解决具有复杂事务场景的问题,完全满足ACID的特性。

 ACID指如下内容。

A: Atomicity原子性

C:Consistency 一致性

I:Isolation  隔离性

D:Durability 持久性

       具有ACID特性的关系型数据库支持强一致性,强一致性代表数据库本省不会出现强一致性。每个事务都是原子的,事务是完全隔离的互相完全不受影响,并且最终状态是持久落盘的。

       因此在交易的相关系统进行技术选型,则交易的存储应该只考虑关系型数据库,对于核心系统,如果需要较好的性能,则可以考虑使用更强悍的硬件,这种向上扩展(升级硬件)虽然成本很高,但是确实最简单最有效的。NoSQL则不适合交易场景,主要用来做数据分析,挖掘,日志等的处理。

      然而在当前的互联网项目大多具有大规模、高并发的的特点,必须使用拆分的概念,对高并发的压力。分而治之、大而化小。否则难以满足动辄上亿的流量的需求,即时使用关系型数据库,单机也难以满足存储和吞吐上的性能需求。对于订单和扣库存,应尽量保证将订单和库存放入同一数据库分片,这就通过关系型数据看保证了数据的一致性型。但是有些时候也是事与愿违,由于业务规则的限制,我们无法将相关数据放在一个数据库分片,这时候就需要实现最终一致性。

 

2.CAP  

     由于对系统或者数据进行拆分,我们的系统不再是单机系统,而是分布式系统,针对分布式系统的CAP原理包含如下三个元素。

     C:Consistency,一致性。在分布式系统中的所有数据备份,在同一时间有相同的值。所有节点独到的数据都是数据的最新副本。

    A:Availabitity,可用性,好的相应性能。完全的可用性指的是在任何故障模型下,服务都会在有限的时间内处理完成并进行响应。

    P:partition tolerance,分区容忍性。 尽管网络上有部分数据丢失,系统仍然可以继续工作。

CAP原理证明,任何分布式系统只可同时满足以上两点,无法三者兼顾。而分布式系统都要满足分区容忍性,那么我们必须在一致性和可用性之间进行权衡。

       如果在网络上有消息丢失,也就是出现了网络分区,则复制操作可能被延后,如果这时候我们的适用方在等待复制完成后在返回,则可能导致在有限时间内不能返回,就失去了可用性。而如果适用法不等待复制完成,而在主分片完成后直接返回,则具有可用性,但是失去了一致性。

 

3.BASE    

       BASE思想解决了CAP提出的分布式一致性和可用性不可兼得的问题。基于ACID和BASE的理论,简单来说就是在不同的场景下,可以分别使用ACID和BASE来解决分布式服务化的一致性问题。

       BASE思想和ACID原理截然不同,它满足CAP原理,通过牺牲强一致性获得可用性。一般应用于服务化系统的应用层和大数据处理系统中,通过达到最终一致性来尽量满足业务的绝大多数需求。包含下面三个元素:

     BA:Basicallly Avaiablitity,基本可用

     S:Soft state,软状态,状态可以在一段时间内不同步.

     E: Eventually Consistent,最终一致性,在一定的时间窗口内,最终数据达成一致性。

软状态是实现BASE思想的方法,基本可用和最终一致性是目标。系统由于不保证强一致性,所以系统在请求处理的过程中可以存在短暂的不一致,在短暂的不一致的时间窗口内。请求处理处于临时状态中,系统中进入每步操作时,记录每个临时状态。在系统出现故障时可以从这些中间状态继续处理未完成的请求或者退回到原始状态,最终达到一致性。

       有了BASE思想作为基础,我们对复杂的分布式事务进行拆解,对其中的每个步骤都记有状态,有问题之后可以通过记录的状态来继续任务,达到最终一致性。

解决一致性问题三条实践经验:

1.使用向上扩展(强悍的硬件)并运行专业的关系型数据库(Oracle,DB2或者MySQL).能够保证强一致性,能用向上扩展解决问题都不是问题。

2.向上扩展的成本很高,可对开源的关系型数据库进行水平扩展和分片,将相关数据分到数据库的同一片上,任然能够使用关系型数据库保证事务。

3.如果业务规则限制,无法将相关数据放在同一分片中,就需要实现最终一致性,在记录事务的软状态(中间状态,临时状态)时,若出现不一致,则可以通过系统自动化或者人工干预修复不一致的问题。

 

 

转载于:https://my.oschina.net/u/3126880/blog/1822435

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值