- 业务的多状态性:业务过程从开始到结束是不断变化的,比如从下单->支付->配送,业务库是在原始基础上进行变更的,Binlog会产生很多变化的日志 。而业务分析更加关注最终状态,由此产生数据回撤计算的问题,例如10点下单,13点取消,但希望在10点减掉取消单 。
- 业务集成:业务分析数据一般无法通过单一主体表达,往往是很多表进行关联,才能得到想要的信息,在实时流中进行数据的合流对齐,往往需要较大的缓存处理且复杂 。
- 【数仓建设的3大难点解析 数仓搭建流程有哪些】分析是批量的,处理过程是流式的:对单一数据,无法形成分析,因此分析对象一定是批量的,而数据加工是逐条的 。
05 实时数仓架构设计1. 实时架构:流批结合的探索基于以上问题,我们有自己的思考 。通过流批结合的方式来应对不同的业务场景 。
如上图所示,数据从日志统一采集到消息队列,再到数据流的ETL过程,作为基础数据流的建设是统一的 。之后对于日志类实时特征,实时大屏类应用走实时流计算 。对于Binlog类业务分析走实时OLAP批处理 。
流式处理分析业务的痛点是什么?对于范式业务,Storm和Flink都需要很大的外存,来实现数据流之间的业务对齐,需要大量的计算资源 。且由于外存的限制,必须进行窗口的限定策略,最终可能放弃一些数据 。计算之后,一般是存到Redis里做查询支撑,且KV存储在应对分析类查询场景中也有较多局限 。
实时OLAP怎么实现?有没有一种自带存储的实时计算引擎,当实时数据来了之后,可以灵活的在一定范围内自由计算,并且有一定的数据承载能力,同时支持分析查询响应呢?随着技术的发展,目前MPP引擎发展非常迅速,性能也在飞快提升,所以在这种场景下就有了一种新的可能 。这里我们使用的是Doris引擎 。
这种想法在业内也已经有实践,且成为一个重要探索方向 。阿里基于ADB的实时OLAP方案等 。
2. 实时数仓架构设计从整个实时数仓架构来看,首先考虑的是如何管理所有的实时数据,资源如何有效整合,数据如何进行建设 。
从方法论来讲,实时和离线是非常相似的 。离线数仓早期的时候也是Case By Case,当数据规模涨到一定量的时候才会考虑如何治理 。分层是一种非常有效的数据治理方式,所以在实时数仓如何进行管理的问题上,首先考虑的也是分层的处理逻辑,具体内容如下:
- 数据源:在数据源的层面,离线和实时在数据源是一致的,主要分为日志类和业务类,日志类又包括用户日志、DB日志以及服务器日志等 。
- 实时明细层:在明细层,为了解决重复建设的问题,要进行统一构建,利用离线数仓的模式,建设统一的基础明细数据层,按照主题进行管理,明细层的目的是给下游提供直接可用的数据,因此要对基础层进行统一的加工,比如清洗、过滤、扩维等 。
- 汇总层:汇总层通过Flink或Storm的简洁算子直接可以算出结果,并且形成汇总指标池,所有的指标都统一在汇总层加工,所有人按照统一的规范管理建设,形成可复用的汇总结果 。
文章插图
总结起来,从整个实时数仓的建设角度来讲,首先数据建设的层次化要先建出来,先搭框架,然后定规范,每一层加工到什么程度,每一层用什么样的方式,当规范定义出来后,便于在生产上进行标准化的加工 。由于要保证时效性,设计的时候,层次不能太多,对于实时性要求比较高的场景,基本可以走上图左侧的数据流,对于批量处理的需求,可以从实时明细层导入到实时OLAP引擎里,基于OLAP引擎自身的计算和查询能力进行快速的回撤计算,如上图右侧的数据流 。
06 实时平台化建设架构确定之后,我们后面考虑的是如何进行平台化的建设,实时平台化建设是完全附加于实时数仓管理之上进行的 。
- 戊午日大贵格局,女1988年阳历9月30日阴历8月20日下午3点30分出生的命格?
- 立春的风俗及饮食 立春吃什么传统食物
- 社群五大营销玩法解析 社群的营销方式有哪些
- 婴儿需要添加辅食的信号和月份 一般婴儿几个月添加辅食最好
- 1995年5月5日生辰八字,1995年4月25日出生的农历是什么时?
- 大逃脱有丧尸的哪一集
- 敷尔佳面膜是哪国的
- 搭载ea111发动机的车型有哪些
- 德云社桃儿什么意思
- 敷尔佳脸刺痛正常吗