框架篇:分布式理论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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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