从酸、帽和碱理论看分配促进

概述

:

1,从本地事务到分布式理论

2,ACID理论

3,CAP理论

4,CAP理论“3选择2”参数

5,BASE理论

附加:分布式概念

分布式实际上是一个单一的本地集成解决方案,不足以满足硬件或资源方面的业务需求。相反,它采用分散的多节点解决方案,可以扩展资源。它研究如何将一个需要很大计算能力的问题分成许多小的部分,然后将这些部分分配给多台计算机进行处理,最后将这些计算结果组合起来得到最终结果

那么在我们了解分布之前,我们应该从一个集成结构开始

1。从局部事务到分布式理论

理解的第一个问题是,“事务”

事务提供了一种机制,将活动中涉及的所有操作集成到一个不可分割的执行单元中。构成事务的所有操作只能在所有操作都能正常执行的情况下提交。任何一个操作失败都会导致整个事务回滚。

只是声明事务提供了一种“什么也不做或者什么都做”的机制。

2,ACID理论

原子性

一致性

隔离

持久性

原子性

整个事务中的所有操作要么已完成,要么未完成,并且不能在某个中间链接处停止

例如:银行转账,从账户A到账户B 100元:

A,从账户A到账户100元

B,存入账户100元到账户B这两个步骤要么一起完成,要么不一起完成。如果第一步完成了,第二步失败了,钱会莫名其妙地少于100元。

一致性

在事务开始之前和事务结束之后,数据库数据的一致性约束不会被破坏

例如,现有的完整性约束A+B=100。如果一个交易改变了A,那么B必须被改变,这样在交易结束后A+B=100仍然被满足,否则交易失败。

隔离

数据库允许多个并发事务同时读取、写入和修改数据。如果一个事务要访问的数据正在被另一个事务修改,只要另一个事务未提交,它所访问的数据就不会受到未提交事务的影响当多个事务并发执行时,隔离可以防止交叉执行导致的数据不一致

例如,现有的一笔交易从账户A转到账户B,金额为100元。在本次交易未完成的情况下,如果乙方此时查询自己的账户,新增的100元就看不到了。

持久性在

事务完成后,数据修改是永久性的,即使系统失败也不会丢失。

本地事务ACID实际上可用于统一提交和失败的回滚,这严格保证了同一事务中数据的一致性!

3和CAP理论

在设计大规模可扩展网络服务时满足三个特征:一致性、可用性和分区容错。

CAP法律规定,在分布式计算机系统中,一致性、可用性和分区容错这三个保证不能同时满足,最多只能满足两个。

如上所示,CAP的三个特性只能同时满足两个。此外,还有一些不同组合的成熟分布式产品。

接下来,让我们介绍一下CAP的三个特性。我们使用一个应用场景来分析CAP中每个特征的含义

整个场景分为五个进程:

进程一,客户端发送请求

进程二,以及网络服务层处理服务。并在存储层修改存储的数据信息

流程3,主备份的数据同步

流程4,网络服务层从存储层取出数据

流程5,网络服务层将数据返回给客户端

一致性

“所有节点同时看到相同的数据”

一旦数据更新完成并成功返回给客户端,则

还包括CAP一致性中的强一致性、弱一致性、最终一致性和其他级别,这将在后面的章节中描述。

一致性意味着写操作后的读操作可以读取最新的数据状态。当数据分布在多个节点上时,从任何节点读取的数据都是最新状态。实现了

一致性的目标:

网络业务层成功地将数据库写入主服务器,并从备份中读取数据

网络业务层无法从主服务器读取数据库,也无法从备份服务器读取数据。

必要实现过程:

写入主数据库后,从数据库在与从数据库同步时被锁定,同步完成后解除锁定,以免新数据写入成功后向从数据库查询旧数据。

分布式一致性特性:

由于数据同步的过程,写响应会有一定的延迟

将临时锁定资源以确保数据一致性,并在数据同步完成后释放锁定的资源

如果请求数据同步的节点失败,它将返回一条错误消息,并且不会返回旧数据

可用性

“读取和写入始终成功”

服务始终可用,并且是正常响应时间

测量可用性如下:

可用性分类可用性级别容差停机时间容差可用性99.9999

可用性实现目标:

更新主数据库时,备份数据库可以在收到数据查询请求时立即响应数据查询结果

备份数据库不允许响应超时或响应错误

的必要实现过程:

写入主主数据库后,数据应同步到从数据库

备份无法从数据库中的资源锁定,因为数据库中的备份可用。

实时数据尚未同步,要查询的数据,即使是旧数据和/或默认数据,也应该从数据库返回,但不能返回错误或响应超时。

分布式可用性功能:

所有请求都有响应,不会有响应超时或响应错误。

分区容错

“系统继续运行目标消息丢失或部分系统出现故障”在

分布式系统中,尽管某些节点出现任何消息丢失或故障,系统仍应继续运行。

通常分布式系统的每个节点都部署在不同的子网中,即网络分区。由于网络问题,节点之间的通信不可避免地会出现故障。此时,服务仍然可以由外部提供。实现了

分区容错的目标:从

主数据库到从数据库的数据同步失败不会影响读写操作

一个节点的挂起不会影响另一个节点提供的外部服务。

必要的实现过程:

尽可能用异步代替同步操作,例如用异步将主数据库中的数据同步到从数据库中,这样可以有效地实现节点间的松耦合

从数据库节点添加备份,其中一个从该节点挂起另一个备份,以从该节点提供服务

分区容差的特点:

分区容差是分布式系统的基本能力。

4、CAP的“3对2”证明

基本情景

在总结中,我们主要介绍为什么CAP的理论不能同时满足这三个特征上面显示的

是我们证明CAP的基本场景。分布式网络中有两个节点主机1和主机2。他们之间的网络是可以连接的。进程1程序和相应的数据库数据在主机1中运行,进程2程序和相应的数据库数据在主机2中运行。

CAP功能

如果一致性得到满足:则数据=数据。

如果可用性得到满足:用户将立即响应结果,而不管对主机1或主机2的请求

如果满足分区容错:主机1或主机2离开系统,主机1和主机2的正常运行不会受到影响上述

分布式系统正常运行流程

是分布式系统正常运行的流程。

A,用户从主机1请求数据更新,程序进程1将数据库数据更新为数据

B,分布式系统同步数据,使主机1中的数据与主机2中的数据同步,主机2中的数据也更改为数据

C。当用户请求主机2时,进程2根据CAP的特征响应最新的数据数据

:

主机1和主机2的数据库数据之间的数据是否是相同的

用户对主机1和主机2的请求响应是可用性

主机1和主机2之间各自的网络环境是分区容错

。目前,这是一个正常的操作过程。目前,CAP的三个特性可以同时得到满足,这也是一种理想状态。然而,在实际应用场景中,错误是不可避免的。如果出现错误,是否可以同时满足CAP,或者如何选择?

分布式系统异常操作过程

假设主机1和主机2之间的网络断开,我们需要支持这种网络异常,这相当于满足分区容错。我们能同时满足一致性和可用性响应吗?

假设当N1和N2之间的网络断开时,

A,用户向主机1发送数据更新请求,然后主机1中的数据将被更新为数据

B。当它较弱时,主机1和主机2网络断开,因此分布式系统同步操作将失败。主机2中的数据仍然是数据

C,用户向主机2发送数据读取请求。由于数据尚未同步,进程2无法立即将最新数据V1返回给用户,因此它将面临两种选择

首先,牺牲数据一致性,并向用户响应旧数据数据;

秒,牺牲可用性和数据块等待,直到网络连接恢复和数据同步完成,然后向用户响应最新数据Data。

证明,对于满足分区容错的分布式系统,只能选择一致性和可用性之一。

"3对2 "

的必然性通过CAP理论,我们知道我们不能同时满足一致性、可用性和分区容错性三个特征。我们应该放弃哪一个?

CA放弃P:

在分布式系统中,不可能不满足P。放弃分区容错,即不进行分区,不考虑网络断开或节点挂起的问题,从而实现一致性和可用性。那么该系统将不是标准的分布式系统最常用的关系数据满足CA,如下:

主数据库和从数据库不再同步数据。数据库可以响应每个查询请求,每个查询请求都可以通过事务隔离级别返回最新数据

注:

适用于分布式系统压力是一个基本要求,在这三个上限中,只有CA可以在两者之间进行权衡,并想方设法提高压力

CP放弃A

如果分布式系统不要求高可用性,即如果系统被允许关闭或长时间没有响应,则可以在CAP中保证CP,并且可以放弃A

放弃了可用性,追求一致性和分区容错,如Redis、HBase等。在分布式系统中常用的动物园管理员也选择在CAP三中确保CP第一场景

:

银行间转账。在两个银行系统完成整个交易之前,转账请求无法完成。

AP放弃C

放弃一致性,追求分区容差和可用性这是设计许多分布式系统时的一个选择。只有当用户能够接受所查询的数据在某个时间段内不是最新的时,才实现访问点。

通常实现AP以确保最终的一致性,后面描述的BASE理论根据AP进行了扩展

场景1

淘宝订单退款今天的退款是成功的,只要用户在一定的时间内可以接受收据,明天的帐户就会收到。

场景2:

12306购票两者都选择可用性,而不是可用性和一致性之间的一致性。

在购买票时在12306提示购买票,并且用户通常输入验证码来下订单。然而,过了一会儿,系统提示订单失败,剩余的票不够。事实上,这首先是为了保证系统在可用性方面的正常服务,然后在数据一致性方面做出一些牺牲,这将影响一些用户体验,但不会造成用户进程的严重阻塞。

,然而,我们说许多网站牺牲一致性,选择可用性,这也是不准确的。例如,在上面买票的例子中,被放弃的是很强的一致性。其次是确保最终的一致性。换句话说,尽管在下订单时可能会有不一致的机票库存数据,但必须在一段时间后确保最终的一致性。

摘要:

CP放弃a:如果a不是必需的,这意味着每个请求在服务器之间需要非常一致,并且p将导致同步时间的无限延长,因此也可以保证CP许多传统的数据库分布式事务都属于这种模式。

AP丢弃C:为了获得高可用性并允许分区,需要丢弃一致性一旦发生分区,节点可能会失去联系。为了高度可用,每个节点只能提供本地数据服务,这将导致全局数据不一致现在许多NoSQL都属于这一类。

5,思考

思考:如何根据CAP理论设计电子商务系统?

电子商务网站的第一个核心模块包括用户、订单、商品、支付、促销管理等。

1。用于用户模块,包括登录、个人设置、个人订单、购物车、收藏夹等。,这些模块确保AP和不一致的数据在短时间内不会影响使用。

2,订单模块的单笔支付和库存扣款操作是整个系统的核心,CA需要保证,在极端情况下,A保证C

3,商品模块的商品装卸和库存管理保证CP

4,搜索功能本身不是一个很实时的模块,所以它足以保证AP

5,促销与短期数据不一致。因此,优惠信息无法看到。但是,必须保证现有的优惠政策可用,并且优惠政策可以预先计算,因此可以保证AP

6,支付是一个独立的系统,还是使用第三方的支付宝、微信事实上,CAP是由第三方担保的。支付系统是一个对CAP有极高要求的系统。必须保证。美联社中的a相对更重要。没有人能因为分区而支付

6。分布式基本理论

CAP不能同时满足。分布式系统需要分区容错。如果系统能同时实现计算机辅助工艺设计,那就太完美了,于是基础理论应运而生。

BASE理论

通用定义

BASE基本可用基本可用

实际上是两种折衷

折衷响应时间:正常情况下,在线搜索引擎需要在0.5秒内将相应的查询结果返回给用户,但由于失败,查询结果的响应时间增加到1~2秒

功能损失妥协:在正常情况下,当在电子商务网站上购物时,消费者可以成功完成几乎所有订单。然而,在一些节日的高峰时段,由于消费者购物行为的急剧增加,为了保护系统的稳定性,一些消费者可能会被定向到降级页面,如下所示:

软状态

原子性->要求多个节点的数据副本是一致的。这是一个“硬状态”

软状态->允许系统中的数据有一个中间状态,并且认为这个状态不会影响系统的整体可用性,即允许系统在多个不同节点的数据副本中有数据延迟

最终一致

以上表示软状态,那么不可能总是软状态,必须有时间限制截止日期后,应保证所有副本保持数据一致性。从而实现数据的最终一致性。该时间限制取决于网络延迟、系统负载、数据复制方案设计和其他因素

略显正式的说法是,

系统可以确保数据最终达到一致状态,而无需其他新的更新操作,因此所有客户端最终都可以获得系统数据访问的最新值。

BASE summary

大家都在看

相关专题