适宜读者:(一年及以上CICS经验)
背景知识:(CICS基础知识)
写在这个系列连载的开头
笔者于2010年加入IBM中国开发实验室,有幸从事CICS的L3支持和开发等工作 。从第一个COBOL版本的Hello Word开始,到近期在CICS里开发集成复杂的JEE7应用平台;从每天将事务(交易)挂在嘴边并不假思索在CICS里定义TRANSACTION资源,到认真思考事务的本质、分布式和集中式架构下事务支持的区别;从第一次去客户现场讨论系统升级的沉默无言,到从容面对各种客户问题与架构设计;我不断加深了对CICS这款IBM王牌中间件产品的理解和认识,也深深痴迷于在线事务处理(OLTP)这项技术。
经常有朋友问我这样的一个问题,CICS到底是做什么的,为何很多企业的关键应用开发和运维离不开CICS,CICS具体提供哪些关键功能。接下来,我会尝试用自己尚且粗浅的认识来聊聊CICS的那些事儿,由于水平有限,难免有理解偏颇甚至错误,还望读者多多包涵并不吝指正。
CICS从何而来
CICS全称Customer Information Control System,于1966年始于美国Illinois开发中心,为公共服务领域设计,管理客户信息,CICS的名称也由此得来。1968年,CICS的第一个版本正式发布,正式名称是PU-CICS(Public Utility Customer Information Control System)。之后IBM很快发现CICS可以应用更广泛的领域。1974年,CICS开发正式转移到英国Hursley实验室,CICS的辉煌与传奇从此开始。2005年之后,中国开发实验室成立CICS研发和三线支持(L3)团队,开始与英国Hursley实验室合作,研发并服务于CICS的 主机平台版本(CICS TS for z/OS)。目前中国开发团队也参与了CICS开放平台版本(TXSeries)的研发及服务工作。
在CICS的早期设计开发过程中,开发团队曾与牛津大学紧密合作,产生了大量的创新,并获得英国最高的商业大奖Queen's Award。Queue’s Award旨在表彰英国企业或者组织在全球商业开发,科技创新等领域的杰出贡献。据说CICS之前获得Queen's Award的科技类的项目只有磁盘的发明。
计算机世界(Computer World)在2002年将CICS列为改变世界的35种科技发明,原文如下:
“26. CICS. IBM's Customer Information Control System, introduced in 1968, is the most important mainframe transaction-processing software in the world. IBM claims that 30 billion CICS transactions (a unit of measure equivalent in scope to Web site hits) are executed worldwide each day. Today more than 30,000 organizations use CICS to serve about 30 million users worldwide. ”
事务处理与关系型数据库泰斗 Jim Gray(因此领域杰出贡献获得图灵奖)曾在其巨著《Transaction Processing: Concepts and Techniques》中给予CICS很高的评价:
“The most successful of these was (and still is) IBM’s Customer Information and Control System(CICS)”.
开源项目Wildfly (JBoss) 事务处理模块Narayana负责人Mark Little曾在著作《Java Transaction Processing》肯定了CICS在TPM(Transaction Processing Monitor)领域的开创地位:
“Companies such as IBM were quick to realize that this same kind of technology could be applied across other industries. From that epiphany came CICS, which originally was written entirely in assembler with rudimentary database capabilities.”
在CICS 5.3版本发布之后,CICS实验室模拟零售业业务类型做了一次基于z13平台的性能测试,数据操作基于VSAM文件系统。测试结果如下:
应用规模 |
核心处理器(CP) |
每秒交易量(TPS) |
小规模应用 |
18 |
17.40K |
大规模应用 |
26 |
22.79K |
如果z13性能全开,CICS可以处理超过1.25M的TPS。如果您对具体的测试感兴趣,可以访问如下地址获取IBM官方测试报告:
http://www.redbooks.ibm.com/redbooks.nsf/RedpieceAbstracts/redp5320.html?Open
CICS扎根中国
CICS在全球拥有超过2000家客户,几乎覆盖政府、证券、银行、零售、医疗等所有行业领域。很多人将CICS比喻成基于主机系统构建的银行IT的大脑,世界范围内来看财富500强里大部分的银行都将核心业务逻辑,例如核心银行和信用卡系统,运行于CICS之上。同样,CICS主机版本在中国的银行IT领域扮演了极为关键的作用。
CICS在中国也取得很大的成功,获得客户的认可。目前国内有12家银行选用CICS主机平台版本运行他们的核心业务,其中包括工农中建交五大行以及中国人民银行。所以,如果您拥有这12家银行的借记卡或者信用卡的时候,你从手机,ATM,POS等途径发起的任何一笔刷卡,转账或取款,CICS都在默默的为您服务,保证您的金融安全。特别是在每年的双十一和春节等交易高峰,CICS在极高的并发下表现优异,赢得了银行客户的信任与称赞。下面是来自中国银行和建设银行的成功案例。
CICS定位概述
首先CICS是中间件产品,市场习惯性把CICS归入TPM的范畴。CICS曾将自己定义为TS(Transaction processing Server)和AS(Application Server)。
TS与TPM基本相同,强调对OLTP(Online Transaction Processing,在线事务处理)的支持。OLTP是企业级负载中非常重要的类型,相较于OLAP(Online Analytical Processing)来讲,更加适合与集中式架构。
要搞清楚OLTP,首先要理解事务(Transaction)。事务是计算机信息系统中的一系列操作的集合,这个集合中的操作被作为事务被提交(Commit)亦或回滚(Rollback)。事务提交之后,其操作的效果才能生效,即可以被外界正常使用。一旦回滚,所有操作的效果必须被退回到事务开始前的状态,就像所有操作未曾发生过。简单来讲,事务要么整体成功,要么整体失败,不能有中间状态。举一个简单的例子,小张从自己的账户转账1000元到小李的账户,如果将这个过程中的操作集合定义为事务,那么所有操作需要整体完成,或者整体回退,不能小张账户减了1000,而小李的账户不变。Jim Gray在1970年代定义了事务的四种特性,ACID,即原子性(Atomicity), Consistency(一致性), Isolation(隔离性)以及持久性(Durability)。事务处理的核心技术包括事务的并发调度,锁管理维护,事务级别的内存隔离保护,两阶段提交一致性算法,事务数据日志的持久化等。对事务尤其是分布式事务的ACID的保证正是以CICS为代表的TS需要提供的基础功能。在保证ACID的事务处理情况下,安全性,高并发,强稳定(7*24),高可用,扩展性以及负载均衡等企业需求则是决定TS是否优秀的关键。近些年来,很多互联网提出了一种ACID的替代方案BASE,其核心思想在于牺牲强数据一致,追求最终一致,通过分布式架构,获得高扩展性,甚至降低成本。BASE可以理解成为对传统的事务的一种扩展,甚至是颠覆。ACID还是BASE,集中式还是分布式,笔者认为这是由业务类型决定的,在这里就不进一步展开了。
那我们再回到OLTP,OL决定事务的处理需要与前端进行交互,事务需要在一定的时间内完成。在银行的场景下,OLTP往往由ATM,POS,柜员终端以及近些年兴起的智能设备等发起,在CICS中产生事务,事务的响应时间往往要求在100ms这个量级。
事务处理中,除了OLTP,另外一种负载就是批量处理(offline batch),批量常常在交易量最小的情况下进行,一般都在夜间,由企业自己发起,大批量高效的处理内部数据。因为批量运行期间,事务中的数据访问会被锁住(锁的类型与交易隔离性的等级有关),机器的性能很大程度上决定了批量窗口期的长短。主机平台在这个领域极具优势。这里就不多加赘述了。
在TPM的市场领域,CICS占据了绝大多数市场份额 。CICS的主要竞争对手不得不提Tuxedo。Tuxedo借助Oracle 数据库在X86分布式平台的优势,积累了大量的客户,也是一款非常优秀的TPM。
CICS除了TS/TPM的定位以外,由于自己的事务中间件属性,不可避免成为应用与系统的桥梁,所以CICS的另一重要属性就是AS。CICS作为AS,让应用开发人员全身心投入到业务逻辑之中,而无需担心事务,并发控制,内存管理,文件管理,安全,日志等一系列问题。CICS提供了大量API,极大的方便了应用开发。如果说CICS做TPM是高调的,那么CICS做AS,则非常“低调”。笔者发现大量的应用开发人员并不知道他们的应用运行在CICS上,因为CICS的事务处理,并发处理,安全控制等特性对应用人员完全透明。
市场的AS产品往往针对某种特定的语言。例如最为常见的JEE AS,包括WAS,WebLogic,Glassfish,Wildfly等。CICS则是一种多语言支持的AS产品,支持的语言包括:COBOL,C/C++,PL/I, Assembler, PHP, Groovy以及Java。
COBOL一种为商业定制的过程性语言,据说目前世界上90%左右的核心银行系统仍然是COBOL开发的。CICS为COBOL提供非常强大的在线Debug和PD(问题诊断)支持。
从CICS TS 5版本开始,CICS通过内置WLP(Websphere Liberty Profile),全面支持JEE。Liberty是WAS的轻量级版本,摒弃了传统WAS略为臃肿的企业级特性,以模块化的方式支持最新的JEE标准。试想一下,将轻量级JEE容器放在CICS中,由CICS提供事务,安全,扩展性,高可用,稳定性等一系列企业级需求,并由CICS提供JEE应用与传统COBOL应用(或者C等)的具有事务属性的本地调用/远程调用(Transactional RPC)。以笔者的水平来看,集成WLP是个天才而且大胆的想法,并使得CICS成为了一流的AS。CICS的JEE支持也给现有的应用改造提出了方向与可能。COBOL作为曾经无比辉煌的商业语言,其活力下降已是公认的事实,以JEE, GOLANG, SWIFT为代表的新型语言将不可避免的利用越发强大的硬件以及其优越的生态,慢慢取代COBOL,成为企业级应用的骨干。上层是灵活开放的开发生态,中间是高效稳定的企业级容器,底层是强大的主机平台,这也许是一种最佳的组合。在笔者看来,在TPM技术已然非常成熟的今天,一流的多语言AS正是CICS的未来。
未完继续
那么CICS具体提供了哪些特性?CICS的事务管理到底有何精妙?CICS作为JEE AS与主流JEE AS有何不同?笔者将在后面的连载中一一阐述。非常欢迎各位读者提出您感兴趣的话题,甚至提出质疑,笔者必将认真听取。
作者:周北春
邮箱:beichunzATcn.ibm.com(替换AT为@)
内容声明:本文仅代表作者的个人观点,与IBM立场、策略和观点无关。文中专业名词因翻译原因,表述中难免存在差异。如有疑惑,请以英文为准。同时数据来源于实验室环境,仅供参考。如果您对我们的话题感兴趣,请通过电子邮箱联系我们。