小戴
作者小戴·2019-03-26 09:16
软件开发工程师·某金融企业

银行核心系统之技术架构(一)

字数 4581阅读 7222评论 0赞 9
中国银行业经过40多年的发展,经历了一代又一代的变更,从手工到自动化处理,从主机到开放平台,从PC单机系统建设到应用系统联网处理,从分散式系统架构到集中式系统架构...而银行核心系统作为最基础的支撑、最重要的核心,提供着适应变革所需的必要条件。
为方便表述,我姑且将银行核心系统的技术架构演进过程分为三个时代:主机时代、集群时代和分布式时代。了解技术架构演进过程及其优缺点,有助于我们从中学习经验、吸取教训、或提出更合理的需求,所以我们有必要聊聊。
若有不足之处,还望指正,促进交流。

1、此文适合人群:

银行运营管理人员、解决方案架构师、系统工程师、技术爱好者。

2、此文解决问题:

对新人来说,学习完后对银行系统技术架构有初步认识,能清楚需要掌握哪些方面的技术,有助于个人的技术积累。对职场人来说,每个时代的技术架构都有值得我们细细品味、去学习、去模仿、去借鉴的地方,同时能扩展我们的知识面。

3、此文分为三部分:

一、主机时代
二、集群时代
三、分布式时代

1、主机时代

大型机(Mainframe),又称为大型机、大机或主机,自从20世纪60年代被发明出来以后,凭借其超强的计算和I/O处理能力,以及在稳定性和安全性方面的卓越表现,引领了计算机行业以及商业计算领域的发展。从美国“阿波罗登月计划”的成功,到天气预报、军事科学的发展,以及全球金融业、制造业商业模式的变换,无一离得开大型机的功劳。在银行业,数以亿计的个人储蓄账户管理、丰富的金融产品提供都依赖大型机;在证券业,离开大型机和无纸化交易是不可想像的。

并行系统耦合体(Parallel Sysplex)是大型机最具有代表性的特性,是一种集群技术。可以将一台或多台机器组成Sysplex,用于跨系统(LPAR)的通信联络。支持大型机节点不停机的情况下动态加入集群,最多支持32个LPAR资源共享的读/写,并行计算和数据恢复。

由于大型机在构建银行核心系统上具有明显的优势,如很强的联机交易和批处理能力、极高的可靠性和可用性、完善的备份和灾难恢复能力、优秀的扩展能力,使得那时的IT系统快速进入了集中式处理阶段。即应用系统、中间件、数据库服务等资源集中在一台Server上,此种架构通常称为单体架构。

(1)单体架构

银行核心系统建设初期,好比团队初创期,资源有限,人力不足,为了快速开发一个产品,或上线一个网站,单机+备份机系统架构往往是一个不错的选择。以热备用方式为例,一旦生产主机发生故障,便会自动切换到另一台备用主机接替服务。

npoc9z2yobk

npoc9z2yobk

小白科普
双机冷备:所有的外设通道需切换到备用主机上,备用主机开始电源上点后,再启动操作系统、软件子系统和应用系统,才可以实现故障节点工作的接管以恢复生产。

(2)操作系统(z/OS)

大型主机有别于我们常见的个人电脑、服务器或小型机,它的操作系统z/OS也与常见的Windows、Linux或UNIX操作系统大不相同。z/OS是IBM大型主机运行的操作系统,是 IBM 为其最新的大型机 z/Series 专门推出的操作系统,是在OS/390 操作系统基础上发展起来的。对于大部分从事计算机相关行业的人来说,可能仅听说过,对其各种技术还不甚了解。

大型机的操作系统z/OS最适合处理大负荷和多并发用户,处理大I/O吞吐量的计算,具有全面的安全性的工作负载。例如,能同时服务成千上万个用户的联机应用程序。z/OS的系统工具和操作环境如下:

8qmkha2sj0d

8qmkha2sj0d

地址空间是在操作系统启动初始化后自动创建的,主要用于描述对于联机用户或运行程序的可用虚拟地址范围。一个运行的z/OS系统上会存在很多个地址空间,如JES,SMS,User Address等,在不同的地址空间中的私有区域都是相互隔绝的,当然,每一个地址空间也包含了一个可以被其他地址空间访问的公共区域。

物理存储分为实存和外存(AUX)。实存也称为实际存储或中央存储,比如硬盘驱动器和磁带驱动器,在数据从实存中取出之前处理器必须等待。外存是一种异步访问的方式,处理器通过I/O请求访问外存,这个I/O请求根据系统中其他任务的要求按照预定时间运行。在z/OS中是通过页面调度来使程序和数据在实存和外存之间移动的。

操作员通信主要用控制台启动和终止z/OS、输入命令和管理操作系统,及操作员与z/OS系统进行交互来监督或控制硬件和软件的运行。总之,z/OS提供了一系列的操作工具,用于安全、恢复、数据完整性、工作负载等方面的管理工作。

(3)命令输入处理器TSO

TSO(Time Sharing Option)是主机操作系统的命令输入处理器,从终端登录之后,使用TSO命令的形式操作和管理主机上的资源和应用,相当于WINDOWS系统的DOS。可以看成是命令输入的平台。

iwoclbay5dj

iwoclbay5dj

上图描述了TSO环境与操作系统及其他系统组件的关系。我们可以看到,TSO是在操作系统的管理下,用来支持ISPF菜单式会话系统和资源管理设备(RMF)的。而应用程序及系统提供的各种工具则是在ISPF的支持下,完成各自的任务。

(4)编程语言COBOL

COBOL(Common Business Oriented Language)是一门面向对象的编程语言,主要应用于主机平台,早前许多银行、保险、金融业的系统都会使用COBOL开发,语法接近自然语言(英语),格式固定,结构严谨,层次分明,上手和维护起来相对来说很容易,经常会见到一个程序修修补补的用十好几年。

下图是COBOL中MOVE语句赋值的对齐原则,数值靠左、字符靠右。写过COBOL的小伙伴们,看起来是不是特别亲切呢。

xb6szaj9lxn

xb6szaj9lxn

(5)数据库管理系统DB2

DB2数据库在结构和原理上属于关系型数据库,与IMS同为IBM公司开发,属于主机OS/390操作系统的一个数据库管理子系统。主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下,包括基于UNIX的LINUX,HP-UX,SunSolaris,以及SCOUnixWare等。

DB2数据库对数据的组织和管理是以表(Tables)为最基本单位,表是存放于表空间(Table Space)中,一个表空间可以有N个表,表空间存放于数据库(database)中,一个数据库可以有N个表空间,数据库存放于存储组 (Storage Group)中,一个存储组可以有N个数据库。

在DB2 UDB z/OS环境下,来自不同数据库的表可以结合起来使用,没有任何限制读取来自两个或多个数据库中的数据,并支持多任务并行查询,对大型分布式应用系统(如大型机集群)尤为适用;在分布式运用上,DB2 UDB支持分布式工作单元(DUOW),即所谓的两阶段提交(two-phase commit),可供应用读取或更新多个数据库中的表。

最近和同事聊到改善系统性能的话题,有提到数据库、分区分表、表结构设计、索引、行标识(ROWID)等,因为没有深入了解所以基本都是东说一点西说一点。正好借此机会梳理下好吹吹牛,查阅了《IBM大型主机一本通》,我们先来看看在DB2中的表分区和ROWID游戏规则。

小白科普
分区(Partitioned):
1.分区表空间将数据分配到不同的数据集,即分区中以避免分区之间的竞争。
2.每个分区对应一个数据集,每个分区只可以包含一个表。
3.每个分区表空间可以有254个分区,每个分区可以有64GB的存储空间。
4.每个分区都可以有自己的属性,比如存放卷名和自由空间等。
5.每个分区对应的数据集可以跨盘。
6.每个分区可单独处理也可多个区同时处理。
7.REORG、COPY、RECOVER可以在分区表空间级别上进行。
8.常用的例子是,一家跨国银行有中国、美国和德国分行,可以将每个分行放到一个分区中,用一套程序去处理,不同行只要知道他们的分区好就行了,能大大简化系统复杂性。
行标识(ROWID):
1.ROWID是DB2生成用来唯一标志记录在表中物理位置的一个标示符(ID)。
2.每个表只能用有一个ROWID列。
3.ROWID列的初始值为空值。
4.ROWID通常简写为RID。
5.GENERAYE函数中指定ALWAYS,是当插入新行时总是生成一个ROWID;指定BY DEFAULT是当插入一个新行到表中时,如果没有指定ROWID类型列的值,系统就会为它生成一个值。

(6)中间件CICS

CICS(Customer Information Control System)是IBM公司的一个事务处理平台软件,在银行核心系统中属于中间件,主要是为商业应用提供联机事务处理和事务管理功能。它构建的是一个三层次结构的应用系统,能有效地区分应用系统中的表述逻辑层、业务逻辑层和数据逻辑层,从而使应用系统结构清晰,维护简单易行。

CICS Transaction的模块结构分为:系统管理模块、系统控制表、系统控制块。

系统管理模块是CICS 的系统控制程序,充当操作系统和应用程序之间的接口,每一个管理模块完成一个特定的功能;系统控制表就如同WINDOWS的注册表一样,由相应的管理模块控制使用,用以定义、描述每个交易的相关信息,当CICS启动时会建立一个TASK,并在CICS的地址空间里(Address Space)建立了这些表并保留到CICS结束;系统控制块是指CICS启动后,在其地址空间(Address Space)中有很多具有特定功能的存储区域,主要用来跟踪、控制正在处理的各个事务。

CICS事务处理流程如下:

1ecvwy217hx

1ecvwy217hx

名词解释
终端管理(TCP):提供用户终端和应用程序之间的通信。
终端控制表(TCT):定义CICS系统的终端环境,每一个终端都必须在表中有一入口,提供一些有关终端的参数(名称、地址、类型、状态等)。
程序管理(PCP):管理系统中各应用程序间的控制确定程序的位置,并将程序加载到CICS分区。
程序控制表(PCT):定义CICS系统的事务环境,包括CICS用来标识和启动程序所需的控制信息。
任务管理(KCP):控制CICS TS分区内部CPU的使用、建立任务并实现多个任务的并发执行。
任务控制区(TCA):当启动一个事务时,由任务管理KCP建立,包括一些指针,指向与该任务有关的所有存储区。
文件管理(FCP):控制所有文件的I/O操作。
文件控制表(FCT)):定义CICS系统中的文件及数据库环境,提供文件的有关信息,如文件名、存取方式和文件结构、记录格式、处理要求等。
存储管理(SCP):控制系统及应用程序所使用的虚存,分为静态和动态两种。静态分配是启动分配并保留到CICS结束,动态分配是根据请求来获得或释放的。

总结

在主机时代,基于银行这个特定的商业环境、针对银行核心这类交易型业务的开发场景,主机这种集中式架构极大的简化了开发、测试、灾备环境的部署,应用开发人员无需考虑系统级功能的实现而只需关注业务功能的实现或创新,但是使用成本高、封闭。随着互联网的兴起,JAVA语言的广泛应用,去“IOE”运营,国内银行逐渐接受基于JAVA开发的银行核心系统,基本都备集群化部署、服务化的架构设计......下期预告:集群时代


本文作者:代堂鸣

本文转自公众号:小代嘚吧嘚

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

9

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广