跨行清算系统的实现原理 最近看了很多银联方面的清算系统的设计原理,对于跨行清算系统有了很大的了解,写这篇文章的目的是在于从一个程序员的角度去思考一个跨行清算系统的架构是如何实现的以及整个过程中我们有哪些思想是可以借鉴的。由于金融里面涉及到太多的专业名词,包括借贷,备付金,头寸,调拨等等,这里不会涉及到这些,取而代之的是以大家可以理解的概念去解释。 下面简单的介绍一下两种跨行清算系统的实现原理以及特点。一种跨清算系统是我们最熟悉的银联,还有一种是越来越流行的第三方支付系统,比较典型的是快钱。 首先来拿生活中的一个非常常见的例子来说明跨行清算的整个过程,这里面不涉及交易费等其他概念。 跨行取款流程 张三是工行的持卡人,他需要取现金,但是找不到工行的ATM 机器,发现附近有建行的ATM 机器,他只能去建行取款,整个过程就是跨行清算的过程,我们以这个场景为例,分析一下业务流程,具体交互流程见下面一张图。 工行持卡人张三在建行ATM 机器取款100,ATM 请求建行主机,由于是工行的卡,建行不识别,只能请求工行去处理,工行识别持卡人账户并扣款100,然后通知建行,建行则通知atm 吐钱。 这里整个系统要解决两个问题: 1 建行如何与工行通信 2 建行和工行之间如何清算,如上图结果,工行欠建行100. 整个系统的分析基于以上两个问题,下面首先解决是通信问题 跨行通信的两种模式 我们先假设工行提供接口,只需要建行发送指约定格式的报文,即可于工行通信,这种相当于建行直接通过接口方式与工行通信。如果是这种方式,只能解决建行和工行的单向通信,如果工行和建行通信,则工行要发送建行指定的通信报文格式。可是大家想想,如果银行更多怎么办,下面是三家银行间的通信 当有三家银行的时候,通信链路就有 3*2= 6 条,当银行越来越多的时候,这种点对点的通信变的越来越复杂,每新增一家银行,他要做之前银行都要做的很多重复性的劳动,这样的成本非常高,也不经济,那么必须出现一个网络,它能够接入所有的银行,新的银行只需要接入这个网络,就可以和其他所有的银行进行通信。 先把这个网络成为通信网络,这种通信网络有两种方式可以连接所有的银行 • 1 这个通信网络定义标准接口,所有的银行都必须实现这个通信网络定义的ap i,新的银行如果想要接入这个通信网络,必须实现通信接口约定的协议。简称公共接口模式 • 2 这个通信网络主动去连接所有的银行的接口,把...