金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)

简介: 金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)

背景介绍

最近大家都相比遇到了就业瓶颈了,很多公司要不就是不招人了,要不就是把门槛抬的很高,所以针对于一些分布式角度而言的技术知识点,更是必备条件以及重中之重了。那么今天笔者就针对于分布式协议以及一些算法原理进行详细的分析和原理介绍。

分布式体系

分布式体系管理的主要内容是面对于分布式节点进行执行事务的操作流程。



整个分布式体系主要包含了几个要素:

  • 分布式节点
  • 本地操作
  • 分布式组合操作

如何可以将分布式节点的每个本地操作达成整齐划一,并且实现统一化的数据状态管理,这将是分布式协议 的重点管理目标和方向。

执行失败状态将会不一致

但是如果一旦出现了其中某一个节点的本地执行出现错误,如下图所示。



就会出现很严重的问题,导致分布式节点的执行不完整,最终造成了数据状态不一致的问题。

分布式协议(2PC+3PC)

每一个分布式节点明确的知道自己执行的事务结果是成功还是失败,但无法知道其他节点的执行结果, 因此为了保持事务的ACI特性, 需要引入一个“协调者”(Coordinator)来调度所有的分布式节点称为“参与者”(Participant) 。基于这种思想衍生出了二阶提交与三阶提交两种协议。

二阶提交(Two-Phase Commit,2PC)

概念介绍

使基于分布式架构下的所有节点在进行事务处理过程中保持原子性与一致性而设计的一种算法。

执行流程

  • 阶段一:提交事务请求
  • 阶段二:执行事务提交


阶段一:提交事务请求

  1. 事务询问:协调者向所有的参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各个参与者响应。


  1. 执行事务:各参与者节点执行事务操作, 并将undo与redo信息写入事务日志中。

  1. 各参与者向协调者反馈事务询问的响应如果参与者成功执行了事务, 就返回YES,如果不成功,就返回NO。

该阶段相当于各个参与者对协调者发送的事务内容进行是否可以执行的投票。

阶段二:执行事务提交

根据参与者的响应,正常情况下有两种情况:

  • 成功:YES
  • 失败:NO
执行事务提交(响应都为YES)
  1. 发送提交请求
  2. 事务提交,协调者向所有参与者节点发出Commit请求,参与者接收到Commit请求后,会正式执行事务提交操作,并在完成后释放事务,执行期间占用的资源
  3. 反馈事务提交结果,参与者完成事务提交以后,向协调者发送Ack消息
  4. 完成事务,收到所有参与者节点的Ack消息后,完成事务


中断事务(响应有NO,或有超时)
  1. 发送回滚请求,协调者向所有参与者节点发出Rollback请求
  2. 事务回滚,参与者接收到Rollback请求后,会根据undo信息执行执行事务回滚操作,并在完成后释放事务执行期间占用的资源。
  3. 反馈事务回滚结果,参与者完成事务回滚以后,向协调者发送Ack消息。
  4. 中断事务,收到所有参与者节点的Ack消息后,完成事务中断


优点

  • 原理简单
  • 实现方便

缺点

同步阻塞(性能较差)

在二段提交过程中,所有参与该事务操作的逻辑都处于阻塞状态,也就是各个参与者在等待其他参与者响应的过程中都无法执行其他操作。

单点问题(容易造成崩溃)

协调者的角色在整个二段提交协议中起到了非常重要的作用,如果协调者出现问题,参与者将锁定事务资源无法继续完成事务操作。

数据不一致(在二阶段的问题)

在阶段二过程中, 有可能因为网络等原因出现只有部分参与者收到了Commit请求。而出现各个节点数据不一致的问题。

从太过保守

没有容错机制,任何一个节点的失败都会导致整个事务的中断。


三阶提交(Three-Phase Commit,3PC)

概述

2PC的改进版本,将2PC二阶段提交的过程一分为二, 形成了Can Commit, Pre Commit, Do Commit三个阶段组成的事务协议。


Can Commit阶段

1. 事务询问

事务协调者向所有的分布式节点发送一个包含事务内容的can Commit请求, 询问是否可以执行事务提交操作,并开始等待各个参与者响应。

2.各参与者向协调者反馈事务询问的响应

如果参与者认为可以顺利执行事务, 就反馈YES, 并进入预备状态, 否则反馈NO


该阶段相当于各个参与者对协调者发送的事务内容进行是否可以执行的投票

Pre Commit阶段

根据参与者的响应,正常情况下有两种情况:

1. 执行事务提交(响应都为YES)

  1. 发送预提交请求,协调者向所有参与者节点发出pre Commit请求, 并进入prepared阶段
  2. 预事务提交,参与者接收到Pre Commit请求后, 会执行事务, 并将undo与redo信息写入事务日志中
  3. 反馈事务提交结果,参与者完成事务提交以后, 向协调者发送Ack消息, 等待最终的指令:提交(Commit)或终止(abort)


2. 中断事务(响应存在NO,或有超时)

  1. 发送回滚,请求协调者向所有参与者节点发出abort请求
  2. 中断事务,收到所有参与者节点的Ack消息后, 或者等待协调者响应超时, 都会中断事务

Do Commit阶段

根据参与者的响应,正常情况下有两种情况:

执行提交(响应都为YES)

  1. 发送提交请求,协调者向所有参与者节点发出do Commit请求
  2. 事务提交,参与者接收到do Commit请求后, 会正式执行事务, 并在完成后释放事务执行期间占用的资源
  3. 反馈事务提交结果,参与者完成事务提交以后, 向协调者发送Ack消息
  4. 完成事务,收到所有参与者节点的Ack消息后, 完成事务


中断事务(二阶段提交后,参与者响应有NO, 或有超时)

  1. 发送回滚请求,协调者向所有参与者节点发出abort请求
  2. 事务回滚,参与者接收到abort请求后, 会根据undo信息执行事务回滚操作, 并在完成后释放事务执行期间占用的资源
  3. 反馈事务回滚结果,参与者完成事务回滚以后, 向协调者发送Ack消息
  4. 中断事务,收到所有参与者节点的Ack消息后, 或者等待协调者响应超时, 都会中断事务


优点

降低了二阶段提交的阻塞范围。

缺点

  • 参与者收到pre Commit消息后, 一旦无法与协调者通信, 将在超时后提交事务, 在这种情况下,可能会出现数据的不一致性
  • 协调者出现故障,协调者与参与者之间的网络出现故障(旦参与者接收不到协调者的请求超时以后,都会进行事务提交)

敬请期待: 【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(下篇)

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
15天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
66 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
1天前
|
人工智能 算法 搜索推荐
算法备案全流程攻略:保姆级教程
在AI热潮下,算法成为互联网服务的核心驱动力,但也带来了大数据杀熟、算法歧视等问题。为规范行业发展,算法备案制度应运而生。该制度涵盖网站、APP等多种产品形式,要求企业在2个月内完成备案,依据《互联网信息服务算法推荐管理规定》等法规。未备案企业可能面临无法上线、罚款甚至刑罚的后果。备案流程包括注册、主体备案、信息填报及审核,确保算法合规运营。通过悬挂备案号、标识AI生成内容和定期自查,企业需持续维护算法安全与合规。
|
24天前
|
算法 Java 数据库
理解CAS算法原理
CAS(Compare and Swap,比较并交换)是一种无锁算法,用于实现多线程环境下的原子操作。它通过比较内存中的值与预期值是否相同来决定是否进行更新。JDK 5引入了基于CAS的乐观锁机制,替代了传统的synchronized独占锁,提升了并发性能。然而,CAS存在ABA问题、循环时间长开销大和只能保证单个共享变量原子性等缺点。为解决这些问题,可以使用版本号机制、合并多个变量或引入pause指令优化CPU执行效率。CAS广泛应用于JDK的原子类中,如AtomicInteger.incrementAndGet(),利用底层Unsafe库实现高效的无锁自增操作。
理解CAS算法原理
|
1月前
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
52 1
|
1月前
|
存储 人工智能 缓存
【AI系统】布局转换原理与算法
数据布局转换技术通过优化内存中数据的排布,提升程序执行效率,特别是对于缓存性能的影响显著。本文介绍了数据在内存中的排布方式,包括内存对齐、大小端存储等概念,并详细探讨了张量数据在内存中的排布,如行优先与列优先排布,以及在深度学习中常见的NCHW与NHWC两种数据布局方式。这些布局方式的选择直接影响到程序的性能,尤其是在GPU和CPU上的表现。此外,还讨论了连续与非连续张量的概念及其对性能的影响。
64 3
|
2月前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
2月前
|
存储 算法 网络协议
OSPF的SPF算法介绍:原理、实现与应用
OSPF的SPF算法介绍:原理、实现与应用
101 3
|
2月前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
64 3

热门文章

最新文章