淘菜菜×基于Flink和Hologres的高可用实时数仓架构升级之路

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 汪宇(旋宇)阿里巴巴淘菜菜事业部 数据技术专家

image.png

淘菜菜主业务为社区团购,消费者通过在淘宝、微信等端上的淘菜菜小程序购买商品后,采用次日达的配送到团长手中,然后再到团长那里取货。

具有以下几个特点

1生鲜电商,能满足消费者一日三餐需求

2提供高性价比商品,即便宜又好品质

3、面向三线城市及以下的下市场

4、建立三级仓配方式,共享仓、中间仓网格仓降低履约成本

5、通过团长实现履约最后一环,消费者提供服务

image.png

淘菜菜实时数据场景多样,有实时播报(保证快速交付、高保障)、仓库实时作业(高性能,持续服务)以及指标中心和自助中心(多维OLAP、灵活)。

实时任务数最高可达400+Flink 资源和Hologres资源分别1w+,重要任务70%以上;实时吞吐日均超2000/s日均输出超50/s

image.png

淘菜菜实时架构的演进分为四个阶段:

阶段116年之前原始架构- jstorm阶段

该阶段为实时数仓的初期建设,主要用于零售通团队的实时作战大屏,以及核心数据产品的报表看板等。技术方案采用的jstrom,有专门的实时团队同学支持,实时任务数10个以内,实时计算的资源在3000+CU

阶段216-20年传统架构-FlinkSQL阶段

16年之后,零售通业务开始规模化增长,因此业务场景变得更加丰富,包括实时大屏、实时营销活动分析、渠道实时分析等。这个阶段主要基于Flink SQL发展,同时离线开发同学慢慢开始加入,和实时团队同学配合进行实时需求支持。直到到19B系研发同学开始独立支持实时数据体系的建设,这个时期实时任务数快速增长到500+。资源使用也比第一个阶段上升30%

阶段320年实时数仓 - Flink+Hologres阶段

随着业务的快速发展,实时数仓的建设越来越臃肿,也开始出现一些开发和运维问题。而当时Hologres也开始在集团内大面积推广,于是我们开始考虑用一套新的方案解决老架构存在的问题。因此这个阶段开始基于Flink+Hologres进行实时架构升级。

在这个阶段,零售通和盒马优选合并成淘菜菜团队。面对日益增长的数据,技术上主要要解决的问题就是实时开发提效,追求高效率、高灵活,以此来满足淘菜菜所有小二实时&离线数据的查询需求,核心应用场景包括交易实时多维分析,物流供应链实时服务、指标中心自助分析和离线报表加速等。

我们用了一年的时间(从209月到219月)完成了架构升级,通过新架构缩短了实时处理链路,提高数据处理效率,让实时数仓变得更加高效快捷。

阶段421年高可用实时数仓-Flink+Hologres读写分离部署

21年架构升级完成后,在新的阶段,我们的核心目标就是提升新架构的稳定性。同时业务发展也逐渐趋于稳定,除了常规场景的支持,也开始参与双11、双12等大促节日,因此成本的治理也开始提上日程,我们期望能够用最简单的架构,最少的资源支撑所有的场景。

在高可用稳定性方面,我们使用写链路的主备链路,应用层使用Hologres多子实例共享存储的部署方式,主实例用于写,不同子实例用于不同场景的查询,这样做能够非常好的做到读写分离、资源隔离以及开发生产隔离。

在成本治理侧,我们主要采取了将闲置实时任务及时治理、Hologres表存储优化等手段,21年共计节约200w+资源。

目前新的架构在淘菜菜业务稳定运行中,在本文中我们将会介绍为什么要进行架构升级,以及架构升级后我们遇见的挑战和对应的解决方案,以帮助大家更简单高效的建设实时数仓。

 

从研发视角来看,实时数仓应该具备以下几个特性:

  • 高效率:传统架构选型太多,导致门槛较高。而且运维时查问题或定位问题比较耗时间。
  • 高可用:需要能够提供持续化服务,出现问题时可快速恢复。
  • 低成本:以最低的计算和最低存储提升稳定

image.png

2020年之前,传统数仓面临的问题主要可以归纳为以下三个。

第一,开发效率低。

输入端输出端、服务均由多种选型,另外不同维度指标开发时存在重复开发。代码调试需要完整地运行导致调试难度大。数据测试运行在存储里,无法查看中间结果链路越长测试成本越高。

第二,运维成本高。

·  任务排查耗时长:实时任务链路长,部分应用层ADS的设计达到5层,加上ODSDWD总共达到7+以上的层次,再加上有些任务本身逻辑复杂,导致整个计算链路非常长。另外由于实时本身的State不可见,在问题排查的时候非常困难,平均一个问题定位到解决就需要半天以上,严重影响线上查询效率。

·  长周期回滚难:由于上游采用的TT中间件(Datahub),只能回滚3日数据,对于长周期去重指标回滚就会有问题,同时为了保证数据一致性,需要另外将离线数据加入才能进行回滚。在压测的时候,上游的数据量不够,无法达到压测预期,还需要额外造离线数据。

第三,资源浪费

有些实时数据并不是高频使用场景,比如大促预热期的多维实时蓄水效果监控跟踪,日常基本没查询,仅在大促前两天需要使用,日常的实时计算就会导致浪费计算资源。

image.png

基于以上痛点我们对Hologres进行了调研,发现一些优秀能力:

1、高性能 OLAP 意味着逻辑可以写在后端,

2、共享盘古很多数据可以直接进行加速并使用不需要再导入 MySQL HBase

3、实现离线和实时模型统一,避免代码放在不同地方运行

4、拥有行存长周期 Binlog 能力,可以像普通中间件一样提供订阅消费能力,可以解决长周期指标计算问题。

因此,我们在双 11 进行了Hologres试点,实际效率得到很大提升。最终,淘菜菜决定使用Hologres支持所有内部应用。后续,我们也计划用Hologres商家或合作方消费者侧的应用进行全面覆盖。

image.png

2020,淘菜菜使用Hologres替换传统数仓,主要目标为存储统一、计算升级、应用服务统一

存储统一将中间公共层全部替换Hologres,得益于binlog能力,替换之后可以解决长周期指标计算问题。且出现问题可以直接排查,无需将数据存到另外存储里再进行查询。另外公共应用层也进行了全面升级,能够支持不同应用场景,比如分析场景产品点查能力。

计算升级实时数据扫完直接回写到离线数仓,保证实时离线逻辑统一。另外也做了列式更新不同实时任务更新同列不同字段,各个字段之间逻辑相互独立,任何延迟或问题都不会影响其他字段。提供服务时效率会更高,无需再多个任务不同表。

应用服务统一:Hologres提供数据存储之后,支持不同OLAP 查询,点查服务全部通过Hologres实现了支持。

 

此阶段的核心目标是提效,但是过程中也出现了一些问题。

1、出现了性能瓶颈后续我们通过Table Group 重构表结构优化和资源隔离解决了问题

2、实时任务逻辑后置到应用,出现指标不一致性问题。后续我们通过数据监控,实现分钟级别的核心指标巡检以及指标中心管理指标口径、核心指标逻辑下沉解决了问题

 

经历第一次升级之后的一些价值:

1、实现BU 级别实时架构实现了统一技术选型和开发提效;

2、无需维护实时任务,逻辑置于后端直接写 SQL 即可输出数据,开发效率得到很大提升

3、技术选型也有了比较明确选择层次变少,排查问题更高效

image.png

2021年双十一前后,该架构出现一些严重问题,一个月内出现多次故障,稳定性风险变得越越大。主要原因在于很多开发人员建表或使用数据库时过于随意,没有约束。很多重要场景没有对业务提供持续化服务,业务不可接受。且存在资源浪费,虽然出现问题之后可以加资源,但持续资源并不是长久之计。

另外一个问题是:当时架构和列两个实例,数据需要开发两次,开发效率低,存储浪费,研发成本高。另外,要对数据的生命周期进行控制,很多无效数据不应该长期占据存储空间。

 

基于此,我们针对稳定性从事前、事中、事后进行了架构升级。

1、事前阶段:

1)公共层不只Hologres也新增了中间件,两者互备出现问题可以互相切换。

2)应用层升级13读,将实时数据离线数据全部写到主实例通过不同读实例提供不同服务。另外上线了同城灾备,因为读写分离全部在集群里,如果集群集体故障依然会存在问题,因此需要同城灾备来保证服务不出现问题。

3)同建立规章和制度,对开发人员的使用进行约束。

4)实现了评估治理,评估holo表是否存在风险,对慢SQL进行监控,提前识别异常情况并进行治理。

2、事中阶段:监控集群异常指标,出现问题时能够及时预警,且建立了快恢机制。

3、事后阶段:通过定期复盘发现问题并进行改善

 

成本治理方面主要采取策略:

1、无效表的识别,主要通过执行记录扫描确认其依然在被查询,针对查询结果进行治理和下线

2、生命周期方面会通过 SQL 访问跨度为其提供建议

3、对于异常binlog开启 治理。

 

经过以上改进,故障次数从月均6次降为0次,存储从400T缩小至40T,效果显著

image.png

接下来我通过几个案例来简单介绍下我们几个典型应用场景是如何实现的:

第一个案例就是指标中心&自助分析平台的场景:

前面有提到看数维度比较多,从总部到区域的各个层级、角色都需要各种交叉看数,单一支持效率低,而且经常会有数据不一致的问题。

因此我们建立了指标中心,并配置出自助分析的页面,支持业务自助选择维度和指标进行多维数据分析:

1、首先我们会将实时、离线明细数据写入到holo主实例中,实时放当日分区,离线放历史分区

2、然后在指标中心配置指标口径和支持的维度

3、配置自助分析的场景,然后发布上线,业务就可以进行自助的勾选和分析了。

自助分析平台读取的是其中一个只读实例,当通过监控识别到该实例出现异常的时候,我们会切换数据源到另外一个只读实例,以支持数据的持续可用。

 

image.png

第二个案例是物流实时作业跟进的场景:

物流场景的几个特点:

1、作业流水状态变化非常快,包括入库、出库、调拨等,且有大量累积指标。

2、同一份数据既要在报表上看,还需要提供数据服务嵌入到小二工作流中

3、非常重要,不看中断。仓库小二会根据实时数据进行作业,如果数据有问题直接影响物流的作业进度,需要保障服务的99%以上可用。

 

方案是:用现有架构的行存公共层会提供长周期 Binlog 消费,订阅时间更长。应用层有行列共存应用实例,可以提供服务报表一体化服务,报表和应用都可读。服务数据做容灾实例,考虑到成本,服务直接读容灾实例出现问题时再切回主实例,提高容灾实例的使用率

image.png

升级后的架构为淘菜菜带来了极大的效果和价值。

第一,统一技术框架通过 Flink+Hologres支持所有计算存储服务

第二,高效支持业务看数。因为开发实时任务数变少,很多逻辑置于后端,可以直接写 SQL 查询数据交付周期缩 30%以上。另外存储选型变简单,不用学习复杂的新技术,而且能够支持各种量级数据场景。数据测试也变得简单,因为测试层次变少。成本缩减 50% 以上,出现问题可以马上定位长周期指标回滚更高效便捷

第三,持续化服务能力。此前抓取较大问题时常因为排查不及时导致问题放大,而如今可以彻底避免该类事件的发生。实时数仓较大影响问题的发生频次从原先的月均3次降低为0-1

image.png

未来,我们希望从三个方面继续加强

① 更加稳定继续完善规范,与Hologres进行合作,提前识别风险并提前治理。出现问题时能快速定位启动应急预案,能够支持高SLA场景 99% 可用。

② 高效。探索Hologres物化视图,将逻辑后置,无需开发实时任务直接写SQL即可运行数据出结果。实现行列共存和流批一体最终快速支持100%数据应用。

③ 更加低成本要以最小成本实现最好稳定性和效率,提升无效表识别精度,大 SQL 优化,实现动态扩缩容,最终实现成本最优。


Q&A

QODPS 数据更新频率和 Hologres数据更新频率如何分配?

A:这是两个技术方案。 ODPS 偏离线,用离线来进行每日更新,或准时比如 15 分钟更新一次。小二要求看实时数据,但可以容忍偶尔的服务故障,可以通过实时写明细到 Hologres里,再写一个SQL指标中心或物化视图,来支持小二查看实时数据

Q从数据周期上看, ODPS 里是全量数据,而Hologres里是一天或两天频率的数据吗?

 

A主要是看场景离线和实时数据都可以全量。比如将实时数据初始化一次,每天更新它,则为全量。也可以同步增量分区里都是增量,加起来则为全量。

QHologres 同城容灾实时同步如何实现?

A实例之间 Binlog 实时同步。Hologres实例分几种容灾方式,一种是同机房共享存储多实例,数据不同步,但计算多个相当于内存中两个实例,状态实时同步。本文介绍的示例为两份存储,不管是同城还是异城,技术都一样,都是多份存储存储之间通过 Binlog 同步。主实例故障之后,上面不会再有新数据,由从实例来同步数据。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
10天前
|
DataWorks 数据挖掘 大数据
方案实践测评 | DataWorks集成Hologres构建一站式高性能的OLAP数据分析
DataWorks在任务开发便捷性、任务运行速度、产品使用门槛等方面都表现出色。在数据处理场景方面仍有改进和扩展的空间,通过引入更多的智能技术、扩展数据源支持、优化任务调度和可视化功能以及提升团队协作效率,DataWorks将能够为企业提供更全面、更高效的数据处理解决方案。
|
1月前
|
SQL 流计算 关系型数据库
基于OpenLake的Flink+Paimon+EMR StarRocks流式湖仓分析
阿里云OpenLake解决方案建立在开放可控的OpenLake湖仓之上,提供大数据搜索与AI一体化服务。通过元数据管理平台DLF管理结构化、半结构化和非结构化数据,提供湖仓数据表和文件的安全访问及IO加速,并支持大数据、搜索和AI多引擎对接。本文为您介绍以Flink作为Openlake方案的核心计算引擎,通过流式数据湖仓Paimon(使用DLF 2.0存储)和EMR StarRocks搭建流式湖仓。
361 4
基于OpenLake的Flink+Paimon+EMR StarRocks流式湖仓分析
|
28天前
|
消息中间件 Java Kafka
实时数仓Kappa架构:从入门到实战
【11月更文挑战第24天】随着大数据技术的不断发展,企业对实时数据处理和分析的需求日益增长。实时数仓(Real-Time Data Warehouse, RTDW)应运而生,其中Kappa架构作为一种简化的数据处理架构,通过统一的流处理框架,解决了传统Lambda架构中批处理和实时处理的复杂性。本文将深入探讨Kappa架构的历史背景、业务场景、功能点、优缺点、解决的问题以及底层原理,并详细介绍如何使用Java语言快速搭建一套实时数仓。
138 4
|
2月前
|
存储 数据采集 大数据
Flink实时湖仓,为汽车行业数字化加速!
本文由阿里云计算平台产品专家李鲁兵(云觉)分享,聚焦汽车行业大数据应用。内容涵盖市场趋势、典型大数据架构、产品市场地位及能力解读,以及典型客户案例。文章详细介绍了新能源汽车市场的快速增长、大数据架构分析、实时湖仓方案的优势,以及Flink和Paimon在车联网中的应用案例。
195 8
Flink实时湖仓,为汽车行业数字化加速!
|
1月前
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
63 1
|
1月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
69 1
|
2月前
|
OLAP
解决方案|基于hologres搭建轻量OLAP分析平台获奖名单公布!
解决方案|基于hologres搭建轻量OLAP分析平台获奖名单公布!
|
2月前
|
DataWorks 数据挖掘 关系型数据库
基于hologres搭建轻量OLAP分析平台解决方案评测
一文带你详细了解基于hologres搭建轻量OLAP分析平台解决方案的优与劣
440 9
|
3月前
|
存储 数据采集 OLAP
饿了么基于Flink+Paimon+StarRocks的实时湖仓探索
饿了么的实时数仓经历了多个阶段的演进。初期通过实时ETL、报表应用、联动及监控构建基础架构,随后形成了涵盖数据采集、加工和服务的整体数据架构。1.0版本通过日志和Binlog采集数据,但在研发效率和数据一致性方面存在问题。2.0版本通过Dataphin构建流批一体化系统,提升了数据一致性和研发效率,但仍面临新业务适应性等问题。最终,饿了么选择Paimon和StarRocks作为实时湖仓方案,显著降低了存储成本并提高了系统稳定性。未来,将进一步优化带宽瓶颈、小文件问题及权限控制,实现更多场景的应用。
434 7
饿了么基于Flink+Paimon+StarRocks的实时湖仓探索
|
3月前
|
数据可视化 数据挖掘 OLAP
基于 Hologres 搭建轻量 OLAP 分析平台评测报告
【9月更文第6天】开作为互联网手游公司的产品经理和项目经理,数据分析对于我们的业务至关重要。我们一直在寻找高效、可靠的数据分析解决方案,以更好地了解玩家行为、优化游戏体验和提升运营效率。近期,我们体验并部署了《基于 Hologres 搭建轻量 OLAP 分析平台》解决方案,以下是我们对该方案的评测报告。
93 12
基于 Hologres 搭建轻量 OLAP 分析平台评测报告

相关产品

  • 实时计算 Flink版
  • 下一篇
    DataWorks