You are on page 1of 43

准备好发射了吗?

面向生产环境的SOA系统设计

程立
Alipay.com

IT168系统架构师大会,北京,2009年8月28日
典型SOA应用
一个SOA应用由
服务使用者 一系列服务松
散复合而成。
展现服务 集成服务

产品服务

公共服务 公共服务 公共服务 公共服务

基础服务 基础服务

集成服务

外部服务提供者
服务是基础架构单元
作为基础架构
单元,服务具
有丰富的含义。
服务使用者
质量约束
服务位置
功能描述
服务
交互模式
通信协议
消息格式
服务提供者
服务的内部
每个服务都是
自包含、自主
服务使用者
运行的功能单
元。
服务接入

流程、任务、决策

领域仓储 领域对象 服务代理

资源 外部服务
外部服务
SOA技术基础设施
渠 SOA应用需要一
道 browser 客户端 移动设备 语音 … 系列技术基础
设施的支持。
展现与交互
公共
技术
跨 流程与决策 企 服务
外 企 业
部 业 服
企 集 务
业 成 组件与服务 总
应 线 服务
用 目录

服务
数据与应用集成
监控

数据 后端应用
一个典型的电子支付应用
通过建设基础
互联网商户
业务平台,达
产品与解决方案
到快速构建与
商户接入 改进上层的产
品与解决方案
订单处理
x3
的目标。

客户信息 支付处理 收费处理 营销处理 安全核查


x2

清算处理 资金记账

通信前置
基础业务平台

银行支付清算网
交付前,你胸有成竹吗

产品与解决方案
互联网商户

商户接入

性能
订单处理 容量
x3
健壮
客户信息 支付处理 收费处理 营销处理 安全核查
x2

清算处理 资金记账

通信前置
基础业务平台

银行支付清算网
性能
针对性能的分析与优化
响应时间分析
如何合理地估
互联网商户
算服务的响应
产品与解决方案 990
时间?
商户接入
(10*3+350+100+150+300)+50=980
订单处理
x3
10 350 100 150 300
客户信息 支付处理 收费处理 营销处理 安全核查
x2
250 30
清算处理 资金记账

200
通信前置
基础业务平台

银行支付清算网
响应时间优化
通过异步服务
互联网商户
降低响应时间
产品与解决方案 700
商户接入
(10*3+350+100+150+10)+50=690
订单处理
x3 @async
10 350 100 150 10/300
客户信息 支付处理 收费处理 营销处理 安全核查
x2
250 30
清算处理 资金记账

200
通信前置
基础业务平台

银行支付清算网
响应时间优化
通过future调
互联网商户
用降低响应时
产品与解决方案 600

商户接入
(10*3+350+max(100,150)+10)+50=590
订单处理
x3 @future @future @async
10 350 100 150 10/300
客户信息 支付处理 收费处理 营销处理 安全核查
x2
250 30
清算处理 资金记账

200
通信前置
基础业务平台

银行支付清算网
关于性能的基础设施支持
渠  知晓所有服
道 browser 客户端 移动设备 语音 … 务的响应时间
数据: 服务监
展现与交互 控
公共  支持异步服
技术
跨 流程与决策 企 服务 务使用: 服务
外 企 业 通信总线
部 业 服
企 务


总  支持Future
成 组件与服务 服务
应 线 服务使用: 服
用 目录
务通信总线
服务
数据与应用集成
监控

数据 后端应用
小结
容量
针对容量的分析与优化
吞吐量分析
如何合理地估
互联网商户
算新业务上线
产品与解决方案
对容量的需求?
50
商户接入
50
订单处理
x3
150 50 50 50 50
客户信息 支付处理 收费处理 营销处理 安全核查
x2
50 ?
150
清算处理 资金记账
50
通信前置
基础业务平台
50

银行支付清算网
吞吐量分析
平台容量对业
互联网商户
务容量的约束
产品与解决方案 50 50*min(4/5, 3/5)=30
商户接入
50
120 (4/5) 订单处理
x3
150 50 50 50 50
客户信息 支付处理 收费处理 营销处理 安全核查
x2
50 150 90 (3/5)
清算处理 资金记账
50
通信前置
基础业务平台
50
银行支付清算网
关键服务的吞吐量优化
充分扩容
平衡扩容
服务使用者 消除资源单
点瓶颈
服务吞吐量
伸缩公式
服务
伸缩上限
单资源吞吐量上限

服务提供者
非关键服务的吞吐量优化
非关键的业务
互联网商户
服务的容量允
产品与解决方案
许短路,提供
商户接入 降级服务。
订单处理
x3 @optional @optional

客户信息 支付处理 收费处理 营销处理 安全核查


x2

清算处理 资金记账

通信前置
基础业务平台

银行支付清算网
资源使用分析
估算新业务对
互联网商户
关键资源的使
产品与解决方案
用 (以SQL执行
5 134
商户接入 次数为例)
10 (6*3+53+23+15+10)+10=129
订单处理
(13+(15*2))+10=53
x3 23
6 10 8 15 10
客户信息 支付处理 收费处理 营销处理 安全核查
x2
13 8 15
清算处理 资金记账
5
通信前置
基础业务平台

银行支付清算网
资源使用优化
通用服务代
1. 查询(资源Id) 理缓存服务结
2. 检查cache 果。
(Y)
3. 是否更新? 服务提供者
通 服
服 用 支持检查资源
务 务
服 提 更新时间戳。
使 务
用 供

者 理 4. No 者

5. 返回cache结

服务结果cache
key=服务+操作+资源Id
value=资源Id+时间戳+服务结果
关于容量的基础设施支持
渠  知晓所有服
道 browser 客户端 移动设备 语音 … 务的吞吐量与
资源使用: 服
展现与交互 服务 务监控
代理
 支持
跨 流程与决策 企 公共 optional服务
外 业 技术


服 服务
使用: 服务通

企 集 务 信总线
业 成 组件与服务 总
线 服务

目录 服务结果

cache: 服务代
服务 理
数据与应用集成
监控

数据 后端应用
小结
健壮
在不确定的世界中交付确定的服务
单个服务的故障条件
唯一确定的是
服务使用者 不确定。
并发请求 重复请求 超量请求 请求积压

服务接入

BUG 处理中断 处理超时


流程、任务、决策

领域仓储 领域对象 服务代理

通信中断
资源 资源不可用 外部服务
外部服务 服务不可用
资源响应超时
外部服务响应超时
外部服务违背功能契约
故障空间组合爆炸
处处都有多种
互联网商户
故障可能,可
重复请求 能穷尽其组合
产品与解决方案
商户接入 吗?
BUG
订单处理
x3

客户信息 支付处理 收费处理 营销处理 安全核查


x2 资源不可用

清算处理 资金记账

通信前置
基础业务平台
外部服务中断

银行支付清算网
应对方式
避免发生
故障条件 应对方式
降低概率
超量请求 配额控制
控制影响
重复请求 幂等控制 快速恢复
并发请求 并发控制
请求积压 请求丢弃
服务/资源响应超时 时间控制
可恢复通信故障 合理重试
处理中断 事务/分布事务
BUG 自检
局部配额控制
1. 服务请 5. 返回结果
一种简单的
求 基于令牌的配
服务接入 2. 申请令牌
额控制方法。
(Y) 令

令牌服务维
3. 服务处理 4. 归还令牌
服 持本地各个服

务的可用令牌
服务处理
数。

1. 服务请 3. 拒绝请求

服务接入 2. 申请令牌
(N) 令



服务处理
幂等服务
同一个服务操
一次业务活动执行 作实例最多只
动作1 动作2 动作3 允许执行一次。

一个服务操作实例

两种操作实例标识法:
(1) 基于业务活动
实例Id=业务活动Id+操作序号
(2) 基于资源
资源
实例Id=资源Id+操作类型
幂等控制
1. 服务请 4. 返回结果 一种简单的
求 基于操作日志
服务接入 2. 登记日志 操 的幂等控制方
(OK) 作 法。
3. 服务处理 日

服 操作Id上建
服务处理 务 立唯一性约束。
操作日志不
仅用于幂等控
1. 服务请 3. 拒绝处理 制,还可用于

操作审计等用
服务接入 2. 登记日志(违背唯一约束)
操 途。




服务处理 务
基于资源的并发控制 (悲观)
经典的资源
服务处理引擎
并发控制方式。
1. 开始事务
事务长度限
2. 加载并锁定资源root对 制了系统伸缩
象 3. 领域对象操作 能力。
4. 持久领域对象
不适用热点
5. 提交事务 资源。

领域仓储 领域对象/服务

资源
基于资源的并发控制(乐观)
同样经典的
资源并发控制
服务处理引擎 方式。
1. 加载领域对
象 2. 领域对象操作 事务长度短,
3. 开始事务 提高系统伸缩
性。
4. 更新领域对象同时检查并发
领域仓储 领域对象/服务
同样不适用
5. 提交事务 于热点资源。

资源
基于分布式锁服务的并发控制
没有可加锁的
资源,怎么办?
1. 服务请 5. 返回结果 以操作实例

Id作为锁标识。
2. 申请互斥锁 (带
服务接入 lock_delay) 分 每个锁都有
布 生命周期
4. 释放互斥锁 式
3. 服务处理
锁 (lock_delay)

服务处理 务 过期锁被自
我释放。
服务处理时
超时,自动释放锁 间不应超过
lock_delay。
请求丢弃
服务请求包
含处理期限
( = 请求发出
1. 从队列中取出服务请 时间 + 客户端

2. 请求已过期? 超时设置)
(Yes)
3. 丢弃请求 已过期的请
服务接入 求直接丢弃,
腾出宝贵服务
处理资源。

服务处理
时间控制
 延误的处理
互联网商户
比不处理更糟
产品与解决方案
糕。
商户接入
 一个业务活
00:00.000/1000ms
订单处理 动是否要继续
x3 处理,取决于
00:00.800/500ms 整体期限。
客户信息 支付处理 收费处理 营销处理 安全核查
x2 整体期限在
00:01.100 > 00:01.000
清算处理 资金记账
统一业务活动
上下文中传输。
通信前置 考虑服务器
基础业务平台
时间差异补偿。
银行支付清算网
领域自检
不变式

服务处理引擎
 状态变迁
1. 开始事务

2. 加载并锁定资源root对

3. 领域对象自检
4. 领域对象操作
5. 领域对象自检
6. 持久领域对象

领域仓储 领域对象/服务
7. 提交事务

资源
分布事务 (TCC模式)
Try: 尝试执
行业务
Confirm:确
认执行业务
tryX confirmX cancelX Cancel: 取
消执行业务

业务服务
分布事务 (TCC模式)
基于TCC模式的
互联网商户 分布事务执行
过程示例。
产品与解决方案
商户接入

订单处理
x3

客户信息 支付处理 收费处理 营销处理 安全核查


x2 一次资金记账操作分为两步:
(1) try: 完成所有账务处理
清算处理 资金记账 必须的业务检查与资源
(资金)预留。
通信前置 (2) confirm: 释放资源并真
基础业务平台 正进行账务处理。
confirm操作在整个业务活动
银行支付清算网 结束后由系统自动完成。
分布事务 (补偿模式)
 do: 真正执
行业务
 compensate:
业务补偿
doX compensateX

业务服务
分布事务 (补偿模式)
一次补偿模式
互联网商户
的业务执行过
产品与解决方案
程。
商户接入

订单处理
x3

客户信息 支付处理 收费处理 营销处理 安全核查


x2
如果整个业务活动回滚,
清算处理 资金记账 而积分已发放,该操作
可以被补偿。
通信前置
基础业务平台

银行支付清算网
关于健壮的基础设施支持
渠  控制请求量:
道 browser 客户端 移动设备 语音 … 配合管理服务
服务 操作  幂等控制:
展现与交互 代理 日志 操作日志服务
配额 分布  并发控制:
企 管理 锁

跨 流程与决策
业 分布锁服务
企 上下 分布
部 服


务 文 事务  时间控制:

业 成 组件与服务 总 上下文服务
应 线 服务
其它
用 监控
公共  事务控制:
技术 分布事务服务
数据与应用集成 服务
服务
目录

数据 后端应用
小结
回顾

You might also like