Starwift实时指标加工方案
方案介绍
Starwift(ClickHouse)是京东云上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离线分析。便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性,助力客户数字化转型。实时指标加工是从离线指标加工需求演变而来。业务场景对离线加工的时效性的要求已经升级为指标加工分析实时性的增强。
实时指标加工首先要求指标加工的时效性能够保障,指标的加工的时效性是指从数据源到数据计算,再到数据的落地可查,整个过程都是完全实时的,并且保证时延最低。其次,在准确性方面,无论有多复杂的数据处理链路,实时指标的加工不会因为节点抖动或其他问题而导致数据重复或丢失。最后从投入的角度来看,如何保障后续的指标开发/加工/运维成本可控等诸多因素 。
面对实时指标的加工要求,选择了Starwift作为实时指标加工的载体。实时指标开发要求时效延迟低、数据准确高、开发运维成本低,这些与Starwift的特性高度匹配,因此整个指标的加工链路的实现使用了Starwift作为指标计算的载体。整体实现加工通过Flink+Starwift(物化视图)方案进行实时指标加工Starwift中的物化视图具有以下优势:
- 查询性能优化:物化视图是预计算并存储的查询结果,可以极大地提高查询效率。当基础数据发生变化时,物化视图可以快速地刷新数据,保持与基础数据的一致性。
- 简化复杂查询:通过物化视图,用户可以将复杂的查询逻辑抽象化,从而简化查询操作。用户只需关心最终的结果,而不需要了解底层数据的具体细节。
- 提高数据安全性:物化视图可以为数据提供安全保护,限制用户对特定数据的访问权限。通过视图,用户只能访问被授权的数据,从而保护敏感数据不被泄露。
- 降低系统负载:物化视图可以分担一部分查询负载,降低对底层数据源的压力。当大量用户同时访问时,物化视图可以有效地分散请求,减轻数据源的负担。
- 提高数据整合性:物化视图可以将不同数据源的数据整合到一起,为用户提供统一的数据视图。通过物化视图,用户可以轻松地获取跨多个数据源的数据,而无需进行复杂的跨库查询。
具体的实时指标加工链路如下:
数据源:首先,数据从各种源流入,如 Kafka、数据库、API 等。
数据采集:使用 Flink 流处理框架,实时捕获并处理来自数据源的数据流。Flink 可以高效地处理大量实时数据,并进行实时分析、聚合等操作。
数据清洗与转换:在 Flink 中,可以进行数据清洗、转换和预处理,确保数据的质量和准确性。
数据存储:经过处理的数据可以存储在 Starwift 中。Starwift 是一个高性能的列式数据库管理系统,非常适合实时分析和查询。
物化视图:在 Starwift 中,可以使用物化视图来存储预先计算的结果。物化视图可以加速查询性能,并提高数据处理的效率。
查询与报表:通过 Starwift 的查询引擎,用户可以快速查询和检索实时数据,生成各种报表和分析结果。
场景举例
例如有如下广告栏位统计需求场景:用户ID
,url
,access_time
,channel
等四个字段分别记录了用户信息/访问URL/访问时间/访问频道等字段信息,现需要按照天统计每个URL的曝光次数。
按照上述需求场景,首先第一步需要通过Flink程序实时采集点击的明细数据入starwift将数据写入stg(贴源层),按照业务需求,仅仅是统计当天的URL统计指标数据,因此贴源层的数据时效性一般可以设置148小/1周的数据,一周后数据会自动清除,减少对存储节点的磁盘消耗。
按照上述章节描述,我们需要在Starwift中创建一张明细表,数据通过flink加工数据直接写到贴源层,由于贴源层的数据存储时间有时常限制,所以可以构建一个TTL表
create table if not exists stg.stg_user_channel_click(user_id UInt8,url String,channel String