作者:旋宇,淘菜菜数据研发
前言:
阿里淘菜菜(简称TCC)主营社区团购,其在阿里至少历经6年时间,为了更好支持业务发展,淘菜菜也在不断演进其技术架构。2020年淘菜菜开始与Hologres合作,历经2次大的架构升级,从传统多组件的架构升级为现在稳定的高可用实时数仓2.0,承载上千万RPS写入、几百T数据存储和秒级查询响应。在此合作过程中,淘菜菜技术团队不断沉淀出实时数仓场景下的最佳实践、开发实践、开发规范等,基于此背景,我们将会合作推出系列文章,介绍淘菜菜基于Hologres搭建实时数仓的最佳实践,内容将会包括架构升级、场景实践、容灾实践以及最近业界比较关心的成本治理等,期望与更多的企业互通有无,在数仓建设上更加简单、方便、高效。
本期我们将会带来系列文章第一篇:淘菜菜技术架构的前世今生–技术架构升级之路。
淘菜菜业务简介
阿里淘菜菜(简称TCC)事业部的前身是盒马优选及零售通,2021年初合并成立了淘菜菜事业部,主要做社区团购,和多多买菜、美团优选业务模式一致,主营生鲜和日销品,采用次日达的配送方式为用户提供服务。2022年开始和淘宝深度合作,作为淘宝生鲜和日销品类目的补充。目前淘菜菜属于稳定发展阶段,微信、淘宝、淘特、支付宝等多渠道入口,日均用户访问量上千万,数据量约有几百T。
发展历程:从数据库到高可用实时数仓
为了支持淘菜菜丰富的业务需求,其背后的技术发展历经了最初的零售通原始数据库架构、零售通传统lambda架构、Hologres实时数仓、Hologres高可用实时数仓这4个阶段。
阶段1:16年之前原始架构- jstorm阶段
该阶段为实时数仓的初期建设,主要用于零售通团队的实时作战大屏,以及核心数据产品的报表看板等。技术方案采用的jstrom,有专门的实时团队同学支持,实时任务数10个以内,实时计算的资源在3000+CU。
阶段2:16-20年传统架构 -FlinkSQL阶段
16年之后,零售通业务开始规模化增长,因此业务场景变得更加丰富,包括实时大屏、实时营销活动分析、渠道实时分析等。这个阶段主要基于Flink SQL发展,同时离线开发同学慢慢开始加入,和实时团队同学配合进行实时需求支持。直到到19年B系研发同学开始独立支持实时数据体系的建设,这个时期实时任务数快速增长到500+。资源使用也比第一个阶段上升30%。
阶段3:20年实时数仓 - Flink+Hologres阶段
随着业务的快速发展,实时数仓的建设越来越臃肿,也开始出现一些开发和运维问题。而当时Hologres也开始在集团内大面积推广,于是我们开始考虑用一套新的方案解决老架构存在的问题。因此这个阶段开始基于Flink+Hologres进行实时架构升级。
在这个阶段,零售通和盒马优选合并成淘菜菜团队。面对日益增长的数据,技术上主要要解决的问题就是实时开发提效,追求高效率、高灵活,以此来满足淘菜菜所有小二实时&离线数据的查询需求,核心应用场景包括交易实时多维分析,物流供应链实时服务、指标中心自助分析和离线报表加速等。
我们用了一年的时间(从20年9月到21年9月)完成了架构升级,通过新架构缩短了实时处理链路,提高数据处理效率,让实时数仓变得更加高效快捷。
阶段4:21年高可用实时数仓-Flink+Hologres读写分离部署
21年架构升级完成后,在新的阶段,我们的核心目标就是提升新架构的稳定性。同时业务发展也逐渐趋于稳定,除了常规场景的支持,也开始参与双11、双12等大促节日,因此成本的治理也开始提上日程,我们期望能够用最简单的架构,最少的资源支撑所有的场景。
在高可用稳定性方面,我们使用写链路的主备链路,应用层