框架篇:分布式理论CAP、BASE

框架篇:分布式理论CAP、BASE

作者: cscw 2021-06-02 22:16:56

开发

架构

分布式 随着业务的拓展,功能越来越多。把所有的功能都放在同一个服务下,代码混合交错,造成维护困难,也容易造成某一小bug导致整个服务不可用。

[[403371]]

本文转载自微信公众号「潜行前行」,作者cscw 。转载本文请联系潜行前行公众号。

前言

随着业务的拓展,功能越来越多。把所有的功能都放在同一个服务下,代码混合交错,造成维护困难,也容易造成某一小bug导致整个服务不可用。因此我们会按业务功能会拆分成多个不同的服务(微服务的形成),多个服务组成的系统,有个响亮的名字:分布式系统;而系统中的服务状态我们该怎么去管理,有什么相关的理论呢?

  • 分布式和集群
  • 数据库事务
  • 分布式事务
  • 分布式数据一致性
  • CAP 理论
  • BASE理论

分布式和集群

分布式是指通过网络连接的多个服务或组件,通过交换信息协作而形成的系统

集群是指同一种服务组件的多个实例形成的整体

这两个概念并不完全冲突,分布式系统也可以是一个集群。zookeeper集群也是一种分布式系统,它的服务之间会互相通信协作

集群不是分布式系统的情况,比如多个经过负载均衡的HTTP服务器,它们之间不会互相通信,如果不带上负载均衡的部分的话,则不能称作分布式系统

数据库事务

  • 事务是基于数据进行操作,需要保证事务的数据通常存储在数据库中,所以介绍到事务,就不得不介绍数据库事务的 ACID 特性
  • 原子性(Atomicity),整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节
  • 一致性(Consistency),在事务开始之前和事务结束以后,数据库数据的一致性约束没有被破坏
  • 隔离性(Isolation),隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
  • 持久性(Durability),事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

分布式事务

分布式系统一般由多个独立的子系统组成,多个子系统通过网络通信互相协作配合完成各个功能;这个协作过程需要保证各个系统的数据一致性,我们称这种跨系统的事务为分布式事务

上面的场景会存在多种情况;库存服务和订单服务全部成功。或者库存服务和订单服务部分成功,而传统的单机事务理论不再适用

分布式事务的难点

原子性:事务操作跨不同节点,当多个节点某一节点操作失败时,需要保证多节点操作的要么什么都不做,要么都做

一致性:当发生网络传输故障或者节点故障,节点间数据复制通道中断,在进行事务操作时需要保证数据一致性

隔离性:在分布式事务控制中,可能会出现提交不同步的现象,会出现“部分已经提交”的事务

分布式数据一致性

ACID并不适合分布式事务,而分布式事务的难点涉及的问题,最终影响是导致数据出现不一致,因此在分布式系统会着重关注保证系统的一致性。

CAP理论

  • 前面介绍到的分布式事务的难点涉及的问题,最终影响是导致数据出现不一致,下面对分布式系统的一致性问题进行理论分析,后面将基于这些理论进行分布式方案的介绍(可用性和一致性的冲突:CAP理论)
  • 一致性(Consistence): 所有节点访问最新相同的数据副本
  • 可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)
  • 分区容错性(Partition tolerance): 分布式系统出现网络分区的时候,仍然能够对外提供服务

当发生网络分区的时候,如果我们要继续服务,那么强一致性和可用性只能 2 选 1。也就是说当网络分区之后 P 是前提,决定了 P 之后才有 C 和 A 的选择。也就是说分区容错性(Partition tolerance)我们是必须要实现的

为啥无法同时保证 CA 呢?

若系统出现“分区”,系统中的某个节点在进行写操作。为了保证一致性C, 必须要禁止其他节点的读写操作,这就和 A 发生冲突了;如果为了保证A,其他节点的读写操作正常的话,那就无法保证数据一致性,和C冲突

CAP 实际应用案例

ZooKeeper保证的是CP。任何时刻对ZooKeeper的读请求都能得到一致性的结果,但是ZooKeeper不保证每次请求的可用性比如在Leader选举过程中或者半数以上的机器不可用的时候服务就是不可用的

Eureka保证的则是AP。Eureka在设计的时候就是优先保证A(可用性)。在 Eureka中不存在什么Leader节点,每个节点都是一样的、平等的。因此 Eureka 不会像 ZooKeeper 那样出现选举过程中或者半数以上的机器不可用的时候服务就是不可用的情况。Eureka 保证即使大部分节点挂掉也不会影响正常提供服务,只要有一个节点是可用的就行了。只不过这个节点上的数据可能并不是最新的

BASE理论

BASE是Basically Available(基本可用) 、Soft-state(软状态) 和 Eventually Consistent(最终一致性)。BASE理论是对CAP中一致性(C)和可用性(A)权衡的结果

最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态

基本可用

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性;那什么又是允许损失部分可用性呢?

响应时间上的损失: 正常情况下,处理用户请求需要0.5s返回结果,但是由于系统出现故障,处理用户请求的时间变为3s

系统功能上的损失:正常情况下,用户可以使用系统的全部功能,但是由于系统访问量突然剧增,系统的部分非核心功能无法使用

软状态

软状态指允许系统中的数据存在中间状态(CAP理论中的数据不一致),并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时

最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性

参考文章

CAP和BASE理论了解么?可以结合实际案例说下不?

分布式与集群的区别是什么?[1]

 

数据一致性问题[2]

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/296691.html<

(0)
管理的头像管理
上一篇2025-05-22 03:17
下一篇 2025-05-22 03:19

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注