全部产品
Search
文档中心

实时计算Flink版:同城高可用

更新时间:Jul 27, 2026

同城(同地域内不同可用区之间)高可用功能可有效避免单个可用区故障导致的服务中断,确保业务的稳定性。Flink支持在包年包月的跨可用区类型的项目空间中使用同城高可用功能。本文为您介绍如何使用同城高可用功能,以及停止跨可用区CU计费等。

功能介绍

Flink工作空间支持单可用区跨可用区两种CU类型的计算资源,根据使用的CU类型对应单可用和跨可用两种类型项目空间,区别如下:

  • 对于单可用区项目空间,Flink会在所选地域为您分配最佳的计算可用区,同一地域内可用区之间内网互通,计算层进行可用区无感调度进行库存打通,从而提升资源的弹性负载能力。

  • 对于跨可用区项目空间,可实现同城高可用能力,当作业运行所在可用区出现故障时,作业将自动调度到同一地域其他稳定可用区恢复,有效避免因单个可用区故障导致服务中断,确保作业的持续性和高可用性。

image

基本概念

概念

说明

可用区(Zone)

同一地域内电力和网络相互独立的物理区域,可用区之间通过低延迟网络互联。

RPO(恢复点目标)

故障发生时允许丢失的最大数据量。Flink 多可用区模式下,Checkpoint 状态持久化至 OSS 同城冗余存储,RPO 与 OSS 同城冗余型保持一致,确保数据的完整性和一致性。

RTO(恢复时间目标)

故障发生后服务恢复所需的时间。Flink 多可用区模式下 RTO 为分钟级,包括 JobManager 切换、资源申请、状态恢复和数据重放。 

JobManager

Flink 的管控节点,负责作业调度、Checkpoint 协调、资源管理。跨可用区场景下采用 Active-Standby 模式。

TaskManager

Flink 的计算节点,负责执行具体算子任务和运行时状态存储。

Checkpoint

Flink 的周期性状态快照机制,将作业状态持久化到外部存储(OSS),用于故障恢复。

State Backend

状态后端,Flink 的状态存储引擎,Checkpoint 时将增量状态快照写入远程存储。

故障恢复机制

Flink 采用 Checkpoint 与自动故障恢复机制,确保可用区故障时作业自动恢复:

  • Checkpoint 持久化:作业运行期间定期将状态快照异步写入 OSS(跨可用区冗余存储),确保状态数据不因可用区故障而丢失。

  • JobManager 主备切换:Active JobManager 故障时,Standby JobManager 通过 ZooKeeper 选举成为新 Leader,接管作业管理。

  • TaskManager 重调度:故障可用区的 TaskManager 丢失后,ResourceManager 在存活可用区中申请新的 TaskManager,重新调度受影响的任务。

  • 状态恢复:新调度的 TaskManager 从最近的 Checkpoint 恢复状态,RocksDB State Backend 支持增量恢复,缩短恢复时间。

  • 数据重放:配合可回放数据源(如 Kafka),从 Checkpoint 记录的位点重新消费,保证 Exactly-Once 语义,数据不丢不重。

故障场景与恢复

单可用区故障

当一个可用区发生故障时,Flink 的处理流程如下:

  1. 故障检测:JobManager 检测到故障可用区中的 TaskManager 心跳超时,标记节点为不可用。

  2. JobManager 切换:若 Active JobManager 位于故障可用区,Standby JobManager 迁移并重新拉起。

  3. 任务重调度:ResourceManager 在存活可用区中申请新的 TaskManager 资源,将受影响的任务重新调度。

  4. 状态恢复:新 TaskManager 从最近的 Checkpoint 恢复作业状态。

  5. 数据重放:Source 从 Checkpoint 位点重新消费数据源(如 Kafka),恢复数据处理。

  6. 客户端透明:Flink 作业的 Source/Sink 自动重连外部系统,故障恢复过程对上下游透明。

恢复指标

指标

RPO(数据丢失)

0(Checkpoint 状态持久化至 OSS 同城冗余存储,RPO 与 OSS 同城冗余型保持一致,确保数据的完整性和一致性。)

RTO(服务恢复时间)

分钟级(1~10 分钟,取决于状态大小和 Checkpoint 间隔)

注意事项

  • 完整链路的高可用必须确保您的上下游系统同样具备高可用。

  • Flink跨区访问外部上下游资源时,可能导致毫秒级的延迟,可用区之间网络延时SLA保障在3 ms内,详情请参见地域内可用区间平均网络时延 。上下游除云数据库Tair(兼容Redis)外,其他延迟通常没有问题,建议根据业务需求评估延迟的接受程度,进而确定是否要开启同城高可用功能。

  • 混合计费工作空间开启同城高可用后,故障时系统优先保障固定计算资源上的作业迁移恢复,弹性计算资源上的作业尽力恢复,不产生额外费用。

地域及费用

目前仅Intel X86且包年包月(含混合计费)的工作空间支持购买跨可用区计算资源,费用高于单可用区,支持的地域及价格详情请参见包年包月

如果您的工作空间为按量付费模式,可以先转为包年包月后,参考方式2方式3进行使用。

说明

部署模式为跨可用区的工作空间不支持转换为按量付费模式。

开启并使用同城高可用功能

方式1:新购工作空间时自动创建跨可用区项目空间后使用

  1. 在开通Flink工作空间时自动创建跨可用区项目空间。

    Intel X86处理器架构且付费模式为包年包月的工作空间,部署模式选择为跨可用区,填写跨可用区CU类型的计算资源配额,选择两个不同可用区的虚拟交换机,详情请参见开通实时计算Flink版

    工作空间创建完成后,会默认生成名称为工作空间名称-default-ha的跨可用区项目空间。

  2. 单击目标跨可用区项目空间名称,在跨可用区项目空间内创建并运行作业。

    在项目空间列表中,可通过CU类型列识别跨可用区项目空间(显示为跨可用区),单击该项目空间名称即可进入。

方式2:添加跨可用区CU并手动创建跨可用区项目空间后使用

开通工作空间时部署模式未选择为跨可用区,您可以后续通过添加跨可用区CU并创建跨可用的项目空间的方式使用。

  1. 添加跨可用区CU。

    1. 在目标工作空间操作列下,选择更多 > 工作空间资源变配

    2. 单击增加CU类型

    3. 填写跨可用区的目标CU数,并选择虚拟交换机。

      仅显示目标专有网络下和Flink支持可用区下的已创建虚拟交换机。如果没有可供选择的虚拟交换机,您可以 创建交换机

      重要

      工作空间添加跨可用区CU后,请确认已将新增的可用区的交换机网段添加到上下游系统白名单中,避免出现网络访问受限问题。

      勾选服务协议后,单击确定完成跨可用区 CU 的变配操作。

    4. 选中协议后,单击确定,完成支付。

  2. 添加跨可用区类型项目空间,详情请参见添加项目空间

  3. 在跨可用区类型项目空间创建并运行作业,详情请参见进入目标项目空间

方式3:单可用区项目空间开启同城高可用后使用

  1. 登录实时计算管理控制台

  2. 确认当前工作空间如果还有未分配的 跨可用区CU 数,且大于待开启同城高可用的项目空间已分配的CU数。

    如果工作空间未分配的跨可用区CU不足,您可以直接为工作空间添加跨可用区CU,或单击其他跨可用区的项目空间的资源分配,释放多余的跨可用区CU,详情请参见资源调整

  3. 单击目标项目空间对应操作列的开启同城高可用后,单击确定

    单击确定后,项目空间中单可用区CU将被替换为等量的跨可用区CU,原先的单可用区CU将退还至工作空间。您后续可以进行再次分配或者进行资源缩容,以减少不必要的资源开支。

    举例说明:假设工作空间A最初购买了5 CU的单可用区和5 CU跨可用区资源,其中项目空间A被分配了2 CU单可用区资源。当项目空间A开启同城高可用功能后,其原先分配的2 CU 单可用区资源会被退还至工作空间A的单可用区未分配资源池中,同时跨可用区资源中会有2 CU被重新分配给项目空间A使用。以下是开启前后工作空间资源情况对比:

    状态

    单可用区(已分配/已购买)

    跨可用区(已分配/已购买)

    开启前

    2/5

    0/5

    开启后

    0/5

    2/5

  4. 在转换后的跨可用区类型项目空间创建并运行作业,详情请参见进入目标项目空间

关闭项目空间的同城高可用功能

无论您以何种方式创建的跨可用区类型的项目空间,都可以按照以下操作关闭该功能。但关闭同城高可用功能并不会停止计费,停止计费操作请参见退订跨可用区CU

  1. 登录实时计算管理控制台

  2. 确认工作空间未分配的单可用区CU数大于等于当前跨可用区类型的项目空间已分配CU数。

    如果工作空间未分配的单可用区CU不足,您可以直接为工作空间添加单可用区CU,或者单击其他单可用区的项目空间的资源分配,释放多余的单可用区CU,详情请参见资源调整

  3. 单击目标项目空间对应操作列的关闭同城高可用后,单击确定

    关闭同城高可用功能后,资源变化情况与开启功能相同。待彻底关闭后,您才可以正常使用。

退订跨可用区CU

工作空间跨可用区已分配CU数为0时,将不产生跨可用区费用。跨可用区CU退订操作步骤如下:

  1. 登录实时计算管理控制台

  2. 确认工作空间下所有项目空间已关闭同城高可用功能。

    详情请参见关闭项目空间的同城高可用功能

  3. 将工作空间跨可用区目标CU调整为0。

    1. 在目标工作空间操作列下,选择更多 > 工作空间资源变配

    2. 将跨可用区的目标CU数改为0。

    3. 选中协议后,单击确定,完成支付。

相关文档