老板,明年我用Seata搞定分布式事务管理的规范化建设 | 中篇

news2024/11/19 4:46:06

辞旧迎新,22年要结束了,明年做什么想好了嘛?要不要用 Seata 搞定公司分布式事务管理的规范化建设?

欢迎关注微信公众号「架构染色」交流和学习

一、背景

在上一篇《明年用Seata搞定分布式事务管理的规范化建设 | 上篇》 中介绍了微服务架构演进,必然带来数据不一致的问题,在一些特性场景下数据的一致性要求会很高,而大多数情况下对一致性的要求又不高,这些差异也导致了对分布式事务解决方案呈现两种相对的顾念,一种认为可以置之不理,一种则认为必须解决,在没有标准方案的情况下,很容易出现各显神通,做出的东西即不通用也不健壮。

这两种情况从标准架构规范的大局来看都非合理状态,实际上从公司技术架构管理的角度看,需要的是一套规范的、通用的、可靠的分布式事务解决方案,能够帮助开发者在分布式的环境下,既能保证业务数据的一致性,又不需要投入太多的资源用于业务数据一致性的开发维护,还能加快迭代速度保障项目交付

Seata 所兼备的 TC 高可用、 TCC 模式和 AT 模式特别符合一套规范的、通用的、可靠的分布式事务解决方案的诉求,能将分布式事务问题从业务中尽量剥离出来(AT模式剥离的比较彻底),作为一个独立的技术切面由专人管理运维(独立的服务端和模块化的客户端),提供简单、易用、高效、稳定的分布式事务解决方案,体现出以下价值:

  1. 架构复杂度降低:分布式事务这个切面的技术问题,全部由 Seata 所提供的服务能力来解决。
  2. 设计和开发成本减轻,加快交付和迭代速度:业务逻辑的设计和开发中,若采用 AT 模式,则无需考虑是否涉及分布式事务,是否需要做额外的准备,专注 SQL 编写实现业务逻辑即可,对业务 0 侵入  。
  3. 运营成本降低,保证业务数据准确度,以及出错时的自动回滚和及时通知

本篇我们探讨一下项目的推进思路,以及AT模式的原理

二、如何推进

之前好朋友在聚餐时提到说自己在尝试来落地分布式事务,但自己也遇到一些问难,之后我们经常沟通,也探索出了一些可行方案,整理出来给大家做个参考。

当下的大环境并不好,公司调整为业务导向的方针,因此基础技术领域的部门需重新审视自己的角色、调整自己职责,不能以技术至上的心态一味追求高精尖,而他作为一向偏爱技术的个体也需调整思路,全力转向为开发者服务。在老板业务导向的方针下,新技术的引入、推进就不能再纯粹以技术视角考量,要结合业务,评估是否有痛点,是否有需求,需求是否强烈。

PMO 与多个业务部门组织需求和使用场景的沟通后,他们得到了比较一致的反馈,较多同事有听到过 Seata 在其他公司的实践分享,但此技术的可用性、稳定性方面在本公司尚无案例借鉴,无法给与充足的信任,即使有需求也不敢贸然明确提出使用 Seata 就能解决问题;基础设施需要先行,给出兼容性、性能、稳定性等方面的一些可靠结论。新能力需要业务方提需求,业务方要基础设施先提供能力保障,这个“死锁现象”按照工程化的思路重新梳理,跟 PMO 商定徐图缓进的应对之策:

  1. 加强对 Seata 技术层的掌控力,针对公司的技术栈和数据库中间件进行全面的功能性验证,明确其可靠能力的合集;在此过程中梳理原理、解决问题并将验证结论等进行整理
  2. 通过每周宣导的方式,进行同步、培训和引导,互动的过程中,搜集需求和意向用户以及其需求场景
  3. 理清 Seata 的安全保障机制,以最小测试单元的原则来保障试点应用的接入和验证。

TCC 模式对代码的侵入性较高,需要做大量的改造,这对当下 Seata 的推进并不友好,而 AT 模式能适配的应用场景很多,只需要少量代码的微调即可,并且通过 AT 模式即也能证验证大部分 Seata 的能力。基于以上考虑,他们将尝试的方向先聚焦到 AT 模式上,有了 AT 模式的积累沉淀后,TCC 模式的应用将会水到渠成。

三、介绍 AT 模式业务无侵入的的原理

1)一阶段:

在一阶段,Seata 会拦截“业务 SQL”,首先解析 SQL 语义,找到“业务 SQL”要更新的业务数据,在业务数据被更新前,将其读出保存成“before image”,然后执行“业务 SQL”更新业务数据,在业务数据更新之后,再将其读出保存成“after image”,最后生成事务锁。以上操作全部在一个数据库事务内完成,这样保证了一阶段操作的原子性。

2)二阶段提交:

二阶段如果是提交的话,因为“业务 SQL”在一阶段已经提交至数据库, 所以 Seata 框架只需将一阶段的事务锁释放,完成对应”before | after image“数据的清理即可。

3)二阶段回滚:

二阶段如果是回滚的话,Seata 就需要回滚一阶段已经执行的“业务 SQL”,还原业务数据。回滚方式便是用“before image”还原业务数据;但在还原前要首先要校验脏写,对比“数据库当前业务数据”和 “after image”,如果两份数据完全一致就说明没有脏写,可以还原业务数据,如果不一致就说明有脏写,出现脏写就需要转人工处理。

AT 模式的一阶段、二阶段提交和回滚均由 Seata 框架自动生成,用户只需编写“业务 SQL”,便能轻松接入分布式事务,AT 模式是一种对业务无任何侵入的分布式事务解决方案。

四、总结与预告

本篇介绍了好朋友公司在业务导向的主旨下,推进 Seata 时所遇到的一些困难,以及应对策略,给读者朋友做个参考借鉴。之后介绍了 AT 模式业务无侵入的的原理,从而让读者朋友能直观的感受到此模式能适配的应用场景很多,只需要少量代码的微调即可,读者朋友可将尝试的方向先聚焦到 AT 模式上,有了 AT 模式的积累沉淀后,TCC 模式的落地将会水到渠成。

等好朋友结合自家公司的技术栈,做完兼容性测试,以及将遇到的问题解决后,再将有价值的信息同步给大家,帮助大家少踩坑。每家的技术栈情况会有微小差异,兼容性测试真的很重要,没问题就很开心,有问题就不能带病上线。

五、最后说一句

我是石页兄,如果这篇文章对您有帮助,或者有所启发的话,欢迎关注笔者的微信公众号【 架构染色 】进行交流和学习。您的支持是我坚持写作最大的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/106984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低成本、高效率!华为云桌面助力企业数字化转型

在云计算飞速发展的今天,传统办公设备体积大、能耗高、维护难、更新换代快等问题日益凸显,而基于云计算平台的虚拟办公系统逐渐被业界接受并得到广泛应用。其中,华为云桌面Workspace既满足了企业移动办公、远程办公、安全办公等要求&#xff…

恒业微晶冲刺创业板上市:计划募资8亿元,戴联平为实控人

12月20日,上海恒业微晶材料科技股份有限公司(下称“恒业微晶”)在深圳证券交易所创业板递交招股书。本次冲刺创业板上市,恒业微晶计划募资8亿元,将用于恒业新型分子筛项目。 据天眼查信息显示,恒业微晶成立…

Servlet中Cookie和Session技术

一、状态管理1.1 现有问题HTTP协议是无状态的,不能保存每次提交的信息如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系对于那些需要多次提交数据才能完成的Web操作,比如登录来说,就有问题了。1.2 概念将浏览器与…

牛津大学最新 | LUMix:Mixup改进版,几行代码轻松涨点!

点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【目标检测】技术交流群后台回复【LUMix】获取论文!!!摘要当使用噪声样本和正则化技术进行训练时,现代深度网络可以更…

云端数据“上榜”了!

背景介绍随着全球特别是北美地区VNF网络应用渐渐地往云上迁移,云环境中更高的性能需求变得越来越迫切。作为一流数据处理中心部门,随着大势所趋,不仅仅专研于裸机的性能数据,也开始关注Intel平台在不同云环境中的性能表现。在DPDK…

外汇天眼:日本央行突然上调收益率目标上限,日元10分钟内涨超2%

12 月 20 日,日本央行公布利率决议,并在货币政策会议上宣布堪称“黑天鹅事件”的重大政策转变。日本央行意外地调整了收益率曲线控制计划,宣布将收益率目标上限从 0.25% 上调至 0.5% 左右,同时又将 1 至 3 月日本国债购买规模提高…

Java当中多态的理解

1. 什么是多态 同一操作,作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。 对应到 Java 里就是针对同一个类型的对象,执行同一个方法,会表现出不同的行为。 简单点说: 就是用基类…

<Linux进程信号>——《Linux》

本节重点: 1. 掌握Linux信号的基本概念 2. 掌握信号产生的一般方式 3. 理解信号递达和阻塞的概念,原理。 4. 掌握信号捕捉的一般方式。 5. 重新了解可重入函数的概念。 6. 了解竞态条件的情景和处理方式 7. 了解SIGCHLD信号, 重新编写信号处理…

面试官:Docker 有几种网络模式?5 年工作经验都表示答不上来。。

docker容器网络 Docker在安装后自动提供3种网络,可以使用docker network ls命令查看 [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cd97bb997b84 bridge bridge l…

第1章 概述

第一章 概述 考试范围: 1.1-1.10 考试内容: 章节后的Review Terms(名词基本都在课文中) 考试题型: 综合题 Review Terms Database-management system (DBMS) :A collection of interrelated data and a …

信息检索 Information Retrieval

信息检索主要是查找与用户查询相关的文档。 给定:大型静态文档集合 和信息需求(基于关键字的查询) 任务:查找所有且仅与查询相关的文档 典型的 IR 系统: • 搜索一组摘要 • 搜索报纸文章 • 图书馆搜索 • 搜索网络 …

毕业后,我已经离开机械行业转行码农一年多了......

背景 鄙人本科毕业两年有余,机械工程专业,我已经离开机械行业转行码农一年多了。 如果有正在学习的,退学还是千万不要,不过能换专业就换专业,不能换就往机电一体化靠,加上自学编程,以后做嵌入…

计算机毕设Python+Vue野生动物保护资讯管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

STM32的ST-link调试下载

调试原理 STM32F-10X使用M3内核,该内核支持复杂的同i傲视操作,硬件调试模块允许在取指令(指令单步运行)或访问数据(数据断电时)使得内核停止。在内核停止时,内核状态都可被查询,完成…

范登堡(van den berg)CPT使用记录

前段时间的CPT外业所使用的设备是范登堡的井下式或者说交互式的静力触探仪(CPT),型号是WISON-APB,下面是官网提供的照片。根据官网的介绍,它的探测工具分为三种,分别50KN(3m)、100KN…

KVM部署操作-尚文网络xUP楠哥

~~全文共1250字,阅读需约5分钟。 进Q群11372462,领取专属报名福利! # 安装KVM先决条件 KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。 基于 Intel 处理器的…

Qt之使用CQU库快速开发统一风格界面

在使用Qt开发时,肯定是想让开发的项目界面统一风格;不希望每个界面都要程序员用代码去修饰美化以及进行事件处理等等,这样非常繁琐,容易出错而且没有格调;所以我就开发一个动态链接库,封装统一的风格界面、…

尚医通-前端Vue学习(九)

(1)vscode的安装及使用 (2)前端知识-ES6语法知识点 (3)Vue-入门 (4) Vue的生命周期 (5)Vue-Axios的使用 (6)ElemmentUI介绍 &…

Java项目:SpringBoot课程在线学习系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 采用SpringBootSpringMybatisThyeleaf实现的在线学习系统,一共2个角色:管理员与学生。 管理员角色功能: 登录…

Unreal Engine中的Actor:理解、生成与消亡

目录 谈谈Actor 生成(实例化)Acotr StaticClass/UClass:类模板/类的快照 Actor的生命周期 Actor的消亡 Destroy:标记删除 SetLifeSpan:设置存活时间 Destroyed:消亡Actor的通知 EndPlay&#xff1…