使用 Azure 数据工厂,可以创建灵活而强大的数据管道,实现无服务器数据集成和数据转换。 作为 Azure 服务,数据工厂提供了一系列功能来支持可靠性要求。
使用 Azure 时, 可靠性是共同的责任。 Azure 提供了一系列支持复原和恢复的功能。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍如何使数据工厂能够灵活应对各种潜在的中断和问题,包括暂时性故障、可用性区域中断和区域中断。 它还介绍了如何使用备份从其他类型的问题中恢复,并重点介绍了有关数据工厂服务级别协议(SLA)的一些关键信息。
注释
考虑数据工厂的可靠性时,还需要考虑它连接到的数据存储的可靠性。 如果数据存储不同样具有复原能力,则仅提高数据工厂的复原能力可能会造成有限的影响。 根据复原能力要求,可能需要跨多个区域进行配置更改。 若要帮助确保数据存储满足业务连续性要求,请参阅其产品可靠性文档和指南。
可靠性体系结构概述
数据工厂由多个基础结构组件组成。 每个组件以各种方式支持基础结构可靠性。
数据工厂的组件包括:
核心数据工厂服务,用于管理管道触发器并监督管道活动的协调。 核心服务还管理数据工厂中每个组件的元数据。 Azure 管理核心服务。
集成运行时(IR)用于连接到数据存储并执行管道中定义的活动。 有不同类型的 IR。
Microsoft 托管的 IR,其中包括 Azure IR 和 Azure-SQL 服务器集成服务(Azure-SSIS)IR。 Microsoft 管理构成这些运行时的组件。 在某些情况下,可以配置影响 IR 复原能力的设置。
自承载集成运行时 (SHIR)。 Microsoft提供可在自己的计算基础结构上运行的软件,以执行数据工厂管道的某些部分。 你负责计算资源的部署和管理,以及这些计算资源的复原能力。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议。
使用数据工厂时,请务必准备暂时性故障,尤其是在设计管道和活动时。
幂等性
管道活动应是 幂等的,这意味着它们可以多次重新运行,而不会造成任何负面影响。 如果发生网络故障或可用性区域中断等暂时性故障,数据工厂可能会重新运行管道活动。 此重新运行可以创建重复的记录。
若要防止由于暂时性故障而插入重复记录,请实现以下最佳做法:
在写入数据库之前,请为每个记录使用唯一标识符。 此方法可以帮助你查找和消除重复记录。
对支持 upsert 的连接器使用 upsert 策略 。 在发生重复记录插入之前,请使用此方法检查记录是否已存在。 如果已存在,则更新它; 如果不存在,则插入它。 例如,
MERGE或ON DUPLICATE KEY UPDATE等 SQL 命令将使用此更新插入方法。使用复制操作策略。 有关详细信息,请参阅 复制活动中的数据一致性验证。
重试策略
可以使用重试策略来配置管道的某些部分,以在出现问题时重试,例如连接资源中的暂时性故障。 在数据工厂中,可以在以下管道对象类型上配置重试策略:
有关如何更改或禁用数据工厂触发器和活动相关重试策略的详细信息,请参阅管道运行和触发器。
应对可用区故障的弹性
可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
数据工厂支持 区域冗余,从而提供 可用性区域中故障的复原能力。
数据工厂的每个部分都支持区域冗余:
核心服务: Azure 管理核心数据工厂服务中的组件,并将其分散到可用性区域。
但是,在发生区域故障后,Azure 不能保证滑动窗口触发器的状态。
IR: 区域冗余支持取决于您使用的 IR 类型。
Azure IR 支持区域冗余,Azure 管理此功能。
Azure-SSIS IR 要求至少部署两个节点。 这些节点会自动分配到不同的可用性区域。
下图显示了区域冗余管道和 Azure-SSIS 集成运行时,以及部署在不同区域中的两个节点:
A SHIR 赋予你部署计算基础架构以托管运行环境的责任。 可以部署多个节点,例如单个虚拟机(VM),并对其进行配置以实现高可用性。 然后,可以将这些节点分布在多个可用性区域中。 有关详细信息,请参阅 高可用性和可伸缩性。
要求
可以在 支持可用性区域的任何区域中部署区域冗余数据工厂资源。
成本
核心服务: 区域冗余无需额外付费。
国税 局: 区域冗余的成本因使用的 IR 类型而异。
Azure IR 包括区域冗余,无需额外付费。
Azure-SSIS IR 要求部署至少两个节点以实现区域冗余。
SHIR 要求部署和管理计算基础结构。 若要实现区域复原,需要将计算资源分散到多个区域。 根据部署的节点数和配置方式,可能会从基础计算服务和其他支持服务产生额外的成本。 在多个节点上运行 SHIR 无需额外付费。
配置可用性区域支持
核心服务: 无需配置。 数据工厂核心服务自动支持区域冗余。
国税 局:
Azure IR: 无需配置。 Azure IR 自动启用区域冗余。
Azure-SSIS IR:无需配置。 Azure-SSIS IR 在使用两个或更多节点部署时自动启用区域冗余。
SHIR 要求您自行配置弹性能力,包括跨多个可用区分布节点。
容量计划和管理
核心服务: 数据工厂核心服务可根据需求自动缩放,无需计划或管理容量。
国税 局:
Azure IR 可根据需求自动缩放,无需计划或管理容量。
Azure-SSIS IR 需要你具体配置所使用的节点数。 如果希望为应对可用性区域故障作好准备,可考虑过度预配 IR 的容量。 超额预配使解决方案能够容忍一定程度的容量损失,并且仍然可以继续运行而不会降低性能。 有关详细信息,请参阅 通过过度预配管理容量。
SHIR 要求您配置自己的容量和扩展。 部署 SHIR 时,可考虑过度预配。
所有区域正常时的行为
本节介绍将数据工厂资源配置为可用区冗余、并且所有可用区都在运行时会发生的情况。
区域之间的流量路由: 在正常作期间,数据工厂会在每个可用性区域中的正常实例之间自动分配管道活动、触发器和其他工作。
区域之间的数据复制: 通常,数据工厂是无状态服务,因此无需在区域之间复制任何状态。
但是,滑动窗口触发器包含状态,这些状态可能不会在区域之间完全复制。
区域故障期间的行为
本部分介绍数据工厂资源配置为区域冗余时的预期情况,以及在出现可用性区域中断时会发生什么情况。
- 检测和响应: 数据工厂平台负责检测可用性区域中的故障并做出响应。 你无需执行任何作,即可在管道或其他组件中启动可用区故障转移。
通知:Azure 不会在区域关闭时自动通知你。 然而:
可以使用 Azure 资源运行状况 监视单个资源的运行状况,并且可以设置 资源运行状况警报 来通知问题。
可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
活动请求:正在进行的任何管道和触发器将继续运行,且不会发生因区域故障导致立即中断的情况。 但是,在区域故障期间正在进行的活动可能会失败并重新启动。 请务必将活动设计为幂等活动,这有助于它们从可用区故障和其他故障中恢复。 有关详细信息,请参阅 暂时性故障的复原能力。
预期的停机时间: 在发生区域故障期间,不会造成停机。
预期数据丢失: 总的来说,数据工厂是无状态服务,因此在区域故障期间不会丢失任何数据。
但是,如果使用翻转窗口触发器,则发生区域故障后,触发器的状态可能会丢失。 在发生区域故障时,应重新启动或重新运行当时正在运行的任何触发器。
区域恢复
在可用区恢复后,数据工厂会自动故障回复到原始可用区。 你无需执行任何作,即可在管道或其他组件中启动可用区故障回复。
但是,如果使用 SHIR,则可能需要重启计算资源(如果它们已停止)。
测试区域故障
对于核心服务以及 Azure 和 Azure-SSIS IR,数据工厂会管理支持区域冗余的资源的流量路由、故障转移和故障回复。 由于此功能是完全托管的,因此你无需启动或验证可用性区域故障流程。
对区域范围的故障的复原能力
数据工厂资源部署到单个 Azure 区域。 如果该区域变得不可用,数据工厂也会不可用。 但是,有一些方法可用于帮助确保区域中断的复原能力。 这些方法取决于数据工厂是处于配对区域还是非配对区域,以及您的具体要求和配置。
Microsoft 管理的故障转移(切换到到配对区域)
数据工厂支持由Microsoft管理的配对区域中数据工厂的故障转移。 在区域长时间故障情况(极不可能发生)下,Microsoft 可能会对你的 数据工厂实例启动区域故障转移。
对于非已修复区域的数据工厂,Azure 不会代表你执行区域故障转移。
重要
Azure 触发 Microsoft 托管故障转移。 很可能在出现重大延迟后发生,并尽最大努力完成。 此过程也存在一些例外情况。 你可能会丢失数据工厂元数据。 数据工厂资源的故障转移可能在与其他 Azure 服务的故障转移时间不同时发生。
如果需要应对区域故障,请考虑使用自定义多区域弹性解决方案之一。
IR 故障转移
若要为应对故障转移做好准备,可能需要遵从一些额外的注意事项,这具体取决于所使用的 IR。
可以将 Azure IR 配置为自动解析其使用的区域。 如果区域设置为“自动解决”,当主要区域中发生中断时,Azure IR 会自动故障转移到配对区域。 此故障转移存在限制。 若要在 IR 设置中为活动实现或调度配置 Azure IR 区域,请将该区域设置为 自动解析。
Azure-SSIS IR 故障转移的管理独立于数据工厂的 Microsoft 托管的故障转移。 有关详细信息,请参阅 用于复原的自定义多区域解决方案。
SHIR 在你负责的基础结构上运行,因此Microsoft管理的故障转移不适用于 SHIR。 有关详细信息,请参阅 用于复原的自定义多区域解决方案。
故障转移后的重新配置
Microsoft 托管的故障转移完成后,可以在配对区域中访问数据工厂管道。 但是,故障转移完成后,可能需要对 IR 或其他组件执行一些重新配置。 此过程包括重新建立网络配置。
用于复原的自定义多区域解决方案
如果需要管道具有弹性以应对区域性中断,并且需要控制故障切换过程,请考虑使用元数据驱动的管道。
为数据工厂设置源代码管理 ,以跟踪和审核对元数据所做的任何更改。 可以使用此方法访问管道、数据集、链接服务和触发器的元数据 JSON 文件。 数据工厂支持不同的 Git 存储库类型,例如 Azure DevOps 和 GitHub。
使用持续集成和持续交付(例如 Azure DevOps)系统来管理管道元数据和部署。 可以使用 CI/CD 快速恢复其他区域中的实例操作。 如果某个区域不可用,你可以手动或通过自动化方式预配新的数据工厂。 创建新的数据工厂后,可以从现有 Git 存储库还原管道、数据集和链接服务 JSON。 有关详细信息,请参阅 数据工厂和 Azure Synapse Analytics 管道的业务连续性和灾难恢复(BCDR)。
根据所使用的 IR,可能还有其他需要注意的事项。
Azure-SSIS IR 使用存储在 Azure SQL 数据库或 Azure SQL 托管实例中的数据库。 你可以为此数据库配置异地复制或故障转移组。 Azure-SSIS 数据库位于具有读写访问权限的主要 Azure 区域中。 数据库将持续复制到具有只读访问权限的次要区域。 如果主要区域不可用,则会触发故障转移过程,这会导致主数据库和辅助数据库交换角色。
还可以配置与 Azure SQL 数据库或 SQL 托管实例故障转移组同步工作的双备用 Azure SSIS IR 对。
有关详细信息,请参阅 为 BCDR 配置 Azure-SSIS IR。
SHIR 在所管理的基础结构上运行。 如果将 SHIR 部署到 Azure VM,则可以使用 Azure Site Recovery 触发 VM 故障转移 到另一个区域。
备份和还原
数据工厂通过源代码管理集成支持 CI/CD,以便可以备份数据工厂实例的元数据。 CI/CD 管道将此元数据无缝部署到新环境中。
服务级别协议
Azure 服务的服务级别协议 (SLA) 描述了每个服务的预期可用性,以及解决方案为实现该可用性预期而必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA。
数据工厂提供以下项目的单独可用性服务等级协议:
- 你发出的 API 调用的成功率,例如用于管理数据工厂的 API 调用。
- 开始执行的活动运行数。
活动运行允许短暂延迟,并且要求执行作业的所有依赖项都已得到满足。