架构设计的分表分库带来的结果是我们不得不考虑分布式事务,今天我们济南曲家村来看看分布式事务需要记住哪两个原理。

要点:

CAP

BASE

CAP

互联网思嘉干妈应用大多会btv6在线直播使用分表分库的操作,这个缘来没法挡时候业务代码很可能会同时访问两个不同的数据库,做不同的操作。同时这两个操作有可能放在同一个事务中处理。

这里引出分布式系统的CAP理论他包括以下三个属性:

一致性(Consistency):分布式巨会玩系统中的所有数据,同一时刻有同样的值。业务代码往数据库01这个节点写入记录A,数据库01把A记录同步到数据库02,业务代码再从数据库02中读出的记录也是A。那么两个数据库存放的数据就是一致的。

可垂枝式柽柳盆景用性(Availability):分布式系统中一部分节点出现故障,分布式系统仍旧可以响应用户的请求。假设数据库0hkws1 和02 同时存放记录A,由于数据库01挂掉了,业务代码不能从中获取数据。那么业务代码可以从数据库02中获取记录A。也就是在节点出现问题的时候,还保证的数据的可诺基亚e81用性。

分区容错性(Partition tolerance):假设两个数据库节点分别在两个区,英国sec蓄电池而两个区的通讯发生了问题。就不能达成数据一致,这就是分区的情况,我就需要从C和A之间做出选择。是选择可用性(A),获取其中一个区的数据。还是选择一致性(C),等待两个区的数据同步了再去获取数据。

这种情况的前提是两个节点的通讯失败了,写入数据库01记录的时候,需要锁住数据库02记录不让其他的业务代码修改,直到数据库01记录完成修改。因此C和A在此刻是矛盾的。两者不能兼得。

BASE

BASE原理广泛应用在数据量大,高并发的互联网场景。

基本可用(Basically Available): 不会因为某女畜警犬系个节点出现问题就影响用户的请求。即使在流量激增的情况下,也会考虑通过限流降级的办法保证用户的请求是可用的。比如,电商系统在流量激增的时候,资源会向核心业务倾斜,其他的业务降级处理。

软状态( 靳萧然Soft State):凤凰大视野,项脊轩志,乳酸菌素片的作用一条数据如果存在多个副本,允许副本之间同步的延迟,在较短时间内能够容忍不一致。这个正在同步并且还没有完成同步的状态称为软状态。

最终一致性( Eventual Consistency):最终李天舒一致性是相对于强一致性来说的,强一致性是要保证所有的数据都是一致的,是实时同步。而最终一致性会容忍一小段时间数据的不一致,但过了这段时间以后数据会保证一致。其包含以下几种一致性。

一. 因果一致性(Cau浦安修晚年待遇sal consistency养石蛙家有没有补贴)

如果有两个进程1和2都对变量腹黑帝凰X进行操作,进程1 写入变量X,进程2需要读取变量X然后用这个X来计算X+2。这里进程1和进程2 的操作就存在因果关系。进程2 的计算依赖于进一斛珠番外女儿八斤程1写入的X,如果没有X的值进程2无法计算。

二. 读己之所写(Read your writes)

进程1写入变量X之后,该进程可以获取自己写入的这个值。

三. 会话一致性(Session consistency)

如果一个会话中实现来读己之所写。一旦数据更新,客户端只要在同一个会话中就可以看到这个更新的值。

四. 单调写一致性(Monotoic write consiste焰灵姬壁纸ncy)

进程1如果有三个操作分别是1,2,3。进程有两个操作索乐游戏下载分别是1,2。如果同时或者先后请徐天官求系统,系统会保证按照进程中操作的先后顺序来执行。

总结:

介绍了为什么会遇到分布式事务的情况,以及CAP和BASE两个分布式系统的设计原理。