无风无影

   ::  :: 新随笔  ::  ::  :: 管理

事务CAP、ACID、BASE、酸碱平衡

( 1 ) CAP特点:

大型分布式系统中要同时能够满足,分布式一致性(Consistency)、可用性(Availability)和分区容忍性(Partitiontolerance),是不存在的。在大多数情况下只能满足其中的2项,而实现系统的最终一致性(Base理论)。

a.一致性(Consistency):数据在分布式各个节点上都是一致的

b.可用性(Availability):分布式各个节点都能够正常处请求

c.分区容忍性(Partition Tolerance) :如果出现了网络故障、一部分节点无法通信,但是系统仍能够工作

 

( 2 ) ACID(酸)特点:

a.原子性(Atomicity)

一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。

b.一致性(Consistency)

事务的数据一致性,指一个事务执行之前和执行之后数据库都必须处于一致性状态。例如A转账给B用户100元,那么只要A被扣了100,B就必须增加100,从而保证数据一致性。

c.隔离性(Isolation)

指两个不同事务操作相同数据,相互之间是独立的,不能互相使用中间状态,只能看到事务执行后的状态数据。

d.持久性(Durability)

指事务结束,则事务操作的数据就不能丢失。

 

( 3 ) Base(碱)理论:

  CAP理论告诉我们一个悲惨但不得不接受的事实——我们只能在C、A、P中选择两个条件。而对于业务系统,往往需要选择牺牲一致性来换取系统的可用性和分区容错性。

  备注:所谓的“牺牲一致性”并不是完全放弃数据一致性,而是牺牲强一致性换取弱一致性。

  • BA:Basic Available 基本可用
    • 整个系统在某些不可抗力的情况下,仍然能够保证“可用性”,即一定时间内仍然能够返回一个明确的结果。只不过“基本可用”和“高可用”的区别是:
      • “一定时间”可以适当延长     例如:当举行大促时,响应时间可以适当延长
      • 给部分用户返回一个降级页面      例如:给部分用户直接返回一个降级页面,从而缓解服务器压力。但要注意,返回降级页面仍然是返回明确结果。
  • S:Soft State:柔性状态 同一数据的不同副本的状态,可以不需要实时一致。
  • E:Eventual Consisstency:最终一致性 同一数据的不同副本的状态,可以不需要实时一致,但一定要保证经过一定时间后仍然是一致的。

 

( 4)酸碱平衡理论:

  即根据业务场景,在ACID和Base之间寻找平衡。ACID能够保证事务的强一致性,即数据是实时一致的。这在本地事务中是没有问题的,在分布式事务中,强一致性会极大影响分布式系统的性能,因此分布式系统中遵循BASE理论即可。但分布式系统的不同业务场景对一致性的要求也不同。如交易场景下,就要求强一致性,此时就需要遵循ACID理论,而在注册成功后发送短信验证码等场景下,并不需要实时一致,

( 5)CAP如何选择:

  可用性和分区容错性是业务系统必须要满足的两个条件,并且这两者是相辅相成的。业务系统之所以使用分布式系统,主要原因有两个:

  • 提升整体性能  可用性对业务系统也尤为重要,例如:如果业务系统时常出现“系统异常”、响应时间过长等情况,这使得用户对系统的好感度大打折扣,在互联网行业竞争激烈的今天,相同领域的竞争者不甚枚举,系统的间歇性不可用会立马导致用户流向竞争对手。当业务量猛增,单个服务器已经无法满足我们的业务需求的时候,就需要使用分布式系统,使用多个节点提供相同的功能,从而整体上提升系统的性能,这就是使用分布式系统的第一个原因。
  • 实现分区容错性 分区容错性是分布式系统的根本,如果分区容错性不能满足,那使用分布式系统将失去意义。例如: 单一节点 或 多个节点处于相同的网络环境下,那么会存在一定的风险,万一该机房断电、该地区发生自然灾害,那么业务系统就全面瘫痪了。为了防止这一问题,采用分布式系统,将多个子系统分布在不同的地域、不同的机房中,从而保证系统高可用性。
posted on 2018-11-30 16:22  NWNS-无风无影  阅读(826)  评论(0)    收藏  举报