大规模SOA系统中的分布事务处理
程立
支付宝产品技术与用户体验部
2008年12月
提要
• 从单应用系统的事务
• 到大规模SOA系统中
的事务
• 内容提要
– 山穷水尽(背景与历史)
– 柳暗花明(原则与模式)
– 又一山寨(框架与设施)
应用
数据库
数据
遗留系统集成
开放服务
流程服务
客户的系统
业务服务
领域服务
合作伙伴的系统
合作伙伴集成
门户服务
数据
数据
数据
数据
数据
10:33 2
山穷水尽
Googling
• “transaction processing”
约有1,940,000项符合的查询结果
• “distributed transaction”
约有260,000项符合的查询结果
• “distributed transaction”+
practice
约有24,700项符合的查询结果
• “distributed transaction”+
“success story”
约有265项符合的查询结果
• “distributed transaction”
+ sucks
约有1,370项符合的结果
• “distributed transaction” +
hope
约有17,500项符合的结果 ☺
10:33 3
事务
事务:
由一组操作构成的可靠、
独立的工作单元
ACID:
• Atomicity(原子性)
• Consistency(一致性)
• Isolation(隔离性)
• Durability(持久性)
难点:
• 高度并发
• 资源分布
• 大时间跨度
操作时间
资源位置
A1
1 2 3 4 5
A
B
C
C1
B3
C4
A5
事务1
事务2
事务3
10:33 4
本地事务
本地事务
事务由资源管理器(如
DBMS)本地管理
优点
• 支持严格的ACID属性
• 可靠
• 高效
• 状态可以只在资源管理器
中维护
• 应用编程模型简单(在框
架或平台的支持)
局限
• 不具备分布事务处理能力
• 隔离的最小单位由资源管
理器决定,如数据库中的
一条记录
应用
/
应用服务器
/
应用框架
AP
资源管理器
RM
开始会话
开始事务
操作1
…
操作n
提交/回滚事务
完成会话
锁
日志
10:33 5