SlideShare a Scribd company logo
1 of 28
1
Jakarta EE 应用服务器的事务处理
马震 金蝶天燕云
September 27, 2023
@mazhen
mazhen.tech
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
2
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 事务的基本概念
● 事务处理系统回顾
● JTA & JTS & Jakarta Transactions
● 云原生时代的分布式事务处理
Outline
3
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● Transaction 是将多个读取和写入操作”打包”在一起,作为一个完整的执行单元
● 要么整个 Transaction 成功(提交),要么失败(回滚),永远不能只是部分完成
● Transaction 是一层抽象,简化了应用程序模型
○ 应用可以忽略部分失败和并发问题
○ 系统的完整性始终处于一致性状态
Transaction
4
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● ACID 是1983年由 Theo Härder 和 Andreas Reuter 在论文《 Principles of Transaction-Oriented Database
Recovery》中首次提出。
● 原子性 Atomicity
○ 将多个操作组合在一起,如果遇到故障那么整体将被中止,并撤消之前的所有操作
● 一致性 Consistency
○ 会保证事务前后,数据的状态都是“好”的
● 隔离性 Isolation
○ 多个事务并发执行时,一个事务的执行不应影响其他事务的执行,每个事务都假装他
们是唯一正在运行的事务
● 持久性 Durability
○ 一旦事务成功提交,它所写入的任何数据都不会丢失,即使出现硬件故障
ACID Properties
5
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 分布式系统可能遇到各种问题
○ 数据包丢失,乱序,重复和延迟
○ 时钟不同步
○ 节点可能在任意时刻暂停或crash
○ 节点故意发送虚假消息,试图欺骗其他节点
● Distributed Transaction的实现更加困难
○ 没有全局变量,没有共享内存,不能在节点间共享状态
○ 唯一可以做的就是从一个节点向另一个节点发送消息
Distributed Transaction
6
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● JimGray 在“Notes on Database Operating Systems”(1979)中描述了两阶段提交(2PC)
● 2PC 出现了新的组件: coordinator (也称为transaction manager )
Two-Phase Commit (2PC)
7
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 如果 coordinator 在收到参与者的Yes后挂掉,此时参与者只能等待,不能再单方面中止
● Coordinator 实际的决定是commit,它在只发送了commit请求给DB2,还没发commit给DB1时挂掉。
DB1不知道该提交还是终止,即使设置了超时也没用
● 此时协议被blocked,只能等待coordinator恢复
Two-Phase Commit (2PC) 的局限性
8
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 问题本质
○ 在phase 2阶段, coordinator向所有参与者发送commit/abort前,这时只有它知道当前事务
的结果
● 如何恢复coordinator
○ Coordinator 需要在持久性存储中记录协议状态
■ 强一致性的分布式存储(基于Paxos/raft实现)
○ 由其他节点手工/自动take over
如何解决
9
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 事务的基本概念
● 事务处理系统回顾
● JTA & JTS & Jakarta Transactions
● 云原生时代的分布式事务处理
Outline
10
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 现代事务处理技术出现在20世纪60年代的大型机主机(mainframe)环境
● 最早的事务处理系统是由IBM开发的SABRE航空公司预订系统
○ IBM意识到这种技术可以应用到其他行业,由此产生了CICS(Customer Information Control
System)
○ CICS最初是完全用汇编语言编写,并没有使用现代意义上的数据库,而是依赖于扁平
文件和其他低级数据结构
事务处理系统回顾——CICS
11
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 1970年 Edgar F. Codd 发表了一篇名为《A Relational Model of Data for Large Shared Data Banks》的论
文,首次提出了关系模型的概念,这一模型为后来的关系数据库管理系统(RDBMS)奠定了
基础。
● IBM 的 System R 项目是一个关键的里程碑
○ 它是 SQL 的第一个实现
○ 事务处理技术被引入到关系数据库领域
事务处理系统回顾——关系数据库
12
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 在分布式环境中实现事务处理面临着许多挑战,传统的单机事务处理系统无法满足需求
● 为了管理这些分布式事务,提供更好的并发控制和容错能力,事务处理监视器(Transaction
Processing Monitor 或 TP Monitor)被引入。
○ TP Monitor 为应用程序提供了一个完整的运行时,允许应用以安全和事务性的方式访问
后端系统(包括数据库)。
○ AT&T贝尔实验室最初于1984年开发了Tuxedo系统,后来成为BEA Systems的主要交易产
品
○ Tuxedo遵循X/Open DTP标准
事务处理系统回顾——Tuxedo
13
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● CORBA Object Transaction Service (OTS) 是一个定义在 CORBA(Common Object Request Broker
Architecture) 规范中的分布式事务服务。
○ OTS 将分布式事务处理模型(DTP)扩展到了对象领域,它提供了一种在分布式对象系
统中进行事务处理的方法。
● Java EE 应用服务器是在 X/Open DTP 模型和 CORBA OTS 的基础上发展出来的事务处理监视器,
TP Monitor 开始融入 Java EE应用服务器。
● Java EE 应用服务器中的许多功能都源于TP Monitor
○ TP Monitor 本质上是一个具有事务感知功能的应用服务器。
事务处理系统回顾——应用服务器
14
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 事务的基本概念
● 事务处理系统回顾
● JTA & JTS & Jakarta Transactions
● 云原生时代的分布式事务处理
Outline
15
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● X/Open 是一家成立于1984年的非营利性质的技术联盟,其目标是制定开放系统标准。1996 年,
X/Open 与 Open Software Foundation合并,组成 The Open Group。
● X/Open 在1991年开发了一个分布式事务处理(DTP)模型
● X/Open DTP 模型由事务管理器(TM)、资源管理器(RM)、通信资源管理器(CRM)和应用
程序(AP)组成。X/Open DTP 标准规定了这些组件功能,以及组件之间的标准接口。
X/Open DTP
16
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
• 事务管理器:提供识别,监视,
完成或恢复全局顶级事务所需的
服务和管理功能。
● 通信资源管理器:CRM为通信系
统提供API,该API可用于分布式
事务系统
● 资源管理器:RM代表事务参与
者,包括数据库,消息队列,文
件系统等
X/Open DTP
17
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 在1999年,Sun Microsystems将Java Transaction API(JTA)定义为Open Group规范到Java的映射。
随着JTA的引入,Java平台获得了基于标准的分布式事务支持。
● JTA是面向对象的,与严格的过程式TX和XA规范不同。
● JTA最初被认为是在现有事务处理系统(例如IBM的CICS产品)之上的API层。
● 随着JAVA EE应用服务器的成熟,使用在越来越多的任务关键型应用中。
JTA
18
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 事务管理接口事务管理接口
● 应用程序事务划分接口
● Open Group XA接口的直接映射
JTA的三类接口
19
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● CORBA Object Transaction Service (OTS) 将分布式事务处理模型(DTP)扩展到了对象领域,,
它提供了一种在分布式对象系统中进行事务处理的方法。
● Java Transaction Service (JTS) 是 OTS 的 Java 映射, JTA 推荐使用 JTS 作为其底层事务系统的实
现。
● Java EE应用服务器间的事务互操作性是通过底层使用 JTS 实现获得的。
Java Transaction Service (JTS)
20
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● Java Transaction Service(JTS)规范是 OTS 规范的
Java语言映射
● JTS 使用 CORBA OTS 接口来实现互操作性和可移
植性,这些接口为利用 IIOP 在 JTS 之间生成和
传播事务上下文的实现定义了标准机制。
● JTA 是暴露给用户和应用服务器使用的接口,应
用服务器内部可以使用 JTS 作为其底层事务系统
的实现,应用服务器间的事务互操作性是通过
底层使用 JTS 实现获得的。
Java Transaction Service (JTS)
21
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● Jakarta Transactions 1.3
○ Jakarta EE 8的第一个版本
○ Java Transaction API 1.3
● Jakarta Transactions 2.0
○ 包含在 Jakarta EE 9 中发布
○ Moved to the jakarta.* namespace
Jakarta Transactions
22
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 事务的基本概念
● 事务处理系统回顾
● JTA & JTS & Jakarta Transactions
● 云原生时代的分布式事务处理
Outline
23
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● CORBA
● EJB
● SOAP
● JAX-PRC + JAX-WS
● REST
● Dubbo
● Spring Cloud
● Service Mesh
微服务的演进
24
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 所有的模块部署在一个应
用服务器上,业务数据都
保存在单个数据库中,这
种场景本地事务就可以满
足需求
单体应用
25
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 如果数据库按照业务模块
进行水平拆分,完成一个
业务请求会涉及到跨库的
资源访问和更新,这时候
就需要使用应用服务器的
JTA进行两阶段提交,保证
跨库操作的事务完整性。
数据库水平拆分
26
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● 应用按照业务模块进一步拆分,每一
个模块都作为EJB,部署在独立的应用
服务器中。
● 完成一个业务请求会跨越多个应用服
务器节点和资源
● 当访问入口EJB时JTA会自动开启全局
事务,事务上下文随着EJB的远程调用
在应用服务器之间传播,让被调用的
EJB也加入到全局事务中。
微服务化
27
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
● JTA/XA支持数据的实时一致性,对业务开发更加
友好
● 客户对原有的系统进行微服务改造时,如果把
业务模型假定成数据最终一致性,就不得不做
出很大的妥协和变更。特别是金融客户对一致
性的要求比较高
● 可以抛弃沉重的EJB/RMI-IIOP,让Spring Bean通过
dubbo等RPC框架直接对外暴露服务,同时事务
上下文可以在RPC调用时进行传递
● 实现云原生事务日志记录和恢复服务,允许应
用节点在没有持久性存储的情况下运行,所有
的事务日志记录和恢复都由云服务管理
● 增加对TCC和Saga模式的支持
应用服务器进入云原生时代
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 28
Thank you!
Questions?
@mazhen
mazhen.tech

More Related Content

Similar to Jakarta EE应用服务器的事务处理.pptx

99cloud openstack ci
99cloud openstack ci99cloud openstack ci
99cloud openstack ciLiang Bo
 
Iaa s管理平台的规划与研发 社区
Iaa s管理平台的规划与研发 社区Iaa s管理平台的规划与研发 社区
Iaa s管理平台的规划与研发 社区benbenhappy
 
网格技术及其在中国企业信息化中的应用(pdf)
网格技术及其在中国企业信息化中的应用(pdf)网格技术及其在中国企业信息化中的应用(pdf)
网格技术及其在中国企业信息化中的应用(pdf)Zac John
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceYi-Feng Tzeng
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2致远 郑
 
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇Dennis. Lee
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Li Yi
 
2016上半年中国互联网行业Docker和容器服务使用调查报告
2016上半年中国互联网行业Docker和容器服务使用调查报告2016上半年中国互联网行业Docker和容器服务使用调查报告
2016上半年中国互联网行业Docker和容器服务使用调查报告Limeng (Victor) Yu
 
《云计算入门指南》
《云计算入门指南》《云计算入门指南》
《云计算入门指南》wiit
 
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇 HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇 Dennis. Lee
 
202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptxQiming Teng
 
04 陈良忠ibm cloud forum ibm experience 0611
04 陈良忠ibm cloud forum  ibm experience 061104 陈良忠ibm cloud forum  ibm experience 0611
04 陈良忠ibm cloud forum ibm experience 0611ikewu83
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceAlex Su
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless Rick Hwang
 
云的基石:Net app存储平台
云的基石:Net app存储平台云的基石:Net app存储平台
云的基石:Net app存储平台ITband
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn scegdems
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8schabateryuhlin
 

Similar to Jakarta EE应用服务器的事务处理.pptx (20)

99cloud openstack ci
99cloud openstack ci99cloud openstack ci
99cloud openstack ci
 
Iaa s管理平台的规划与研发 社区
Iaa s管理平台的规划与研发 社区Iaa s管理平台的规划与研发 社区
Iaa s管理平台的规划与研发 社区
 
网格技术及其在中国企业信息化中的应用(pdf)
网格技术及其在中国企业信息化中的应用(pdf)网格技术及其在中国企业信息化中的应用(pdf)
网格技术及其在中国企业信息化中的应用(pdf)
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) Compliance
 
什麼是Nephio?
什麼是Nephio?什麼是Nephio?
什麼是Nephio?
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2
 
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
 
2016上半年中国互联网行业Docker和容器服务使用调查报告
2016上半年中国互联网行业Docker和容器服务使用调查报告2016上半年中国互联网行业Docker和容器服务使用调查报告
2016上半年中国互联网行业Docker和容器服务使用调查报告
 
《云计算入门指南》
《云计算入门指南》《云计算入门指南》
《云计算入门指南》
 
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇 HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
 
202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx
 
04 陈良忠ibm cloud forum ibm experience 0611
04 陈良忠ibm cloud forum  ibm experience 061104 陈良忠ibm cloud forum  ibm experience 0611
04 陈良忠ibm cloud forum ibm experience 0611
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless
 
云的基石:Net app存储平台
云的基石:Net app存储平台云的基石:Net app存储平台
云的基石:Net app存储平台
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn sce
 
QIoT ,QuAI
QIoT ,QuAI  QIoT ,QuAI
QIoT ,QuAI
 
從技術找未來
從技術找未來從技術找未來
從技術找未來
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8s
 

Jakarta EE应用服务器的事务处理.pptx

  • 1. 1 Jakarta EE 应用服务器的事务处理 马震 金蝶天燕云 September 27, 2023 @mazhen mazhen.tech COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
  • 2. 2 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 事务的基本概念 ● 事务处理系统回顾 ● JTA & JTS & Jakarta Transactions ● 云原生时代的分布式事务处理 Outline
  • 3. 3 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● Transaction 是将多个读取和写入操作”打包”在一起,作为一个完整的执行单元 ● 要么整个 Transaction 成功(提交),要么失败(回滚),永远不能只是部分完成 ● Transaction 是一层抽象,简化了应用程序模型 ○ 应用可以忽略部分失败和并发问题 ○ 系统的完整性始终处于一致性状态 Transaction
  • 4. 4 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● ACID 是1983年由 Theo Härder 和 Andreas Reuter 在论文《 Principles of Transaction-Oriented Database Recovery》中首次提出。 ● 原子性 Atomicity ○ 将多个操作组合在一起,如果遇到故障那么整体将被中止,并撤消之前的所有操作 ● 一致性 Consistency ○ 会保证事务前后,数据的状态都是“好”的 ● 隔离性 Isolation ○ 多个事务并发执行时,一个事务的执行不应影响其他事务的执行,每个事务都假装他 们是唯一正在运行的事务 ● 持久性 Durability ○ 一旦事务成功提交,它所写入的任何数据都不会丢失,即使出现硬件故障 ACID Properties
  • 5. 5 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 分布式系统可能遇到各种问题 ○ 数据包丢失,乱序,重复和延迟 ○ 时钟不同步 ○ 节点可能在任意时刻暂停或crash ○ 节点故意发送虚假消息,试图欺骗其他节点 ● Distributed Transaction的实现更加困难 ○ 没有全局变量,没有共享内存,不能在节点间共享状态 ○ 唯一可以做的就是从一个节点向另一个节点发送消息 Distributed Transaction
  • 6. 6 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● JimGray 在“Notes on Database Operating Systems”(1979)中描述了两阶段提交(2PC) ● 2PC 出现了新的组件: coordinator (也称为transaction manager ) Two-Phase Commit (2PC)
  • 7. 7 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 如果 coordinator 在收到参与者的Yes后挂掉,此时参与者只能等待,不能再单方面中止 ● Coordinator 实际的决定是commit,它在只发送了commit请求给DB2,还没发commit给DB1时挂掉。 DB1不知道该提交还是终止,即使设置了超时也没用 ● 此时协议被blocked,只能等待coordinator恢复 Two-Phase Commit (2PC) 的局限性
  • 8. 8 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 问题本质 ○ 在phase 2阶段, coordinator向所有参与者发送commit/abort前,这时只有它知道当前事务 的结果 ● 如何恢复coordinator ○ Coordinator 需要在持久性存储中记录协议状态 ■ 强一致性的分布式存储(基于Paxos/raft实现) ○ 由其他节点手工/自动take over 如何解决
  • 9. 9 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 事务的基本概念 ● 事务处理系统回顾 ● JTA & JTS & Jakarta Transactions ● 云原生时代的分布式事务处理 Outline
  • 10. 10 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 现代事务处理技术出现在20世纪60年代的大型机主机(mainframe)环境 ● 最早的事务处理系统是由IBM开发的SABRE航空公司预订系统 ○ IBM意识到这种技术可以应用到其他行业,由此产生了CICS(Customer Information Control System) ○ CICS最初是完全用汇编语言编写,并没有使用现代意义上的数据库,而是依赖于扁平 文件和其他低级数据结构 事务处理系统回顾——CICS
  • 11. 11 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 1970年 Edgar F. Codd 发表了一篇名为《A Relational Model of Data for Large Shared Data Banks》的论 文,首次提出了关系模型的概念,这一模型为后来的关系数据库管理系统(RDBMS)奠定了 基础。 ● IBM 的 System R 项目是一个关键的里程碑 ○ 它是 SQL 的第一个实现 ○ 事务处理技术被引入到关系数据库领域 事务处理系统回顾——关系数据库
  • 12. 12 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 在分布式环境中实现事务处理面临着许多挑战,传统的单机事务处理系统无法满足需求 ● 为了管理这些分布式事务,提供更好的并发控制和容错能力,事务处理监视器(Transaction Processing Monitor 或 TP Monitor)被引入。 ○ TP Monitor 为应用程序提供了一个完整的运行时,允许应用以安全和事务性的方式访问 后端系统(包括数据库)。 ○ AT&T贝尔实验室最初于1984年开发了Tuxedo系统,后来成为BEA Systems的主要交易产 品 ○ Tuxedo遵循X/Open DTP标准 事务处理系统回顾——Tuxedo
  • 13. 13 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● CORBA Object Transaction Service (OTS) 是一个定义在 CORBA(Common Object Request Broker Architecture) 规范中的分布式事务服务。 ○ OTS 将分布式事务处理模型(DTP)扩展到了对象领域,它提供了一种在分布式对象系 统中进行事务处理的方法。 ● Java EE 应用服务器是在 X/Open DTP 模型和 CORBA OTS 的基础上发展出来的事务处理监视器, TP Monitor 开始融入 Java EE应用服务器。 ● Java EE 应用服务器中的许多功能都源于TP Monitor ○ TP Monitor 本质上是一个具有事务感知功能的应用服务器。 事务处理系统回顾——应用服务器
  • 14. 14 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 事务的基本概念 ● 事务处理系统回顾 ● JTA & JTS & Jakarta Transactions ● 云原生时代的分布式事务处理 Outline
  • 15. 15 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● X/Open 是一家成立于1984年的非营利性质的技术联盟,其目标是制定开放系统标准。1996 年, X/Open 与 Open Software Foundation合并,组成 The Open Group。 ● X/Open 在1991年开发了一个分布式事务处理(DTP)模型 ● X/Open DTP 模型由事务管理器(TM)、资源管理器(RM)、通信资源管理器(CRM)和应用 程序(AP)组成。X/Open DTP 标准规定了这些组件功能,以及组件之间的标准接口。 X/Open DTP
  • 16. 16 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • 事务管理器:提供识别,监视, 完成或恢复全局顶级事务所需的 服务和管理功能。 ● 通信资源管理器:CRM为通信系 统提供API,该API可用于分布式 事务系统 ● 资源管理器:RM代表事务参与 者,包括数据库,消息队列,文 件系统等 X/Open DTP
  • 17. 17 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 在1999年,Sun Microsystems将Java Transaction API(JTA)定义为Open Group规范到Java的映射。 随着JTA的引入,Java平台获得了基于标准的分布式事务支持。 ● JTA是面向对象的,与严格的过程式TX和XA规范不同。 ● JTA最初被认为是在现有事务处理系统(例如IBM的CICS产品)之上的API层。 ● 随着JAVA EE应用服务器的成熟,使用在越来越多的任务关键型应用中。 JTA
  • 18. 18 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 事务管理接口事务管理接口 ● 应用程序事务划分接口 ● Open Group XA接口的直接映射 JTA的三类接口
  • 19. 19 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● CORBA Object Transaction Service (OTS) 将分布式事务处理模型(DTP)扩展到了对象领域,, 它提供了一种在分布式对象系统中进行事务处理的方法。 ● Java Transaction Service (JTS) 是 OTS 的 Java 映射, JTA 推荐使用 JTS 作为其底层事务系统的实 现。 ● Java EE应用服务器间的事务互操作性是通过底层使用 JTS 实现获得的。 Java Transaction Service (JTS)
  • 20. 20 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● Java Transaction Service(JTS)规范是 OTS 规范的 Java语言映射 ● JTS 使用 CORBA OTS 接口来实现互操作性和可移 植性,这些接口为利用 IIOP 在 JTS 之间生成和 传播事务上下文的实现定义了标准机制。 ● JTA 是暴露给用户和应用服务器使用的接口,应 用服务器内部可以使用 JTS 作为其底层事务系统 的实现,应用服务器间的事务互操作性是通过 底层使用 JTS 实现获得的。 Java Transaction Service (JTS)
  • 21. 21 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● Jakarta Transactions 1.3 ○ Jakarta EE 8的第一个版本 ○ Java Transaction API 1.3 ● Jakarta Transactions 2.0 ○ 包含在 Jakarta EE 9 中发布 ○ Moved to the jakarta.* namespace Jakarta Transactions
  • 22. 22 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 事务的基本概念 ● 事务处理系统回顾 ● JTA & JTS & Jakarta Transactions ● 云原生时代的分布式事务处理 Outline
  • 23. 23 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● CORBA ● EJB ● SOAP ● JAX-PRC + JAX-WS ● REST ● Dubbo ● Spring Cloud ● Service Mesh 微服务的演进
  • 24. 24 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 所有的模块部署在一个应 用服务器上,业务数据都 保存在单个数据库中,这 种场景本地事务就可以满 足需求 单体应用
  • 25. 25 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 如果数据库按照业务模块 进行水平拆分,完成一个 业务请求会涉及到跨库的 资源访问和更新,这时候 就需要使用应用服务器的 JTA进行两阶段提交,保证 跨库操作的事务完整性。 数据库水平拆分
  • 26. 26 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● 应用按照业务模块进一步拆分,每一 个模块都作为EJB,部署在独立的应用 服务器中。 ● 完成一个业务请求会跨越多个应用服 务器节点和资源 ● 当访问入口EJB时JTA会自动开启全局 事务,事务上下文随着EJB的远程调用 在应用服务器之间传播,让被调用的 EJB也加入到全局事务中。 微服务化
  • 27. 27 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ● JTA/XA支持数据的实时一致性,对业务开发更加 友好 ● 客户对原有的系统进行微服务改造时,如果把 业务模型假定成数据最终一致性,就不得不做 出很大的妥协和变更。特别是金融客户对一致 性的要求比较高 ● 可以抛弃沉重的EJB/RMI-IIOP,让Spring Bean通过 dubbo等RPC框架直接对外暴露服务,同时事务 上下文可以在RPC调用时进行传递 ● 实现云原生事务日志记录和恢复服务,允许应 用节点在没有持久性存储的情况下运行,所有 的事务日志记录和恢复都由云服务管理 ● 增加对TCC和Saga模式的支持 应用服务器进入云原生时代
  • 28. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 28 Thank you! Questions? @mazhen mazhen.tech