07微服务的事务管理机制

这篇具有很好参考价值的文章主要介绍了07微服务的事务管理机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一句话导读

        在单体应用程序中,事务通常是在单个数据库或单个操作系统中管理的,而在微服务架构中,事务需要跨越多个服务和数据库,这就使得事务管理变得更加复杂和困难。

目录

一句话导读

一、微服务事务管理的定义和意义

二、微服务事务管理的策略

        1.使用Saga模式:

        2.两阶段提交(2PC):

        3.异步消息

        4.分布式事务协调器

        5.补偿机制

三、分布式事务CAP原则

        1.一致性(Consistency)

        2.可用性(Availability)

        3.分区容忍性(Partition Tolerance)

四、微服务事务管理的挑战

        1.原子性

        2.一致性

        3.隔离性

        4.持久性


一、微服务事务管理的定义和意义

  • 定义:微服务事务管理是指在微服务架构中,对跨越多个服务的事务进行管理和协调。一个事务通常包含一系列的服务调用,这些服务调用要么全部成功,要么全部失败。微服务事务管理的主要目标是确保跨多个服务的业务操作的一致性和可靠性。

07微服务的事务管理机制,微服务架构设计,微服务,架构,云原生,microservices,分布式

图(1)

        上图是一个经典的微服务事务管理示意图,当客户下单时,订单服务聚合层接收到下单请求,将操作拆分成不同请求分发到不同服务中,如在订单服务中创建订单,在支付服务中创建支付订单,在库存服务中扣减库存,这些操作要么都成功要么都失败,这就是微服务的事务管理的基本特性。

  • 意义:在一个分布式系统中,事务管理变得尤为重要。由于不同的服务可能由不同的团队开发和管理,因此必须有一种机制来确保跨多个服务操作的一致性和完整性。微服务事务管理提供了这样的机制,使得开发者能够更加专注于业务逻辑的实现,而不用担心分布式事务的问题。

二、微服务事务管理的策略

        目前,关于微服务事务管理的研究已经取得了许多成果。例如,二阶段提交协议(2PC)、补偿事务(Compensating Transactions)、Saga模式等都是解决分布式事务问题的常用方法。

        1.使用Saga模式:

        Saga是一种将大型事务拆分为一系列较小事务的模式。每个微服务都有自己的Saga,处理自己的事务,如果某个步骤失败,可以触发回滚或者补偿操作。

        Saga 模式的核心思想是,将长时间跨多个服务的大型事务拆分为多个小的本地事务,这些本地事务可以在系统中不同的节点上并行执行。每个本地事务都有一个对应的补偿操作,用于撤销该事务的影响。这种设计使得如果某个事务失败,系统可以通过执行补偿操作来回滚之前的操作,以保持数据的一致性。

07微服务的事务管理机制,微服务架构设计,微服务,架构,云原生,microservices,分布式

图(2)

相对应图(1),图(2)多了一个失败回滚接口

        2.两阶段提交(2PC):

        2PC是一种协调多个事务参与者以确保所有参与者都同意提交或回滚的协议。尽管2PC具有一定的复杂性和性能开销,但在某些情况下仍然是一个有效的解决方案。"2" 表示协议有两个阶段,而 "PC" 表示这两个阶段的操作

07微服务的事务管理机制,微服务架构设计,微服务,架构,云原生,microservices,分布式

图(3)

  • Coordinator(协调者):负责协调整个分布式事务的执行。协调者向所有参与者发送请求,以确定是否可以提交事务。
  • Participant(参与者):分布式系统中的各个节点,参与者执行实际的事务操作。参与者接收到协调者的请求,根据自身的状态判断是否可以提交事务。
  • CanCommit(阶段1:准备阶段Prepare):协调者向所有参与者发送请求,询问是否可以提交事务。参与者根据自身状态,判断是否可以执行事务。
  • DoCommit(阶段2:提交阶段Commit):如果所有参与者都同意提交事务,协调者发送提交请求,参与者正式提交事务。

        3.异步消息

        使用消息队列来实现异步通信,将事务操作转化为消息,由接收方处理。这种方式可以减少分布式事务的复杂性。

        4.分布式事务协调器

        一些分布式事务协调器,如TCC(Try-Confirm-Cancel)和XA协议,可以用来处理分布式事务的协调和管理。

        5.补偿机制

        在某些情况下,事务失败后可以通过执行逆向操作来进行补偿,确保数据的一致性

三、分布式事务CAP原则

        CAP定理指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)这三个属性无法同时完全满足,最多只能同时满足其中的两个。

07微服务的事务管理机制,微服务架构设计,微服务,架构,云原生,microservices,分布式

图(4) 

        1.一致性(Consistency)

        所有节点在同一时间具有相同的数据副本,即每个读操作都能够读到最近一次的写操作。

        2.可用性(Availability)

        每个非故障节点在合理的时间内都能够响应请求,即系统随时可用并能够处理请求。

        3.分区容忍性(Partition Tolerance)

        即使网络分区(节点之间的通信故障)发生,系统仍然能够继续运行,保持一致性和可用性。

四、微服务事务管理的挑战

        我们知道,在单体应用中事务的管理是基于关系型数据库的事务机制实现的,因为单体应用只使用了一个数据库,每个操作都是在该数据库中进行。但是微服务却不一样,每个服务有自己的数据库,跨服务、跨数据库的事务管理就非常复杂了。单体应用的事务特性ACID对于微服务来说就是很大的挑战

        1.原子性

事务被视为一个不可分割的最小单位,多个操作组合形成一个事务,这些操作要么全部执行,要么全部不执行。

        2.一致性

在分布式环境中,要确保多个微服务的操作要么全部成功,要么全部回滚,以维护数据的一致性。实现原子性和一致性需要精心的设计和实现。

        3.隔离性

分布式事务需要处理并发操作,确保不同事务之间的操作不会相互干扰。保持隔离性是必要的,但也可能影响性能。

        4.持久性

在微服务架构中,不同微服务的数据可能存储在不同的数据库中。确保分布式事务在各种故障情况下仍能保持持久性是一个挑战。

除了以上ACID挑战外还有如下:文章来源地址https://www.toymoban.com/news/detail-664857.html

  • 超时和重试:由于网络延迟和故障,分布式事务可能会失败。需要实现超时和重试机制,以确保事务能够在一定时间内完成。
  • 分布式锁:在分布式系统中,锁是一种常用的同步机制。然而,如何实现一个可靠的分布式锁是一个挑战。
  • 性能问题:由于微服务事务涉及到多个服务的交互,因此可能会产生性能问题。如何优化微服务事务的性能也是一个重要的挑战
  • 事务的回滚:当一个事务涉及到多个服务时,如果其中一个服务发生故障,如何回滚其他已经成功执行的服务也是一个挑战。
  • 通信失败:由于微服务之间采用分布式通信机制,因此可能会发生通信失败的情况,导致事务无法正常进行。

到了这里,关于07微服务的事务管理机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSQL 的事务管理和并发控制机制解析

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(41)
  • MyBatis第十一讲:MyBatis事务管理机制详解

    本文是MyBatis第十一讲,主要介绍MyBatis事务管理相关的使用和机制。

    2024年02月16日
    浏览(41)
  • Spring的两种事务管理机制,面试这样答当场入职!

    前言: 博主在最近的几次面试中,大中小厂都问到了Spring的事务相关问题,这块知识确实是面试中的重点内容,因此结合所看的书籍,在这篇文章中总结下。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读,感谢大佬的关注。 如果文章有什么需要改进的地方欢迎大

    2024年02月17日
    浏览(38)
  • 微服务事务管理(Dubbo)

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 可在此查看本示例完整代码地址:dubbo-samples-seata 用户采购商品业务,整个业务包含3个微服务

    2024年02月10日
    浏览(37)
  • 设计事务所项目管理指南

    在数字化的浪潮下,各行各业都面临着升级转型的问题。对设计团队而言,传统的管理方式已经无法满足日益前进的团队需求。 1,项目过程中信息流通慢,成员工作进度无法及时同步; 2,员工分工不透明,不合理,导致团队内部不和谐; 3,管理者无法掌握项目的最新进展

    2024年02月06日
    浏览(45)
  • MySQL:事务、索引、用户管理、备份、数据库设计(三大范式)

    事务 (transaction):要么都成功,要么都失败。 核心 :将一组 SQL 放在一个批次中去执行。 原则 ACID :原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性 :一个事务中的所有步骤 要么都 成功, 要么都 失败,不能只成功一个步骤。 一致性 :包括

    2023年04月26日
    浏览(78)
  • Spring 事务管理方案和事务管理器及事务控制的API

    目录 一、事务管理方案 1. 修改业务层代码 2. 测试 二、事务管理器 1. 简介 2. 在配置文件中引入约束 3. 进行事务配置 三、事务控制的API 1. PlatformTransactionManager接口 2. TransactionDefinition接口 3. TransactionStatus接口 往期专栏文章相关导读  1. Maven系列专栏文章 2. Mybatis系列专栏文

    2024年02月08日
    浏览(41)
  • 【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别

    「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 事务的概念 MySQL事务是指一系列的数据库操作(一组 DML 语句),这些操作要么全部成功执行,要么全部失败回滚。事务的目的是确保数据库的一致性和完整性 事务就是要

    2024年02月09日
    浏览(35)
  • Spring使用@Transactional 管理事务,Java事务详解。

    B站视频:https://www.bilibili.com/video/BV1eV411u7cg 技术文档:https://d9bp4nr5ye.feishu.cn/wiki/HX50wdHFyiFoLrkfEAAcTBdinvh 简单来说事务就是一组对数据库的操作 要么都成功,要么都失败。 事务要保证可靠性,必须具备四个特性:ACID。 A:原子性:事务是一个原子操作单元,要么完全执行,要么

    2024年02月11日
    浏览(29)
  • Web 事务管理

    Web在执行的过程中需要保证一致性,从而需要引入事务来对SQL事件进行事务的管理。具体而言可以参考这篇博客MySQL事务(transaction)。 具体而言,我们获得一个这样的需求,删除一个部门,在删除部门的过程中需要删除部门下的所有员工 正常而言这段代码是可以正常执行的,

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包