分布式学习(三)——ACID原理与BASE理论

    技术2022-07-11  104

    前言:要学BASE理论,首先要理解ACID。

    ACID原理

    事务

    简单来说就是一段逻辑,形象点也可以说是一件事,要么不做,要么做完。

    工作中我们经常会听到这样的话“它们应该放在一个事务里”,所以事务应该是由我们来控制的。原理性的东西一定不要把它局限在某一个区域理解,学会发散思维去思考,尝试代入到各个领域,你会理解的更深刻。举个不文雅点的例子,上厕所,一定是先脱裤子,再嗯哼...,然后穿裤子。要是脱了裤子就跑了,那么上厕所这件事就不在一个事务里了,会出大问题的。所以我们把上厕所这件事看作一件事。

    A:Atomicity,原子性。事务的最小执行单位,不可分割,要么不做,要么做完。C:Consistency,一致性。执行前后数据一致。I:Isolation,隔离性。发生并发时,一个事务不会被其他事务影响。(划重点)D:Durability,持久性。一个事务提交后,他的影响是持久的,不可回退的。

    我们常用的Oracle、MySQL、DB2数据库都具有ACID特性,每一条SQl都是一个事务,执行后要么成功,要么失败,互相不受影响,最终状态是持久的,不会出现做了一半这种情况,能够保证强一致性。

     

    BASE理论

    解决了CAP提出的分布式系统的一致性和可用性不可兼得的问题;它满足CAP原理,通过牺牲强一致性获得可用性。

    BA:Basically Available,基本可用。可损失部分可用,保证核心可用。

    S:Soft State,软状态。允许系统中数据存在中间状态,状态可以在一段时间内不同步。

    E:Eventual Consistent。最终一致,在一定时间内,最终数据达成一致。

    软状态是一种方法,基本可用和最终一致是要达到的目标。通过使用软状态,损失部分的可用性,适当延长一致性所需时间来达到最终一致性。

    上面我们说了上厕所它是一件事,要么做完,要么不做。如果在你上厕所的时候领导来电话了,因为你已经在上厕所了所以只能上完再接,这个时候领导就不高兴了,接个电话都这么久,一点可用性都没有,换人!。。。如何解决这个问题呢,只能将上厕所这件事拆解开来,1.脱裤子,2.嗯哼,3.穿~叮叮。“喂”。。。终于说完了,老板还夸了夸我,说我反应迅速。嗯,我是谁?我在哪?为啥腿有点酸。仔细想了想,嗯,我在上厕所,该穿裤子走人了,3.穿裤子。  这套解决方案就是BASE理论,实际应用中,代码没有记忆,所以我们要时刻为它操心,记录他都在干什么,如果出现意外来电能够在挂断电话之后提醒他接下来该做什么。以达到最终一致性,腿还是有点酸。

     

    结束语

    对于一个文笔不怎么样的程序来说,写博客真的挺累的,又耗时又耗脑,好多东西脑子里有却不太好表达,如果你觉得这篇文章对你有帮助,点个赞支持一下,给博主一些动力。

    ACID的隔离性如果你还懵懵懂懂,建议抽时间去充充电吧,有道无术,术尚可求也,有术无道止于术也。

    Processed: 0.011, SQL: 9