在线事务处理 (OLTP) 系统直接与用户交互,是业务的外在形式。 借助可动态调整的基础结构,企业可以快速实现并推出其产品以取悦用户。
体系结构
下图显示了要迁移的工作负载的体系结构,即运行在 z/OS 大型机上的 OLTP 系统:
下载此体系结构的 Visio 文件。
工作流
以下工作流与上图相对应:
- 用户使用 TN3270 和 HTTPS 等标准大型机协议通过 TCP/IP 连接到大型机。
- 事务管理器与用户交互并调用应用程序以满足用户请求。
- 在应用层的前端,用户与 CICS/IMS 屏幕或网页进行交互。
- 事务管理器使用以 COBOL 或 PL/1 编写的业务逻辑来实现事务。
- 应用程序代码使用数据层的存储功能,通常是 DB2、IMS DB 或 VSAM。
- 除了处理事务之外,其他服务还提供身份验证、安全性、管理、监控和报告。 这些服务与系统中的所有其他服务进行交互。
在此处,我们看到了如何将此体系结构迁移到 Azure。
下载此体系结构的 Visio 文件。
大型机用户熟悉 3270 终端和本地连接。 在迁移的系统中,它们通过公共 Internet 或通过使用 Azure ExpressRoute 实现的专用连接与 Azure 应用程序进行交互。 Microsoft Entra ID 提供身份验证。
输入请求转到全局负载均衡器服务,例如 Azure Front Door 或 Azure 流量管理器。 负载均衡器可以服务于地理上分散的用户群。 负载均衡器根据为支持的工作负载定义的规则来路由请求。 这些负载均衡器可以与 Azure 应用程序网关或 Azure 负载均衡器协调,以实现应用层的负载均衡。 Azure 内容交付网络服务将静态内容缓存在边缘服务器中以实现快速响应,并使用 Web 应用程序防火墙 (WAF) 服务进行保护。
应用层的前端使用 Azure 服务(如 Azure 应用程序服务)来实现应用程序屏幕并与用户交互。 屏幕显示的是大型机屏幕的迁移版本。
应用层后端的 COBOL 和 PL/1 代码实现业务逻辑。 该代码可以使用 Azure Functions、WebJobs 和 Azure Spring Apps 微服务等服务。 应用程序可以在 Azure Kubernetes 服务 (AKS) 容器中运行。
内存式数据存储可加速高吞吐量 OLTP 应用程序。 一个这样的存储是内存式 OLTP,这是 Azure SQL 数据库和 Azure SQL 托管实例的一项功能。 另一个是 Azure Cache for Redis。
例如,数据层可以包括:
- 使用 Azure 存储服务实现的文件、表和 Blob。
- Azure SQL 系列中的关系数据库。
- PostgreSQL 和 MySQL 开源数据库的 Azure 实现。
- Azure Cosmos DB,一个 NoSQL 数据库。
这些存储保存从大型机迁移的数据以供应用程序层使用。
Azure 原生服务(如 Application Insights 和 Azure Monitor)将主动监视系统的运行状况。 可以使用 Azure 仪表板集成 Monitor 日志。
组件
此体系结构由多个 Azure 云服务组成,分为以下四种资源类别:网络和标识、应用程序、存储和监视。 以下部分描述了每个资源的服务及其角色。
网络和标识
- Azure ExpressRoute,它承载了本地基础结构与 Azure 数据中心之间的专用连接。
- Microsoft Entra ID 是一种多租户标识和访问管理服务,可以与本地目录同步。
- Azure Front Door 通过即时故障转移提供全局 HTTP 负载平衡。 它的缓存选项可以加快静态内容的交付。
- Azure 流量管理器根据你选择的流量路由方法来引导传入的 DNS 请求。
- Azure Web 应用程序防火墙有助于保护 Web 应用免受恶意攻击和常见的 Web 漏洞,例如 SQL 注入和跨站点脚本。
- Azure 内容分发网络 (CDN) 在边缘服务器中缓存静态内容以实现快速响应,并使用网络优化来改进对动态内容的响应。 如果用户群遍布全球,CDN 特别有用。
- Azure 应用程序网关是应用程序传送控制器服务。 此服务在第 7 层(应用程序层)运行,具有各种负载均衡功能。
- Azure Load Balancer 是第 4 层(TCP、UDP)负载均衡器。 在这个体系结构中,它为 Spring Apps 和 AKS 提供了负载平衡选项。
应用程序
- Azure API 管理支持发布、路由、保护、记录和分析 API。 你可以控制数据的呈现和扩展方式,以及哪些应用可以访问数据。 你可以限制对你的应用的访问,也可以允许第三方访问。
- Azure 应用程序服务是用于构建、部署和扩展 Web 应用的完全托管服务。 可以使用.NET、.NET Core、Node.js、Java、Python 或 PHP 来构建应用。 应用可以在容器中或在 Windows 或 Linux 上运行。 在大型机迁移中,前端屏幕或 Web 界面可以编码为基于 HTTP 的 REST API。 它们可以根据大型机应用程序进行隔离,并且可以是无状态的,以编排基于微服务的系统。
- WebJobs 是 Azure 应用程序服务的一项功能,在与 Web 应用、API 应用或移动应用相同的实例中运行程序或脚本。 对于实现可共享和可重用的程序逻辑,Web 作业可能是一个不错的选择。 有关技术信息,请参阅在 Azure 应用程序服务中使用 WebJobs 运行后台任务。
- Azure Kubernetes 服务 (AKS),这是一项完全托管的 Kubernetes 服务,用于部署和管理容器化应用程序。 AKS 通过将操作开销分流到 Azure,简化了 Azure 中托管 AKS 群集的部署。
- Azure Spring Apps 是一项完全托管的 Spring 服务,由 Microsoft 和 VMware 共同构建和运营。 利用该服务,你可以轻松部署、管理和运行 Spring 微服务,并使用 Java 或 .NET 编写 Spring 应用程序。
- Azure 服务总线是一种可靠的云消息传递服务,可以实现简单的混合集成。 服务总线和存储队列可以将前端与迁移系统中的业务逻辑连接起来。
- Azure Functions 提供了一个无需建立应用程序基础结构即可运行小段代码(称为函数)的环境。 可将其用于处理大量数据、集成系统、使用 IoT 以及生成简单的 API 和微服务。 借助微服务,你可以创建连接到 Azure 服务并始终保持最新状态的服务器。
- Azure Cache for Redis,它是一种完全托管的内存中缓存服务,用于在计算资源之间共享数据和状态。 其同时包含开源 Redis (OSS Redis) 和 Redis 实验室的一款商业产品 (Redis Enterprise) 作为托管服务。 要提高高吞吐量 OLTP 应用程序的性能,可以将其设计为进行扩展并使用内存式数据存储(如 Azure Cache for Redis)。
存储
- Azure 存储,它是适用于数据、应用和工作负载的一组云服务,可以大规模缩放,并且很安全。 其中包括 Azure 文件存储、Azure 表存储和 Azure 队列存储。 Azure 文件存储通常是迁移大型机工作负载的有效工具。
- Azure SQL 是一系列 SQL 云数据库,可为应用程序迁移、现代化和开发提供灵活的选项。 产品系列包括:
- Azure Cosmos DB 是完全托管的 NoSQL 数据库服务,具有适合于任何 MongoDB 和 Cassandra 的开源 API。 可能的应用程序是将大型机非表格数据迁移到 Azure。
- Azure Database for PostgreSQL 是一个完全托管、智能化且可扩展的 PostgreSQL,与 Azure 服务具有本机连接。
- Azure Database for MySQL 是一个完全托管且可扩展的 MySQL 数据库。
- 内存式 OLTP 是 Azure SQL 数据库和 Azure SQL 托管实例的一项特征,可提供快速的内存式数据存储。 有关技术信息,请参阅通过使用 Azure SQL 数据库和 Azure SQL 托管实例的内存技术来优化性能。
监视
- Azure Monitor 收集、分析和响应来自 Azure 和本地环境的个人数据。
- 日志分析是 Azure 门户中的一个工具,用于使用强大的查询语言查询 Monitor 日志。 你可以交互地处理查询结果,或者将它们与其他 Azure Monitor 功能(例如日志查询警报或工作簿)一起使用。 有关详细信息,请参阅 Azure Monitor 中的 Log Analytics 概述。
- Application Insights 是 Monitor 的一项功能,提供对应用程序使用情况、可用性和性能的代码级监视。 它可以监视应用程序、检测应用程序异常(例如性能平庸和故障),以及将个人数据发送到 Azure 门户。 还可以使用 Application Insights 进行日志记录、分布式跟踪和自定义应用程序指标。
- Azure Monitor 警报是 Monitor 的一项功能。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理指标警报。
方案详细信息
随着业务需求和数据的不断发展,应用程序必须也随之生成和扩展,并且不能产生基础结构问题。 此示例工作负载展示了如何使用 Azure 平台即服务 (PaaS) 服务,来将 z/OS 大型机 OLTP 应用程序迁移到云中安全、可缩放且高度可用的系统。 这种迁移有助于金融、健康、保险和零售业的企业最大限度地缩短应用程序交付时间,并有助于降低运行应用程序的成本。
可能的用例
此体系结构非常适合具有以下特征的 OLTP 工作负载:
- 服务于国际用户群。
- 其使用情况会随着时间出现很大变化,因此灵活的缩放和基于使用情况的定价对这些工作负载非常有益。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可靠性
可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性支柱概述。
- 此 OLTP 体系结构可以部署在多个区域,并且可以具有异地复制数据层。
- Azure 数据库服务支持区域冗余,并且可以在发生中断时故障转移到辅助节点,或者允许进行维护活动。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
- ExpressRoute 可创建从本地环境到 Azure 的专用连接。 你也可以使用站点到站点 VPN。
- Microsoft Entra ID 可以使用 Azure 基于角色的访问控制对资源进行身份验证和控制访问。
- Azure 中的数据库服务支持各种安全选项,例如静态数据加密。
- 有关设计安全解决方案的一般指导,请参阅安全支柱概述。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
使用 Azure 定价计算器估算实施成本。
卓越运营
卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅卓越运营支柱概述。
- 此方案使用 Azure Monitor 和 Application Insights 来监视 Azure 资源的运行状况。 可以设置警报进行主动管理。
- 有关 Azure 中的复原能力的指导,请参阅设计可靠的 Azure 应用程序。
性能效率
性能效率是指工作负荷能够以高效的方式扩展以满足用户对它的需求。 有关详细信息,请参阅性能效率要素概述。
- 此体系结构使用 Azure PaaS 服务,例如具有自动缩放功能的应用程序服务。
- 有关 Azure 中自动缩放的指南,请参阅自动缩放。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Ashish Khandelwal | 首席工程体系结构经理
- Nithish Aruldoss | 工程架构师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 有关详细信息,请联系 datasqlninja@microsoft.com。
- Azure 数据库迁移指南
相关资源
请参阅以下相关体系结构和相关的技术信息:
相关体系结构
- 大量分批事务处理
- 使用 Avanade AMT 进行 IBM z/OS 大型机迁移
- Azure VM 上的 Micro Focus Enterprise Server
- 将 IBM z/OS 大型机耦合设备 (CF) 重构到 Azure
- 大型机对 Azure 数据库的访问
- 在 Azure 中复制和同步大型机数据
- 通过 TmaxSoft OpenFrame 将 IBM 大型机应用程序迁移到 Azure