李朝晖
一直以来,商业银行主要基于大中型主机、以集中式架构构建其业务系统,这种架构具有技术成熟、系统可靠、应用实现相对简单等优点,同时也存在核心技术由国外供应商所垄断、系统投入成本高等缺点。随着开放平台处理能力的大幅提升、高速网络技术的日益成熟,以及云计算、分布式存储等新技术的快速发展和应用,基于开放平台、采用分布式架构建设业务系统,由于具有成本低、易扩展、自主可控等优势,也成为商业银行架构转型的趋势。
分布式业务系统建设历程
中国邮政储蓄银行(以下简称“邮储银行”)是在改革原有邮政储蓄管理体制基础上设立的一家大型国有商业银行。2007年邮储银行成立后,业务应用的开发延续了之前基于开放式平台的技术路线。随着商业银行业务的全面开展、业务量的快速增长,以及应用系统全国集中建设模式的不断推进,如何构建满足大业务量、高并发量、高可用性、可扩展性、灵活开放的银行业务系统,成为邮储银行面临的课题。针对我行信息化历史包袱小的实际情况,经过充分论证和实践验证,积极探索和经验总结,邮储银行以开放式平台为基础,采用分布式架构,使用小型机并大规模应用PC服务器组建集群等技术,形成了独具邮储银行特色的分布式系统架构模式。
经过10年的发展,邮储银行已建设并在線运行100多个应用系统,这些系统全部采用分布式架构建设,其中除部分涉及账务处理的应用基于小型机分布式集群构建外,超过80%的应用系统基于PC服务器集群构建。截至2016年年底,邮储银行基于分布式的业务系统支撑了全行近4万个网点、5亿多客户的稳定运营,日峰值交易量超过1.5亿笔,较好地满足了业务快速发展的需要。
另外,在云计算技术应用方面,邮储银行基于OpenStack开放云平台技术构建私有云,先后在渠道管理平台、互联网网贷、移动展业等生产系统进行部署和应用。目前,云平台交易占比已超过全行交易量的30%。通过云计算技术的应用,极大地提高了资源利用率,提升了系统资源扩展性,有效应对了突发性的交易压力。
分布式业务系统架构模式
相对于集中式架构,分布式业务系统具有功能分散、交互关系复杂、处理能力不平衡等特点,因此对于系统的总体性能提出了更高要求。同时,由于采用分布式架构,必然面临CAP理论的约束,即一致性、可用性、容错性三者不可兼得。但作为银行业务应用,三者又都不能忽视,如何取舍和补偿以满足业务要求,也是分布式业务系统所面临的严峻问题。邮储银行在信息化建设过程中,为解决生产系统中存在的性能瓶颈,提高系统高可用性,满足一致性、容错性要求,摸索了一系列行之有效的方法和措施,并在应用过程中不断完善。
性能保障措施
在保证系统性能方面,通过分离处理功能、分散处理压力、优化数据结构、扩展处理能力等措施,提升分布式业务系统的总体性能。
分离处理功能是在分布式业务系统中,将与业务处理过程耦合度较低的处理功能进行分离,减少单位硬件平台上的处理压力,保障业务处理可以获取更多的处理资源,从而提升系统的整体处理性能。其中,包括依据性能影响分离和依据处理功能独立性分离两类。依据性能影响分离主要是针对性能影响的需要进行处理上的分离,如个人核心系统划分卡子系统、折子系统、参数管理子系统、日终处理子系统等;依据处理功能独立性分离是将一些功能独立、具备共享价值功能模块进行分离,如将个人核心系统的尾箱管理、现金与凭证管理、会计核算管理等功能,分离到独立的系统中。
分散处理压力是在应用设计中充分考虑应用架构对压力分散的助力,尽量杜绝跨数据库事务处理,通过对应用进行有针对性分离设计,以分散方式进行部署,充分发挥小型机集群、PC服务器集群特点,分散系统处理压力。其中应用设计上的分离包含两类,一类是处理流程的分离,即分离出性能瓶颈过程,降低与其他处理过程的耦合度,以提高其并行处理能力;另一类是处理功能的分离,减少单位硬件平台上的处理压力,充分利用硬件平台及系统软件的横向扩展能力,扩展系统整体处理能力。
优化数据结构主要是通过简化数据结构、删除冗余结构,实现数据存储的优化,提升整体处理性能。对数据结构进行简化,如流水日志存储的简化、流水内容的拆分和精简、字段长度的精简等,以及对冗余数据结构的适当删除,如对各类登记簿、流水日志冗余项的删除,提升数据存储及使用性能。简化数据存储的同时,还需兼顾处理性能设计的其他方面,如有冗余数据存储要求的处理过程需综合、全局地考虑其数据结构。
应用软件处理能力的扩展包括计算资源的扩展和应用软件处理能力的扩展。计算资源的扩展是基础,包括主机、存储、网络设施等资源;应用软件处理能力的扩展主要关注如何使应用架构可以平滑适应计算资源的扩展,并能充分利用扩展的处理资源来分担系统处理压力,进而达到整体处理能力扩展的目的。
可用性保障措施
高可用性是邮储银行分布式业务系统重点保证的另一属性,主要包括应用负载均衡、系统故障隔离、系统流量控制、数据分片等措施。
其中的应用负载均衡设计不同于普通集群架构下采用专用设备或中间件实现交易请求负载分发,而是探索一条相对独立的应用层实现交易路由控制的管理方法。具体实现机制是,应用层通过管理节点状态、交易处理情况等信息,采用轮询负载分发策略,并设置负载因子,由应用软件实现联机交易在系统内部各个子系统集群节点间的分发处理,达到节点间交易处理的均衡分派。
系统故障隔离机制可以在应用软件系统发生故障的时候,将故障造成的危害限制在最小范围内。通过应用软件设计中考虑应用服务、应用服务框架的灵活部署,从服务、交易、子系统到渠道层面设置响应的运行开关,通过对开关的控制,可以中止指定应用的运行,实现多角度、多层次的故障隔离。同时,通过对响应服务的启停,也支持对指定端口服务请求监听的停止。
系统流量控制基于分布式业务系统的逻辑架构,依据系统、子系统、渠道等不同层面的交易流量、交易状态和确定的控制策略、控制规则,对系统实施控制。基于应用软件的逻辑分层结构,在服务请求的统一受理端及处理流程中的关键环节中设计响应的流量控制机制,结合相关的设置,将系统流量控制中认为需要拒绝的服务请求直接拒绝,以达到逐层进行流量控制的目的,同时,也保障由于负载过重,新的自动启动的应用服务可以保持一定的处理流量。
一致性保障措施
在一致性保障方面,邮储银行的分布式系统主要包含补偿机制、SAF机制、对账与差错处理等措施。
补偿机制是对异常交易带来的数据不一致进行交易补偿。补偿机制与前端操作及提示相互配合,首先保障给出正确的收款或不付款提示,以便操作员进行正确的现金实物操作,避免资金风险。
SAF机制对系统间的通讯异常或处理异常提供交易保障。其中,业务系统支持渠道层系统发来的SAF处理请求,并负责在产品服务流涉及的所有子系统上完成SAF请求的处理。具体策略包括:在交易过程中通过SAF处理机制尽量保证交易的成功;定期针对未完成的SAF处理,自动发起SAF处理;每日日间营业结束后,针对未完成的SAF处理,自动发起SAF处理。