基于 Flink 的实时数仓建设实践
本文主要阐述了美团基于 Flink 的实时数仓建设实践经验。实时数仓是企业对数据服务实时化服务的需求逐渐增多的解决方案。本文将从 Flink 引擎的性能特点和适用场景出发,介绍美团如何通过 Flink 引擎构建实时数据仓库,提供高效、稳健的实时数据服务。
在实时平台初期架构中,由于对实时数据的需求较少,形成不了完整的数据体系。美团采用的“一路到底”的开发模式,即通过在实时计算平台上部署 Storm 作业处理实时数据队列来提取数据指标,直接推送到实时应用服务中。但是,随着产品和业务人员对实时数据需求的不断增多,新的挑战也随之发生。数据指标越来越多,“烟囱式”的开发导致代码耦合问题严重。需求越来越多,有些需要明细数据,有些需要 OLAP 分析。单一的开发模式难以应付多种需求。
为解决以上问题,美团选择了分层设计方案来建设实时数据仓库。该方案由四层构成:ODS 层、数据明细层、数据汇总层和 App 层。通过多层设计,可以将处理数据的流程沉淀在各层完成。例如,在数据明细层统一完成数据的过滤、清洗、规范、脱敏流程;在数据汇总层加强共性的多维指标汇总数据。提高认的代码复用率和整体生产效率。
技术选型是实时数仓建设的关键一步。美团调研了多种存储解决方案,包括 MySQL、Elasticsearch、Druid 和 Cellar。每种解决方案都有其优缺,需要根据不同的业务场景选择合适的存储解决方案。在实时数仓各个模型层次中,存储解决方案的选择如下:
* 数据明细层:Cellar 或 Elasticsearch
* 数据汇总层:Druid 或 Elasticsearch
* App 层: MySQL 或 Elasticsearch
在选择存储解决方案时,需要考虑到性能、可扩展性、成本等因素。例如,Druid 可以支持超大数据量,但预聚合导致无法支持明细的查询。Cellar 则可以支持超大数据量,但单个 Key 值不得超过 1KB,Value 的值超过 100KB 时性能下降明显。
本文总结了美团基于 Flink 的实时数仓建设实践经验,包括实时数仓的架构设计、技术选型和存储解决方案选择等方面,为企业提供了有价值的参考。
评论0
最新资源