CICS 交易网关(CICS Transaction Gateway,以下简称 CICS TG)是 IBM 针对 CICS 交易服务器(CICS Transaction Server,以下简称 CICS TS)开发的高性能、高安全、高可用性和高扩容能力的接入方式。CICS TG 接受客户应用的请求,然后使用 TCPIP,EXCI 和 IPIC 等连接协议,以">负载均衡和动态选择 CICS TS 等高效方式,将应用请求通过 COMMAREA 或 Container/Channel 传递给选定的 CICS TS 进行处理,随后以同步或异步的方式将处理结果返回给客户应用。
CICS TG 为应用程序提供标准的 External Call Interface(以下简称 ECI)编程接口,支持 Java/J2EE、C/C++,.NET(VB,C#)等多种语言的应用程序。当客户应用通过 CICS TG 调用 CICS TS 中的交易时,首先建立一个和 CICS TG 的连接,然后使用连接调用 CICS TG 的 ECI 编程接口,处理结束后再释放连接。对于单个交易请求或较小规模的交易量,为每个交易进行连接的建立和释放不会导致效率问题,但可以预见的是随着交易规模的提升,频繁地为每次交易都创建和释放连接会极大地占用系统的开销,降低交易处理效率。因此,采用连接池来管理客户应用到 CICS TG 的连接,是 CICS TG 在支持高并发、高交易量的必然选择。
对于 J2EE 的应用,CICS TG 提供了在 J2EE 服务器(例如 WebSphere Application Server)中基于 J2EE Connector Architecture(以下简称 JCA)标准的连接器(adapter)。J2EE 应用通过调用 JCA 连接器的接口和 CICS TG 连接,发送交易请求和接收处理结果。CICS TG 提供的连接器基于 JCA 标准,因此 J2EE 服务器为 JCA 连接器和 CICS TG 之间提供高质量的连接池管理能力;而对于非 J2EE 应用,CICS TG 产品本身并不包含特定的功能模块来支持客户应用到 CICS TG 的连接池管理、或者利用运行环境中其他系统的连接池管理功能。
本文以 C/C++ 应用为例,介绍如何为非 J2EE 应用实现从客户应用到 CICS TG 的连接池管理。对于基于其他编程语言的应用,例如 VB、C# 等,原理是一致的。
产品和技术介绍
CICS 交易服务器
CICS 交易服务器(简称 CICS TS)是 IBM 针对 z/OS 的多用途事务处理软件。它基于 z/OS 和 System z 设施而构建,是一个强大的应用程序服务器,以较低的每事务成本来提供高可用性和可伸缩性,可满足大型企业和小型企业的事务处理需求。
CICS 交易网关
CICS 交易网关(简称 CICS TG)是 IBM 针对 CICS TS 开发的高性能、高安全、高可用性和高扩容能力的接入方式。相比于其它的 CICS TS 接入方式,CICS TG 拥有以下优势:
应用程序直接以 TCPIP 方式接入,无需 TCPIP 和 SNA 直接协议转换,调用路径短,提高效率和降低故障点 CICS TG 可以 EXCI(External CICS Interface)和 IPIC(IP interconnectivity)方式接入 CICS TS,比 TCP/IP 效率更高。其中 IPIC 可以把 java 负载转移到 zAAP(IBM System z
Application Assist Processor)处理器执行,提高 CP 的使用效率,减少 MIPS(Million Instructions Per Second)消耗 多个 CICS TG 可以组成高可用组(High Availability group),通过负载均衡和动态选择最佳的 CICS TS,进一步提高交易处理的响应效率,同时消除单点故障。此外,CICS TG 的高可用组始终对客户应用提供唯一不变的接入地址和端口,因此当向 CICS TG 高可用组中添加
新的 CICS TG 进行升级扩容时,客户的应用程序不会受到任何影响 CICS TG 支持多种编程语言接口 支持应用程序使用 Container/Channel 传递数据(克服 COMMAREA 的最大 32K 字节限制) 支持同步和异步调用,适用于单线程和多线程情况 可以利用连接池管理提高客户应用到 CICS TG 的调用效率
客户应用
本文提到的客户应用,是指一组满足如下特征的应用程序:
运行在 CICS TS 之外 通过调用 CICS TG 功能而向 CICS TS 发送交易请求,并从 CICS TG
获取交易处理结果 可以用任何编程语言实现
CICS 交易网关的部署和工作模式
CICS TG 支持多种操作系统平台、多种硬件平台、多种拓扑连接方式,因此有非常灵活的部署能力。下图描述了 CICS TG 的部署模式:
图 1.CICS 交易网关的部署工作模式
其中:
J2EE 应用:运行在 J2EE 服务器中,通过调用 JCA 连接器以 TCP/IP 方式连接 CICS TG。J2EE 的应用可以运行在和 CICS TG 不同或者相同的机器上,部署方式灵活。在这种模式下,J2EE 服务器提供客户应用到 CICS TG 的连接池管理,不需要实现额外的连接池管理。
Local 应用:客户应用运行在和 CICS TG 相同的机器上,通过调用 CICS TG 提供的本地模块(通常是动态加载和连接的程序库)直接和 CICS TG 传递数据。这种方式效率最高,且无需连接池管理。
Remote 应用:客户应用运行在和 CICS TG 不同或者相同的机器上,部署方式灵活,通过 TCP/SSL 的方式和 CICS TG 连接。这种方式需要实现单独的连接池管理。
在很多 CICS TG 客户的实际生产环境中,为了获取部署的灵活性,会采用 J2EE 应用和 Remote 应用。同时,由于许多客户都有大量传统的、非 J2EE 的应用,它们无法运行在 J2EE 服务器中。对于这部分应用,客户必须选择 Remote 应用模式,所以无法利用到 JCA 连接器和 J2EE 服务器提供的连接池管理功能,而必须实现单独的从客户应用到 CICS TG 的连接池管理。