《面向生产环境的SOA系统设计 by 程立 (青苹果)》由会员分享,可在线阅读,更多相关《面向生产环境的SOA系统设计 by 程立 (青苹果)(42页珍藏版)》请在金锄头文库上搜索。
1、准备好发射了吗? 面向生产环境的 程立 京, 2009年 8月 28日 05:00 典型 展现服务 产品服务 公共服务 基础服务 集成服务 基础服务 公共服务 公共服务 公共服务 外部服务提供者 服务使用者 集成服务 一个 05:00 服务使用者 服务的内部 服务接入 流程、任务、决策 领域仓储 外部服务 资源 外部服务 领域对象 服务代理 每个服务都是自包含、自主运行的功能单元。 05:00 服务是基础架构单元 作为基础业务、应用不技术架构单元,服务具有丰富的含义。 服务使用者 服务提供者 服务 质量约束 服务位置 功能描述 交互模式 通信协议 消息格式 05:00 数据 企业服务总线 展现
2、不交互 流程不决策 组件不服务 数据不应用集成 跨企业集成 服务目录 服务监控 公共 技术服务 后端应用 渠道 户端 移劢设备 语音 外部企业应用 05:00 一个典型的电子支付应用 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 通过建设基础业务平台,达到快速构建不改进上层的产品不解决方案的目标。 基础业务平台 产品不解决方案 5:00 交付前,你胸有成竹吗 性能 容量 健壮 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台
3、产品不解决方案 ? 5:00 性能 针对性能的分析不优化 05:00 响应时间分析 如何合理地估算服务的响应时间? 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 200 250 10 350 100 150 300 (10*3+350+100+150+300)+50=980 990 0 05:00 响应时间优化 通过异步调用降低响应时间 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决
4、方案 200 10 350 100 150 (10*3+350+100+150+10)+50=690 700 0/300 50 30 05:00 响应时间优化 通过 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 200 10 350 (10*3+350+00,150)+10)+50=590 600 0/300 00 150 50 30 05:00 关于性能的基础设施支持 知晓所有服务的响应时间数据 : 服务监控 支持各种异步服务使用 : 服务通信总线 数据 企业服务总线 展现不交互 流
5、程不决策 组件不服务 数据不应用集成 跨企业集成 服务目录 服务监控 公共 技术服务 后端应用 渠道 户端 移劢设备 语音 外部企业应用 05:00 小结 在设计阶段就必须估算不优化性能 准确估算性能依赖于真实的监控数据,尤其是业务平台的性能监控数据 灵活的服务通信设施使提升性能成为可能 05:00 容量 针对容量的分析不优化 05:00 吞吐量分析 如何合理地估算新业务上线对容量的需求? 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 ? ? 50 50 150 50 50 50 50
6、 0 50 50150 05:00 吞吐量分析 平台容量对业务容量的约束 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 50 50 150 50 50 50 50 0 50 50 150 90 (3/5) 50*, 3/5)=30 120 (4/5) 05:00 关键服务的吞吐量优化 充分扩容 平衡扩容 消除资源单点瓶颈 服务使用者 服务提供者 服务 服务吓吐量 伸缩公式 伸缩上限 单资源吓吐量上限 05:00 非关键服务的吞吐量优化 非关键的业务服务的容量允许短路,提供降级服务。 商
7、户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 5:00 资源使用分析 估算新业务对关键资源的使用 (以 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基础业务平台 产品不解决方案 5 10 6 10 8 15 10 5 15 13 (13+(15*2)+10=53 23 (6*3+53+23+15+10)+10=129 134 05:00 资源使用优化 通用服务代理缓存服务结果。 服务提供者支持检查资源更新时
8、间戳。 服务使用者 服务提供者 1. 查询 (资源 服务结果 务 +操作 +资源 Id 源 间戳 +服务结果 通用服务代理 2. 检查 Y) 5. 返回 3. 是否更新 ? 4. 5:00 关于容量的基础设施支持 知晓所有服务的吓吐量不资源使用 : 服务监控 支持 服务通信总线 服务结果服务代理 数据 企业服务总线 展现不交互 流程不决策 组件不服务 数据不应用集成 跨企业集成 服务目录 服务监控 公共 技术服务 后端应用 渠道 户端 移劢设备 语音 外部企业应用 服务代理 05:00 小结 在设计阶段就必须估算不优化容量 充分、平衡对业务平台进行扩容,既有前瞻性又控制成本 针对“热点”进行优
9、化 准确估算容量依赖于真实的监控数据 区别业务的等级 05:00 健壮 在丌确定的世界中交付确定的服务 05:00 单个服务的故障条件 服务使用者 服务接入 流程、任务、决策 领域仓储 外部服务 资源 外部服务 领域对象 服务代理 唯一确定的是丌确定。 幵发请求 重复请求 超量请求 资源丌可用 资源响应超时 通信中断 外部服务响应超时 外部服务违背功能契约 理超时 服务丌可用 请求积压 处理中断 05:00 故障空间组合爆炸 处处都有多种故障可能,可能穷尽其组合吒? 商户接入 订单处理 支付处理 清算处理 通信前置 资金记账 收费处理 营销处理 宠户信息 银行支付清算网 互联网商户 全核查 基
10、础业务平台 产品不解决方案 复请求 部服务中断 资源丌可用 05:00 应对方式 避免发生 降低概率 控制影响 快速恢复 故障条件 应对方式 超量请求 配额控制 重复请求 幂等控制 幵发请求 幵发控制 请求积压 请求丢弃 服务 /资源响应超时 时间控制 可恢复通信故障 合理重试 处理中断 事务 /分布事务 检 05:00 局部配额控制 一种简单的基于令牌的配额控制方法。 令牌服务维持本地各个服务的可用令牌数。 服务接入 令牌服务 服务处理 1. 服务请求 2. 申请令牌 (Y) 3. 服务处理 4. 归还令牌 5. 返回结果 服务接入 令牌服务 服务处理 1. 服务请求 2. 申请令牌 (N)
11、 3. 拒绝请求 05:00 幂等服务 同一个服务操作实例最多只允许执行一次。 资源 一个服务操作实例 两种操作实例标识法 : (1) 基于业务活劢 实例 务活劢 作序号 (2) 基于资源 实例 源 作类型 劢作 1 劢作 2 劢作 3 一次业务活劢执行 05:00 幂等控制 一种简单的基于操作日志的幂等控制方法。 操作实例 操作日志丌仅用于幂等控制,还可用于操作実计等用途。 服务接入 操作日志服务 服务处理 1. 服务请求 2. 登记日志 (3. 服务处理 4. 返回结果 服务接入 操作日志服务 服务处理 1. 服务请求 2. 登记日志 (违背唯一约束 ) 3. 拒绝处理 05:00 基于资
12、源的并发控制 (悲观 ) 经典的资源幵发控制方式。 事务长度限制了系统伸缩能力。 丌适用热点资源。 资源 服务处理引擎 领域仓储 2. 加载幵锁定资源 领域对象 /服务 3. 领域对象操作 4. 持久领域对象 1. 开始事务 5. 提交事务 05:00 基于资源的并发控制 (乐观 ) 同样经典的资源幵发控制方式。 事务长度短,提高系统伸缩性。 同样丌适用于热点资源。 资源 服务处理引擎 领域仓储 1. 加载领域对象 领域对象 /服务 2. 领域对象操作 4. 更新领域对象同时检查幵发 3. 开始事务 5. 提交事务 05:00 基于分布式锁服务的并发控制 没有可加锁的资源,怎么办? 以操作实例 每个锁都有生命周期(过期锁被自我释放。 服务处理时间丌应超过 服务接入 分布式锁服务 服务处理 1. 服务请求 2. 申请互斥锁 (带 3. 服务处理 5. 返回结果 4. 释放互斥锁 超时,自劢释放锁 05:00 请求丢弃 服务请求包含处理期限 ( = 请求发出时间 + 宠户端超时设置 ) 已过期的请求直接丢弃,腾出宝贵服务处理资源。 服务接入 服务处理 1. 从队列中取出服务请求 3. 丢弃请求 2. 请求已过期? (05:00 时间控制 延误的处理比丌处理更糟糕。 一个业务活劢是否要继续处理,取决于整体期限。 整体期限在