网易首页 > 网易号 > 正文 申请入驻

打造全球最大规模 Kafka 集群,Uber 的多区域灾备实践

0
分享至

  作者 | Uber 工程博客

  译者 | 王者

  策划 | 蔡芳芳

  1Uber 的 Kafka 生态系统

  Uber 拥有世界上最大的 Kafka 集群,每天处理数万亿条消息和几个 PB 的数据。如图 1 所示,Kafka 现在成了 Uber 技术栈的基石,我们基于这个基石构建了一个复杂的生态系统,为大量不同的工作流提供支持。其中包含了一个用于传递来自乘客和司机 App 事件数据的发布 / 订阅消息总线、为流式分析平台(如 Apache Samza、Apache Flink)提供支持、将数据库变更日志流到下游订阅者,并将各种数据接收到 Uber 的 Hadoop 数据湖中。

  为了能够基于 Kafka 构建一个可伸缩、可靠、高性能、易于使用的消息传递平台,我们克服了许多挑战。在这篇文章中,我们将着重介绍在进行灾难恢复(因集群宕机导致)时所面临的一个挑战,并分享我们如何构建一个多区域的 Kafka 基础设施。

  2Uber 的 Kafka 多区域部署

  提供业务弹性和连续性是 Uber 的首要任务。我们制定了详细的灾难恢复计划,尽量减少自然和人为灾难 (如停电、灾难性软件故障和网络中断) 对业务的影响。我们采用多区域部署策略,将服务与备份一起部署在分布式的数据中心中。当一个区域的物理基础设施不可用时,服务仍然可以在其他区域运行。

  我们构建了一个多区域 Kafka 架构,实现了数据冗余,为区域故障转移提供支持。Uber 技术栈中的很多服务都依赖 Kafka 来实现区域级故障转移。这些服务是 Kafka 的下游,并假定 Kafka 中的数据是可用且可靠的。

  图 2 描绘了多区域 Kafka 架构。我们有两种集群:生产者在本地向区域集群发布消息,将来自区域集群的消息复制到聚合集群,以此来提供全局视图。为简单起见,图 2 只显示了两个区域的集群。

  在每个区域,生产者总是在本地生产消息,以便获得更好的性能,当 Kafka 集群不可用时,生产者会转移到另一个区域,然后向该区域的区域集群生产消息。

  这个架构中的一个关键部分是消息复制。消息从区域集群异步复制到其他区域的聚合集群。我们开发了

  uReplicator(https://eng.uber.com/ureplicator)

  ——Uber 的 Kafka 数据复制解决方案,健壮且可靠。uReplicator 扩展了 Kafka 的 MirrorMaker,专注于可靠性、零数据丢失保证和易维护性。

  3从多区域 Kafka 集群消费消息

  从多区域集群消费消息比生产消息更为复杂。多区域 Kafka 集群支持两种类型的消费模式。

  双活模式

  一种常见的类型是双活(Active/Active)消费模式,消费者在各自区域中消费聚合集群的主体。Uber 的很多应用程序使用这种模式消费多区域 Kafka 集群里的消息,而不是直接连接到其他区域。当一个区域发生故障时,如果 Kafka 流在两个区域都可用,并且包含了相同的数据,那么消费者就会切换到另一个区域。

  例如,图 3 显示了 Uber 的动态定价服务 (即峰时定价) 如何使用双活模式来构建灾备计划。价格是根据附近地区最近一系列打车数据来计算的。所有的打车事件都被发送到 Kafka 区域集群,然后聚合到聚合集群中。然后,在每个区域,一个复杂的、占用大量内存的 Flink 作业负责计算不同区域的价格。接下来,一个全活服务负责协调各个区域的更新服务,并分配一个区域作为主区域。主区域的更新服务将定价结果保存到双活数据库中,以便进行快速查询。

  当主区域发生灾难时,双活服务会将另一个区域作为主区域,峰时价格计算会转移到另一个区域。需要注意的是,Flink 作业的计算状态规模太大了,无法在区域之间同步复制,因此必须使用聚合集群的输入消息来计算其状态。

  我们从实践中获得了一个很关键的经验,可靠的多区域基础设施服务(如 Kafka)可以极大地简化应用程序针对业务连续性计划的开发工作。应用程序可以将状态存储在基础设施层中,从而变成无状态的,将状态管理的复杂性 (如跨区域的同步和复制) 留给基础设施服务。

  主备模式

  另一种多区域消费模式是主备模式(Active/Passive):一次只允许一个消费者 (通过唯一名称标识) 从一个区域 (即主区域) 的聚合集群中消费消息。多区域 Kafka 集群跟踪主区域的消费进度(用偏移量表示),并将偏移量复制到其他区域。在主区域出现故障时,消费者可以故障转移到另一个区域并恢复消费进度。主备模式通常被支持强一致性的服务 (如支付处理和审计) 所使用。

  在使用主备模式时,区域间消费者的偏移量同步是一个关键问题。当用户故障转移到另一个区域时,它需要重置偏移量,以便恢复消费进度。由于 Uber 的很多服务不能接受数据丢失,所以消费者无法从高水位 (即最新消息) 恢复消费。另外,为了避免过多的积压,消费者也不能从低水位 (即最早的消息) 恢复消费。此外,从区域集群聚合到聚合集群的消息可能会变得无序。由于跨区域复制延迟,消息从区域集群复制到本地聚合集群的速度比远程聚合集群要快。因此,聚合集群中的消息顺序可能会不一样。例如,在图 4a 中,消息 A1、A2、B1、B2 几乎是同时发布到区域 A 和区域 B 的区域集群中,但经过聚合后,它们在两个聚合集群中的顺序是不一样的。

  为了管理这些区域的偏移量映射,我们开发了一个复杂的偏移量管理服务,架构如图 5 所示。当 uReplicator 将消息从源集群复制到目标集群时,它会定期检查从源到目标的偏移量映射。例如,图 4b 显示了图 4a 消息复制的偏移量映射。表的第一行记录了区域 A 区域集群的消息 A2(在区域集群中的偏移量是 1)映射到区域 A 聚合集群的消息 A2(在聚合集群中的偏移量是 1)。同样,其余行记录了其他复制路线的检查点。

  偏移量管理服务将这些检查点保存在双活数据库中,并用它们来计算给定的主备消费者的偏移量映射。同时,一个偏移量同步作业负责定期同步两个区域之间的偏移量。当一个主备消费者从一个区域转移到另一个区域时,可以获取到最新的偏移量,并用它来恢复消费。

  偏移量映射算法的工作原理如下:在活跃的消费者正在消费的聚合集群中找到每个区域集群的最近检查点。然后,对于每个区域检查点的源偏移量,找到它们在另一个区域聚合集群对应的检查点。最后,在另一个区域的聚合集群中取最小的那个偏移量。

  在图 6 中,假设活跃消费者目前的进度是区域 B 的 A3 消息(偏移量为 6)。根据右边的表检查点,最近的两个检查点分别是偏移量为 3(蓝色) 的 A2 和偏移量为 5(红色) 的 B4,分别对应区域集群 A 中偏移量 1(蓝色)和区域集群 B 的偏移量 3(红色)。这些源偏移量映射到区域 A 聚合集群的偏移量 1(蓝色) 和偏移量 7(红色)。根据算法,被动消费者 (黑色) 取两者中较小的偏移量,即偏移量 1。

  4结论

  在 Uber,业务的连续性取决于高效、不间断的跨服务数据流,Kafka 在公司的灾备计划中扮演着关键角色。在这篇文章中,我们简要地强调了在 Uber 多区域 Kafka 集群的总体架构,以及当灾难发生时不同区域的故障转移策略。但是,我们还有更具挑战性的工作要做,目前要解决如何在不进行区域故障转移的情况下容忍单个集群故障的细粒度恢复策略。

  https://eng.uber.com/kafka/

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
A股股价最高上市公司,利润同比大增超900%!

A股股价最高上市公司,利润同比大增超900%!

证券时报
2026-08-26 19:06:12
脱口秀演员呼兰亮相央视财经,他曾获《脱口秀大会》总冠军,毕业于哥伦比亚大学精算专业,网友:总算专业对口了

脱口秀演员呼兰亮相央视财经,他曾获《脱口秀大会》总冠军,毕业于哥伦比亚大学精算专业,网友:总算专业对口了

极目新闻
2026-08-26 17:46:28
国家一级女演员陈丽云被逮捕!

国家一级女演员陈丽云被逮捕!

许三岁
2026-03-28 09:24:30
坐了这么多次飞机,竟不知机场T1、T2、T3的“T”啥含义!

坐了这么多次飞机,竟不知机场T1、T2、T3的“T”啥含义!

小虎新车推荐员
2026-08-17 13:11:31
75岁刘銮雄现身富豪聚会,合照坐中间地位超然,弟弟刘銮鸿也在场

75岁刘銮雄现身富豪聚会,合照坐中间地位超然,弟弟刘銮鸿也在场

史料布籍
2026-08-25 16:23:31
泸州老窖,也爆雷了

泸州老窖,也爆雷了

巴山侃侃
2026-08-26 09:46:17
王励勤重要决定!国乒亚运会名单大变,2大女将落选,孙颖莎冲3金

王励勤重要决定!国乒亚运会名单大变,2大女将落选,孙颖莎冲3金

小辉体育
2026-08-26 08:47:35
从主力到边缘人!曼联伸出橄榄枝,租借巴萨22岁5000万飞翼

从主力到边缘人!曼联伸出橄榄枝,租借巴萨22岁5000万飞翼

万花筒体育球球
2026-08-26 22:06:18
心理学:人生最大的报应之一,就是婚姻。你遇见谁,和谁结婚,过什么样的日子,其实就是你精准地找到了自己的报应

心理学:人生最大的报应之一,就是婚姻。你遇见谁,和谁结婚,过什么样的日子,其实就是你精准地找到了自己的报应

心理观察局
2026-07-13 06:24:09
特朗普提了个大胆想法,干脆对中国再加7.5%关税?中方不吃压力

特朗普提了个大胆想法,干脆对中国再加7.5%关税?中方不吃压力

江启
2026-08-26 12:10:12
四川兽父李文忠被判死刑,女儿生前求救:疼,妈妈救我

四川兽父李文忠被判死刑,女儿生前求救:疼,妈妈救我

晓艾故事汇
2024-11-04 21:11:45
邱党:樊振东再强也白搭!团体赛5场他只能打2场,剩下3分谁来扛

邱党:樊振东再强也白搭!团体赛5场他只能打2场,剩下3分谁来扛

寒律
2026-08-26 11:20:16
鸟巢要拆?一年烧掉8000万,日均烧钱20多万,这座吞金兽留着干啥

鸟巢要拆?一年烧掉8000万,日均烧钱20多万,这座吞金兽留着干啥

星娱叨叨社
2026-08-24 15:49:23
西藏吉隆口岸有建筑被掩埋

西藏吉隆口岸有建筑被掩埋

界面新闻
2026-08-26 16:07:30
半场0-2!41岁C罗朝队友发火后被换下 下半场队友连进3球逆转

半场0-2!41岁C罗朝队友发火后被换下 下半场队友连进3球逆转

念洲
2026-08-26 06:54:11
搂李兰迪肩膀、贴着她耳朵说话,《你好星期六》的他何炅都看不下

搂李兰迪肩膀、贴着她耳朵说话,《你好星期六》的他何炅都看不下

洲洲影视娱评
2026-08-25 13:45:54
成都舞厅午后实拍:五十岁女人的五元体面,没人伸手的难堪

成都舞厅午后实拍:五十岁女人的五元体面,没人伸手的难堪

成都人的故事
2026-08-25 19:40:06
反差拉满!宇树上市王兴兴全程高冷,看自家机器人比赛笑到藏不住

反差拉满!宇树上市王兴兴全程高冷,看自家机器人比赛笑到藏不住

雷科技
2026-08-24 12:33:29
1600年前的修仙实录出土!考古学家不敢公开,上古史可能是假的?

1600年前的修仙实录出土!考古学家不敢公开,上古史可能是假的?

历史教堂
2026-08-25 16:30:15
越来越好!王曦雨2-1逆转赛会7号种子晋级,排名升至世界第77

越来越好!王曦雨2-1逆转赛会7号种子晋级,排名升至世界第77

里芃芃体育
2026-08-26 09:06:09
2026-08-26 23:00:49
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12853文章数 52046关注度
往期回顾 全部

科技要闻

DeepSeek被曝前七个月收入4.75亿元

头条要闻

祖孙骑车被撞孙子死亡 女司机仅买交强险:想着省点是点

头条要闻

祖孙骑车被撞孙子死亡 女司机仅买交强险:想着省点是点

体育要闻

兑现五年之约,含梗量最高的世界冠军诞生

娱乐要闻

包文婧当初担心包贝尔出轨,预言成真

财经要闻

洪灏:人民币是全球最被低估的货币

汽车要闻

北京现代吴周涛:艾尼氪V,中国定义专为年轻人打造

态度原创

亲子
家居
艺术
数码
军事航空

亲子要闻

当哥哥第一次烧汤

家居要闻

2026建博会(广州) 公装联探展交流活动

艺术要闻

吴冠中画了幅双面画,值690万!

数码要闻

佳明Fenix 9 Pro智能手表预售:全钛金属表身,8680元起

军事要闻

特朗普赞赏后 三个美国盟友邀请伊朗加入"中东版北约"

无障碍浏览 进入关怀版