
支付宝远程调用规范.docx
114页支付宝远程调用规范0.1版1 .现状分析本章以支付宝系统的架构为上下文,分析目前支付宝系统中的服务协作模式、远程调用场景与远程调用技术现状对现状的分析是改进并形成规范的基础1)支付宝系统架构概述支付宝系统的架构需要向面向为了满足互联网金融服务系统的快速变化与高度稳定的要求,服务架构迁移面向服务的支付宝系统架构如下图所示:CTU风险 业务指标 服务质量监控 监控 监控性能 故障 故障隔离监控 监控 切换负载 过载平衡 控制外部webU内部web交互服务用户 沟通 用户门户 中心 社区销售 客服 结算门户 门户 门户流程服务服务 结算 销售流程 流程 流程授权 交易 认证流程 流程 流程风控 规则流程 服务 …分析服务ODSData DataWarehouse Mart企业服务总线(ESB)商户 接口阿里 接口业务功能服务客户 管理计息 服务交易 服务订单 服务证书 服务资源服务账户 管理计费 服务结算 服务物流 服务验证 服务记账服务客户 数据账户 数据征信 服务红包 服务认证 服务产品 数据日志数据工具数据配置 数据报表 数据文件 数据基础设施服务服务任务流程规则可靠批量任务行为注册调度引擎引擎消息处理协同跟踪服务单次分布cache|搜索加密权限日志发现登录事务引擎解密框架处理不同类型的服务对部署提出了不同的要求。
比如交互服务要求公网可访问、可以快速变化;核心的业务功能服务则要求稳定、具有海量吞吐能力;外部合作服务可能要求提供特殊的网络访问方式,需要包含外部服务商的提供的类库、文件与配置等等由不同的服务有不同部署要求,因此支付宝系统必须采用进行分布式部署,通过分布式服务间的协作实现业务流程为了支撑高度可用的服务协作网络,支付宝系统采用了以服务farm为基本单元的部署架构每一个farm是一个相对独立由多台物理机器组成的高可用集群,用于支撑一组部署要求相近、相互间耦合紧密的服务farm之间是松耦合的,它们具有不同的服务功能、发布策略、管理策略与软硬件基础这种基于farm的部署架构如下图所示:F5用户访问接入,负载平衡、故障切换核心访问接入,安全隔离、负载平衡、故障切换CTUFarm数字证书核心Farm银行直通Farm账务核心Farm加解密计算iFarm.…..…一_—j资源访问对于支撑高度复杂应用的Farm,如前台Farm、后台Farm,其内部还有不同服务器的分工比如前台Farm的结构如下:Ipayweb应用esb总线(2)支付宝服务协作模式在对支付宝系统的逻辑架构与部署架构进行了阐述之后,我们得知支付宝系统未来的发展方向是拆分成相对独立的各类服务,并且分布部署在不同的Farm以及Farm中的不同服务器之间。
分布部署的服务间如何进行协作以实现高度复杂的业务流程?在本节中,我们探讨支付宝系统中常用的几种服务协作模式在未来的系统设计中,将尽可能采用标准化的服务协作模式一、服务请求-响应模式这是最简单的服务协作模式一方是服务的消费者,一方是服务的提供者,服务的消费者向服务提供者发出服务请求,服务提供者进行服务逻辑处理,并返回给服务提供者处理的结果服务消费者根据结果进行后续处理服务消费者服芬提供拧1:服务请求2:服务逻辑处理3:服务响应k4:后续处理服务请求-响应模式是一种点对点的访问模式当两个系统间的服务交互比较简单时,这是一种简单有效的方式当系统中服务越来越多之后,会形成一个复杂的服务提供-消费网络,给管理带来很大的挑战而且,分布式服务间以同步方式进行远程调用会付出一定的性能与可靠性成本因此,在对业务流程进行服务分解与服务分解时,要慎用这种方式,多考虑有无其它替代方案,控制好点对点服务请求-响应的使用范围在支付宝系统中,服务请求-响应模式的典型应用场景例如:用户使用证书登录时,调用证书核心服务进行CRL验证,并根据验证结果决定用户登录后具有的角色;银行网关在完成银行订单反馈确认与资金入账之后,请求前台应用进行业务分流处理,并根据业务分流的结果跳转到前台系统的特定页面;淘宝系统调用支付宝系统创建交易订单;二、异步服务请求模式这也是一种简单的服务协作模式。
服务的消费者向服务提供者发出服务请求,然后不等待服务提供者处理完成,就进行后续处理服务提供者自主地进行服务请求的业务处理,并且不返回结果给服务提供者为了使服务提供者的处理压力更平滑,提供处理的吞吐量,在服务消费者与服务提供者之间,一般通过ESB进行消息缓存与中转加入ESB之后的应用模式如下图所示:5:服务逻辑处理ESB进行中介的模目前在支付宝系统中使用的异步服务请求模式基本上都是后一种通过式支付宝系统中异步服务请求模式的应用场景例如:支付宝后台Farm中的bops服务器调用bopstask服务器进行长时间的对账处理;支付宝银行定时查询程序调用银行网关服务器进行自动意外数据恢复;支付宝应用调用可靠通知服务器进行立即通知发送;在异步服务请求模式,服务的消费者是有意识调用服务的,也明确知晓服务提供者的调用方法与服务语义因此,尽管异步方式使服务消费者与服务提供者在系统层面的耦合度更松,但在逻辑层面,双方还是具有耦合性的,当服务提供者的服务语义发生变化,或者调用接口发生变化,服务消费者也需要同时修改程序因此,在进行面向服务分析与设计时,也需要考虑是否有更好的替代方案,避免过多的点对点直接异步服务请求将使系统的拓扑成为难以管理的网络。
三、消息发布-订阅模式基于消息发布与订阅模式的服务协作模式是一种松耦合的服务协作模式在这种模式下,没有静态绑定的服务消费者与服务提供者关系存在,而是由消息总线根据业务集成逻辑,自动将服务消费者产生的消息转换并路由给多个感兴趣的服务提供者由于这种模式相对复杂,我们举一个例子加以说明假设消息发布者是交易系统它在处理完交易之后发布出一个标准消息,其中包含本次交易处理的结果,以及交易的主要情况发布完消息之后,交易系统进行后续处理ESB系统收到标准交易消息之后,根据配置进行消息的转换与分发:它将消息转换为沟通系统接收的消息格式,派发给沟通系统进行用户沟通(邮件、短信、IM的定制发送);它将消息转换为CTU系统要求的消息格式,派发给CTU系统进行风险审核;它将消息转换为可靠消息通知服务器要求的消息格式,派发给通知服务器进行商户的交易状态通知由于运用了消息发布-订阅模式,交易系统就不再需要知道沟通服务、CTU服务与可靠通知服务接口的语义与调用方式了,甚至不需要知道存在这类系统,完全由消息总线通过配置或相对少量的编码工作完成服务间的协作工作未来再需要增加新的消息订阅者,比如收费服务,交易系统仍不需变化。
消息发布-订阅模式目前在支付宝系统中尚未得到运用,但由于ESB总线作为基础设施已经搭建完成,业务服务之间的关系也正在渐渐理顺,因此有机会将目前存在的不少异步消息请求模式转换为消息发布-订阅模式,降低支付宝系统的服务之间耦合性在进行面向服务的分析与设计时,建议尽量运用这种模式解决业务流程中服务的协作问题3)支付宝远程调用使用场景在本节中,我们归纳支付宝系统中目前常用的远程调用场景这些场景不是一个穷举的清单,而是尽量只列举有实际应用价值的场景;对于一些未来有用但现在尚未分析清楚的远程调用场景,本列表也未包含,比如Farm间消息广播等,这些将在后续的工作中进行探讨与改进应用场景调用模式场所Farm间服务调用内部系统请求-响应Farm间Farm间消息通知内部系统只XFarm间Farm内消息通知内部系统只XFarm内外部合作服务调用外部系统请求-响应跨防火墙一、Farm间服务调用Farm间服务调用是指由一个Farm中部署的应用请求另一个Farm中部署的服务,并且等待取得返回结果之后,再进行后续处理Farm间服务调用的典型例子有:前台Farm处理证书登录时,调用数据证书核心Farm检查CRL;银行网关Farm处理网银支付结果时,调用前台Farm提供的业务分流服务(即将改造成这种形式);银行网关Farm处理卡通支付时,调用核心银直通服务器提供的银行直通服务(即将改造成这种形式)。
CTUFarm在处理充值退回时,调用后台Farm的充值退回服务;二、Farm间消息通知Farm间消息通知是指由一个Farm中部署的应用构造一条消息,并发送给另一个Farm中的服务;消息的发送方不等待接收者响应就进行后续处理Farm间消息通知的典型例子有:前台Farm在完成用户登录处理之后,向CTUFarm提供的风险控制服务发送登录事件消息;后台Farm在完成用户关键信息变更之后,向前台Farm的用户快照服务发送用户信息变更消息;CTUFarm在完成交易处理之后,向前台Farm提供的可靠消息通知服务发送通知请求消息;论坛Farm在发布帖子之后,向前台Farm提供的沟通服务发送沟通消息三、Farm内消息通知Farm内消息通知是指由Farm内一台机器上部署的应用构造一条消息,并发送给同一个Farm内另一台机器上的服务进行处理;消息的发送方不等待接收者响应就进行后续处理之所以需要在一个Farm内引入分布式处理,主要是为了将长时间操作转移到特定的服务器上进行异步执行,以保证负责处理用户交互的服务器有足够的资源快速处理用户请求Farm内消息通知的典型例子有:前台Farmpay服务器向前台Farmpaytask服务器提供的沟通服务发送事件通知,实现邮件、短信或IM消息的定制发送;后台Farmbops服务器向后台Farmbopstask服务器提供的对账处理服务发送事件通知,实现长时间对账处理的异步执行;前台Farmpay服务器向前台Farmpaytask服务器提供的用户快照服务发送用户信息变更消息,以异步变更用户快照;四、外部合作服务调用外部合作服务调用指支付宝系统与外部系统之间的相互调用。
目前的典型例子有:淘宝系统调用支付宝系统创建交易;支付宝系统调用淘宝系统通知交易状态变更;阿里巴巴调用支付宝系统获得会员信息;外部系统调用支付宝外部接口产品;淘宝CRM系统调用支付宝CRM系统转发小记4)支付宝系统远程调用技术现状支付宝系统中目前使用的远程调用技术主要有以下几种:、直接HTTP/HTTPS这是一种直接通过HTTP协议传递调用参数与返回值的方式根据参数与返回值的复杂程度不同,这种方式又有以下两种主要变体:参数形式返回值形式例子QuerystringQuerystring淘宝创建交易接口QueryStringXML外部统一接口产品系列其中,QueryString是指下面形式的参数或者值的表示:Key1=value1&key2=value2XML是指下面形式的参数或值的表示:
