【JAVA核心知识】34:事务的ACID;分布式的CAP原则与BASE理论 ---- 《从Paxos到Zookeeper》读书笔记

分布式的特点

  • 分布性:计算机在空间上随意分布,机器的分布情况也会随时变动
  • 对等性:分布式系统所有的节点平等,没有中心的概念。
  • 并发性:程序运行中并发性操作是常见的行为
  • 缺乏全局时钟:分布式系统缺乏全局时钟,因此很难定义两个事件谁先谁后。
  • 故障总会发生:人格在设计阶段考虑到的异常情况,一定会在系统运行中发生,并且还会遇到很多在设计时未能考虑到的异常故障。因此,设计时不能放过任何异常情况。

分布式的挑战

  • 通信延时,单机内存访问的延时在纳秒级别(通常是10ns),而正常一次网络通信在0.1-1ms左右。想当于100倍的差距。
  • 网络分区与脑裂
  • 三态:成功,失败与超时。单机只有两态:成功或失败。分布式系统可能因为通信问题或者消息丢失,导致超时的场景。超时无法确认请求是否被成功处理。
  • 节点故障:部分节点宕机

事务的特征:ACID

ACID的知识:原子性,一致性,隔离性,持久性。

  • Atomicity(原子性):一个事务内的所有操作,要么全部完成,要么全部失败,不会结束在中间的某个环节。事务在执行过程中发生错误,会恢复到事务执行前的状态,就像这个事务从未执行过一样。
  • Consistency(一致性):事务的执行不能破坏数据库的完整性,即写入的数据要符合预设的规则。包括但不限于主键唯一性,列完整性(类型长度符合要求),外键约束,用户自定义的完整性。
  • Isolation(隔离性):隔离性是指事务之间相互干扰的程度,一个事务对另一个事务的干扰程度不能超过定义的隔离级别。
  • Durability(持久性):事务执行完毕后,对数据的修改是永久的,即使数据库发生故障也不会丢失。

CAP原则

CAP原则是现代分布式系统的理论基石。
分布式系统的节点往往都是分布在不同机器上的,这意味着必然会有网络断开的风险,这个网络断开的场景就是网络分区。
CAP原则:CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)最多能实现2个,不能3者兼顾。

  • 一致性(Consistency):所有数据节点在任意时刻数据都是一致的。
  • 可用性(Availability):在任何时间都处于可用状态,总是能对请求进行响应,而不阻塞或报错。
  • 分区容忍性(Partition tolerance):系统中分区间通信出现问题时或部分分区宕机时,活动的分区依然能够独立提供服务。

这三要素最多只能实现两点,不可能三者兼顾。但是对于分布式系统来说P是必须的,因为如果要保证AC,那么只能单机运行,就不属于分布式系统了。 因此分布式系统也就分为了AP和CP系统。
AP系统放弃了一致性,保证可用性,即网络分区发生后即使各个分区数据已经不一致依然提供服务。
CP系统放弃了可用性,保证了一致性,即网络分区发生后停止服务,以此来保证数据的一致性。
提高分区容忍性的方法就是复制更多的节点,但是节点越多一致性就越难保证。

BASE理论

在CAP的基础上发展而来:核心思想是即使无法做到强一致性,但每个应用可以根据自身的业务特点,采用适当的方式达到最终一致性。

  • BA (Basically Available:基本可用):系统出现不可知故障时,允许损失部分可用性,比如损失响应时间(用更长的时间做出响应),损失功能(引导请求到一个降级功能上), 注意这不等价于系统不可用。
  • S (Soft state:软状态):也称弱状态。即允许数据存在中间状态,并且中间状态不影响系统整体可用。直白点说就是允许数据同步存在延时。
  • E (Eventually consistent:最终一致性):各个节点的数据在经过一段时间后能达到一致的状态。即副本虽然不保证实时一致,但会努力追赶数据以达成一致性。属于一种特色的弱一致,系统在没有新的更新操作下,数据最终能达成一致。

PS:
【JAVA核心知识】系列导航 [持续更新中…]
欢迎关注…

参考资料:
《从Paxos到Zookeeper++分布式一致性原理与实践》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue_hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值