浅谈Doris和Flink在广告实时数仓中的实践

1. 
Doris简介
1.1 简介

Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间便可得到查询结果,有效地支持实时数据分析。Apache Doris的分布式架构很是简洁,易于运维,而且能够支持10PB以上的超大数据集。mysql

Apache Doris能够知足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工做更加简单高效!web

1.2 架构

想要了解更多doris,能够去官网学习Apache Doris,Flink我也不赘述了,说多了,今天讲不完😝。

咱们的业务背景,就是想秒级实时数据呈现。算法

2. 
开始进入正题。。。。
2.1 咱们的历史架构


数据量介绍:
sql

  • 请求百亿级数据库

  • 曝光亿级微信

  • 点击百万级网络

  • 其余数据就不说了,我就简单讲哈哈。架构


2.2 遇到的问题

计算问题:app

  • 多表join不易维护运维

  • sql化还要实现各类udf函数

  • 开发耗时

存储问题:

  • 宽表须要多流join,还得关联维度表

  • es不支持join,须要提早加工好宽表

  • es大量聚合查询性能降低

  • es-sql,计算函数支持不优雅,好比:除法等等

  • es没有聚合模型,全量写入会带来写入压力和冗余数据,须要依托flink窗口预计算来减轻写入压力。缺点:flink窗口小,写入量大带来数据冗余和写入性能差;flink窗口大,写入数据量会减小,数据时效性差,没法知足模型训练秒级别的需求

2.3 解决问题

计算替代思考🤔?

  • 多流join,可否在近实时的olap引擎中去作?

  • 用olap引擎作能带给咱们什么价值?

  • web接口服务提供的维度数据如何办?olap也无法实时查询接口服务呀,还有kv内存得维度数据,这些都须要flink去扩充。mysql的数据也能够用flink扩充,也能够本身经过脚本写入到olap中。

结论:doris能够替代flink作join计算,而且doris的udf函数齐全,自带colocate join模型(按照相同key分桶,join的时候能够避免网络shuffle)和聚合模型(下降数据量,提高查询效率),还有好多优点,我就很少说了,doris真的是个神器😝。

看上面👆这个图,你就知道doris的优点了,千万级数据join,秒级产出,很是赞👍。

存储替代思考🤔?

  • 为何es不支持join,咱们还要去用他?为何不能替换?

  • 什么组件替换比较好呢?行业内都在用什么组件?


总结:直接换成doris,es自己就不适合作olap多维聚合分析,尤为是在join的场景,没法知足业务需求。

计算上olap能够替代部分flink的join任务:

  • 两个kafka流作join,无需关联kv和接口维度数据,好比点击流+唤起流+mysql维度信息(多个mysql表),能够直接在doris中作join,无需单独开发flink去作,复用doris的udf函数。(目前我在doris中都是进行4表join很是方便,千万级数据join性能在2-3s返回)

  • mysql能够写个定时任务写入到doris中

  • hive的维度数据也能够导入到doris中进行维度关联。

最后架构:

总结:doris内部作join能够节省开发时间,而且自已维护,不用考虑数据延迟落后的问题。doris内部自带物化视图,既能够存明细,也能够实现聚合模型,既方便报表查询,也方便线上经过明细数据问题排查,同时还方便维护,模型训练也支持秒级查询。

为何我要all in 这个doris

  • es没法进行join计算

  • druid进行join计算还不够强大(虽然新版0.18.0本支持了join语法)

  • clickhouse运维复杂(仍是长期看好,性能是个亮点)

  • kylin的cube爆炸,计算和管理成本高。

浅谈不到位的,还请各位大佬多多指点,祝全部作大数据的小伙伴,均可以升职加薪,超过作算法同窗的工资哈哈哈哈哈哈哈

3. 
业务数仓架构应该具有哪些能力?
  • 业务常常变更打法,你的实时数据仓不能构建的过重,须要短期迭代上线(你们没有遇到业务提一个需求,一个月时间作完了,业务用了几回就不用了,还有就是公司改变广告营销打法,以前的实时指标可能没人去看了,打入冷宫了)。

  • 你的架构要足够的轻量化,易维护,同时还得兼顾:明细查询(线上问题排查),聚合查询(报表指标呈现)

  • 业务看重的是你支持业务的能力,而不是你花里胡哨的架构。你要确保业务当天提需求,当天能够完成,你的架构好坏是靠你支持业务的效果来体现,因此适合本身业务的架构,就是好架构。

  • 你的架构平时稳只能算及格,你要确保架构在大促和高峰流量来时系统稳定,能不能抗住百亿或者千亿的流量。

  • 不一样sla的业务场景设计不一样的架构,并非全部的业务场景都是要求毫秒或者秒级,其实你仔细跟他们聊分钟级他们也能够接受,不一样的sla对你的计算资源成本要求不同,适量把控计算资源成本,优秀的工程师都是想办法给公司省钱,同时还能够圆满完成任务。

4. 
END

最后抛出来一个问题,500亿的实时数据,如何加工报表指标?是全量计算吗?全量计算会遇到什么问题?数据倾斜怎么办?即便数据不倾斜了,遇到流量高峰怎么办?数据背压就必定要追加计算资源吗?你有什么好的办法?


公众号回复:“资料全集”,海量PPT等你来拿。



本文分享自微信公众号 - 小晨说数据(flink-spark)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索