关于后端:美团买菜基于-Flink-的实时数仓建设

48次阅读

共计 5465 个字符,预计需要花费 14 分钟才能阅读完成。

摘要:本文整顿自美团买菜实时数仓技术负责人严书,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容次要分为四个局部:

  1. 背景介绍
  2. 技术愿景和架构设计
  3. 典型场景、挑战与应答
  4. 将来布局

点击查看原文视频 & 演讲 PPT

一、背景介绍

美团买菜是美团自营生鲜批发平台,下面所有的商品都由美团亲自洽购,并通过供应链物流体系,运输到间隔用户 3km 范畴内的服务站。用户从美团买菜平台下单后,商品会从服务站送到用户手中,最快 30 分钟内。

上图中,左侧的时间轴展现了美团买菜的倒退历程,右侧展现了美团买菜丰盛的商品。目前,美团买菜在北上广深、武汉等城市均有业务笼罩,为人们日常的生存提供便当。在疫情场景下,起到了十分重要的保障民生作用。

接下来,介绍一下实时数仓场景。美团买菜的实时数仓场景分为三个局部。

  • 第一个利用场景,数据分析局部。其次要用户是业务管理层、数据分析师、数据经营人员等等。他们通过数据大盘、数据看板等模式,获取数据指标,用于企业经营、经营、流动决策。
  • 第二个利用场景,业务监控局部。其次要用户是大仓物流服务站的一线管理人员和总部的经营中台。他们会对线下作业状况进行异样监控,及时理解并解决线下业务的异动。
  • 第三个利用场景,实时特色局部。其次要面向算法模型的实时特色,例如供应链场景的销量预测、履约场景的动静 ETA、用户的搜寻排序举荐等等。

二、技术愿景和架构设计

技术愿景和架构设计。实时数仓的技术愿景是在新批发场景下,建设品质牢靠、运行稳固、笼罩外围链路环节的实时数据体系。这里着重强调品质牢靠、运行稳固、笼罩外围链路环节。

美团买菜所处的新批发行业,是一个薄毛利率赛道,对数据准确性的要求较高。因为买菜业务的失常运行,对数据有着强依赖,所以要求数据必须运行稳固。与此同时,美团买菜是自营的全链条业务,业务的链条环节较多,咱们心愿可能笼罩外围的链路环节。

基于上述的技术愿景,咱们着重建设了品质保障体系、稳定性保障体系。这两个体系的次要目标是,晋升实时数仓基线能力,让数据稳固生产,品质可信赖。心愿品质保障体系、稳定性保障体系可能成为实时数仓的基石,建设好实时数仓的基本功。

在做好实时数仓基本功的根底上,咱们心愿数据施展它的最大价值。依据 DIKM 模型,从数据到信息,信息到常识,常识到智慧,价值会被一直放大。基于 DIKM 模型的理论指导,咱们建设了全域数据中心、对立资产管理中心。

其中,全域数据中心会无效组织原始事实和原始数据,让数据转换成信息。对立资产管理中心对信息加以提炼,晋升洞察力、创造力,帮忙信息更好的转换成常识、智慧。

接下来,介绍一下实时数仓的整体架构。如上图所示,底层模块是数据平台局部,蕴含了数据的同步、加工、品质检测、管理权限、数据治理等环节设计的数据工具链。

在数据平台工具模块之上是全域数据中心、品质保障体系、稳定性保障体系三个模块。其中,全域数据中心是基于数据源 ODS 层建设的数据仓库。在数据源 ODS 层,以后次要蕴含买菜业务数据、美团公共数据、灵犀流量数据、内部数据四个局部。

数据仓库次要有 DWD 层、DWS 层、APP 层和一致性的 DIM 层组成。其中,DWD 层次要还原业务的数据加工过程,蕴含荡涤、转换、过滤。原子指标的加工会在 DWD 层进行收口。

DWS 层是面向剖析场景建设的,次要的建模形式是维度建模。在 DWS 层常见的数据加工过程蕴含多个业务主题的数据关联,数据力度上的轻度汇总,衍生指标的加工。

APP 层次要面向利用场景建设宽表模型,其目标是更好地满足利用场景的个性化需要,晋升数据利用的效率和体验。

品质保障体系次要蕴含流程标准、品质监控、问题解决、继续改良四个局部,造成了一个闭环的管理系统。稳定性保障体系从预防、发现、解决、标准四个角度建设。

对立资产管理中心基于全域数据管理核心品质保障体系、稳定性保障体系,其建设根底是元数据管理。元数据蕴含指标、维度、实时流、画像标签、实时特色、数据大盘、数据接口等等。

基于原数据之上是资产全景、资产利用、资产优化三个局部。资产全景将数据资产,通过分类检索的模式展现进去。数据利用局部蕴含了利用的治理、利用的血统。资产优化局部蕴含模型优化、接口优化。

三、典型场景、挑战与应答

3.1 动静 ETA 实时特色

实时数仓典型场景下的挑战和应答办法。首先,介绍一下动静 ETA 实时特色场景。

如上图所示,展现了用户在美团买菜下单的页面状况。页面中显示的预计送达工夫,波及到了动静 ETA。动静 ETA 是动静的承诺送达工夫。通过钻研发现,承诺用户送达工夫不准,会影响用户的下单志愿。与此同时,当订单预计送达工夫和理论送达工夫差别变大后,客诉率及勾销率均有显著攀升。

动静 ETA 的实现依赖算法模型预估履约时效。算法模型预估履约时效须要用到天气特色、用户下单商品特色、服务站内作业实时特色、配送实时特色。

动静 ETA 算法模型须要的实时特色数量十分多。算法特色生产链路比较复杂,任何一个本质特色的缺失,都会影响到算法模型的准确性,从而间接影响 C 端用户。因而实时特色数据稳定性要求 3 个 9 以上。

那么什么是 3 个 9 的稳定性呢?晋升稳定性的实质,是进步零碎的可用性。零碎的可用性等于,均匀无故障工夫除以,均匀无故障工夫 + 均匀故障修复工夫。想要实现 3 个 9 的稳定性,要求均匀每天故障工夫少于 1.44 分钟。

接下来,讲一讲晋升数据稳定性的形式。晋升数据稳定性须要晋升可用性。晋升可用性的实质是,升高不确定性带来的危险。升高不确定性带来的危险蕴含发现问题、解决问题两个局部。

在发现问题方面,须要思考如何辨认危险。在实时特色的生产中,咱们会通过容量预估、性能压测、容灾演练、全链路监控,实时对账的形式,更好的辨认危险。

在解决问题方面,须要思考如何应答危险。一些常见应答危险的形式蕴含存储计算、双链路备份、实时特色、易购存储、降级预案、故障解决 SOP、事变复盘、欠缺工具和标准等。

上图展现了,在故障产生的不同阶段,对稳定性的影响。事先阶段产生故障,对稳定性的影响最小。所以实时特色场景稳定性建设的要害策略是,尽可能在故障产生之前发现问题、解决问题。

稳定性保障体系全景。稳定性保障体系全景蕴含预防、发现、解决、标准四个局部。其中,预防局部次要包含异构存储、双链路备份、性能压测、容量预估、容灾演练、特色分级等等。

异构存储是指,Doris 和 ES 作为应用层的存储引擎。双链路备份是指,存储和计算,多机房部署两条数据生产链路。这两条数据生产链路互为储备,任何一条链路呈现问题,都能够疾速切换到另一条链路,从而保障数据的继续生产。在性能压测局部,次要通过数据回放和流量管制实现。容量预估是指 Flink 的并发数和内存配置。

在发现局部,咱们除了在硬件、组件、服务层建设欠缺的监控体系,还针对数据场景的常见危险、异常情况,着重建设了 ETL 工作监控、端到端数据提早监控、实时离线 t+1 对账。在危险解决局部,咱们次要通过故障解决、兜底策略、升高预案来实现。

在预防、发现、解决三个局部的教训,通过标准的模式进行积淀。标准局部次要蕴含事变的复盘标准、技术计划 review 标准、代码 review 机制、上线公布流程标准、巡检机制、值班制度。

上面重点介绍一下性能压测局部。如上图所示,咱们通过环境隔离的形式,建设了线上和测试两条残缺的数据链路。

在测试链路中,咱们通过回拨 Kafka Offset,失去了十分大的数据流量。而后,通过流量管制模块失去须要的测试流量,从而实现按需构建压测流量。最初,咱们通过记录不同流量下的链路性能,失去了须要的性能压测后果。

上图展现了性能压测后果的评估指标体系,其中蕴含了过程指标和后果指标。次要指标有工作配置、机器状态、Source QPS、Sink QPS、瓶颈算子 QPS、最大可撑持流量倍数 N、端到端耗时。

3.2 实时数据经营剖析

实时数据经营剖析场景。美团买菜业务常常举办营销流动,晋升用户的活跃度。在营销大促场景下,经营人员须要实时理解业务的经营状态,并制订经营策略。

与此同时,买菜业务受工作日、非工作日、节假日因素的影响,数据指标稳定较大。单纯看指标的大小,很难判断指标的好坏,往往须要联合周同比、年同比进行辅助判断。在近几年的疫情场景下,买菜业务经常出现抢单模式,流量短时间内暴涨。

美团买菜面临的挑战。一方面,数据品质要求非常严苛。实时和离线数据差别不超过万分之三,端到端的数据差别不超过万分之一。在百万 QPS 流量下,须要保障无数据提早。

另一方面,数据架构自身复杂度高。在实时、离线两条生产链路下,Flink 只反对计算引擎内的 exactly-once。

在上述情况下,数据品质的保障面临了很大挑战。数据品质是指,数据的一组满足固有个性(品质维度)要求的水平。

上图中,右边展现了数据品质问题。数据不同水平缺失,数据集成流程中的数据不等价,在数据需要期限内未获取最新数据,数据与指标特征值之间的差别水平、数据标识不惟一。

因为这些数据品质问题能够通过对应的指标来掂量,所以咱们用数据完整性、数据一致性、数据及时性、数据准确性、数据唯一性,来掂量数据品质的好坏。

数据品质保障体系的建设思路是基于闭环治理,事先通过流程标准,缩小品质问题的产生。事中通过数据品质监控零碎,发现问题并解决问题。预先通过复盘的模式,将遇到的问题总结提炼,继续对流程标准进行改良。由此可见,事先、事中、预先组成了残缺的闭环。

在数据保障体系的推动策略上,咱们整体上分为三个阶段。

  • 第一阶段,提广度。咱们建设了从需要剖析、技术设计、数据模型开发、数据测试数据上线等等,笼罩了数据研发全流程的标准体系。在这个阶段,咱们重点晋升品质监控覆盖度,将数据生产过程进行全面的监控笼罩。
  • 第二阶段,保外围。在外围数据链路上,减少贴近业务的指标监控。绝对于第一阶段的监控,第二阶段的监控能更好的发现个性化的业务问题。针对影响数据品质较大的流程标准做加法,保障残缺的落地,继续的改良。
  • 第三阶段,线上化、自动化。线上化是指,将流程标准从线下转变为线上治理。线上治理的益处是,便于后续的统计分析。自动化是指,问题的解决、追踪。从人工解决的形式,变成工具,自动化的形式实现,防止脱漏并缩小经营老本。

上图是数据品质保障体系的能力图,数据品质保障体系蕴含流程标准、品质监控、问题解决、继续改良四个模块儿。流程标准局部蕴含数据开发标准、工程开发流程标准、产业单干机制经营三个局部。

品质监控蕴含系统监控和服务监控。其中,系统监控蕴含存储引擎 Kafka 流量监控、计算引擎 Flink 外围指标监控、基于数据埋点的 Raptor 异样监控。

在服务监控方面,蕴含了主链路差值监控、APP 从同环比监控、ODS 层同环比监控。在问题解决方面,次要包含影响周知,告警解决、数据修复。在继续改良方面,蕴含基于工夫线梳理、声音定位、问归因、监控告警优化、作业调参优化、资源配置优化。

在实时离线数据的一致性方面,咱们基于 Doris 实现了存储一体架构。存储一体架构是基于 Lambda 架构改良实现的。在数据源局部,数据源通过两种数据同步的形式,别离同步到实时数仓和离线数仓。

实时数仓通过 Flink 引擎,对数据进行分层加工。离线数仓通过 Spark 引擎,对数据进行分层加工。实时数仓的数据和离线数仓的数据,最终会写到 Doris 存储引擎的同一个数据模型上。

Doris 数据模型按天进行分区,实时数仓的数据会写到当天分区,离线数仓的数据会写到历史分区。当内部的数据查问须要查问当天或历史数据时,只须要通过工夫分区路由。从而保证数据指标、数据维度口径完全一致。

在数据准确性方面,咱们通过数据幂等和监控来实现。Kafka 只反对计算引擎内的 exactly once。为了实现端到端的 exactly once,咱们一方面应用 Doris 的约定模型,实现数据幂等。另一方面,在数据加工过程中,依照业务组件进行数据去重。数据去重通常采纳 row number 或 last value 的形式实际。

在品质的监控上,监控指标体系蕴含窗口统计指标、稳定监控窗口。窗口统计指标是指,数据量、最大值、最小值、平均值、空值、占比、正则匹配。稳定监控是指,数据的同环比。

在数据的及时性方面,咱们通过性能瓶颈的定位和优化来解决。上图展现了数据生产链路性能瓶颈定位的过程。咱们在 Flink ETL 工作里,植入算子解决的工夫埋点。而后,将 ETL 工作输入的 Kafka,同步一份埋点数据到 Hive 引擎里。基于 Hive 引擎进行算子解决、性能剖析,从而定位性能瓶颈。

当算子定位到性能瓶颈之后,咱们采纳的优化形式蕴含 TM JVM 性能调优、Doris 性能优化、Flink 工作优化。具体的优化形式包含调整新生代、老年代比例;Doris 导入并发数;compaction 参数调优;模型合并;RSU 数据缓存;大状态打消;代码逻辑优化等等。

四、将来布局

接下来,讲一讲将来布局。实时数仓的将来布局次要蕴含三个局部。

  • 第一局部,数据的标准化。数据标准化的益处是,更好的保障数据口径统一,晋升建模标准水平,数据的应用性。
  • 第二局部,流批一体。流批一体能晋升实时离线数据的一致性和数据开发效率。
  • 第三局部,自动化建模。自动化建模的益处是,对立模型设计并实现工作的智能构建。

点击查看原文视频 & 演讲 PPT


更多内容


流动举荐

阿里云基于 Apache Flink 构建的企业级产品 - 实时计算 Flink 版现开启流动:
0 元试用 实时计算 Flink 版(5000CU* 小时,3 个月内)
理解流动详情:https://click.aliyun.com/m/1000372333/

正文完
 0