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

1.
Doris简介
▍ 1.1 简介
Apache Doris是一个现代化的MPP分析型数据库产品 。 仅需亚秒级响应时间即可获得查询结果 , 有效地支持实时数据分析 。 Apache Doris的分布式架构非常简洁 , 易于运维 , 并且可以支持10PB以上的超大数据集 。
Apache Doris可以满足多种数据分析需求 , 例如固定历史报表 , 实时数据分析 , 交互式数据分析和探索式数据分析等 。 令您的数据分析工作更加简单高效!
▍ 1.2 架构
浅谈Doris和Flink在广告实时数仓中的实践文章插图
想要了解更多doris , 可以去官网学习Apache Doris , Flink我也不赘述了 , 说多了 , 今天讲不完:stuck_out_tongue_closed_eyes: 。 我们的业务背景 , 就是想秒级实时数据呈现 。
2.
开始进入正题 。。。。
▍ 2.1 我们的历史架构
浅谈Doris和Flink在广告实时数仓中的实践文章插图
数据量介绍:

  • 请求百亿级
  • 曝光亿级
  • 点击百万级
  • 其他数据就不说了 , 我就简单讲哈哈 。
▍ 2.2 遇到的问题计算问题:
  • 多表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真的是个神器:stuck_out_tongue_closed_eyes: 。
浅谈Doris和Flink在广告实时数仓中的实践文章插图
看上面:point_up_2:这个图 , 你就知道doris的优势了 , 千万级数据join , 秒级产出 , 非常赞:+1: 。
存储替代思考 ?
  • 为什么es不支持join , 我们还要去用他?为什么不能替换?
  • 什么组件替换比较好呢?行业内都在用什么组件?

浅谈Doris和Flink在广告实时数仓中的实践文章插图
总结:直接换成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和Flink在广告实时数仓中的实践文章插图
总结:doris内部做join可以节省开发时间 , 并且自已维护 , 不用考虑数据延迟落后的问题 。 doris内部自带物化视图 , 既可以存明细 , 也可以实现聚合模型 , 既方便报表查询 , 也方便线上通过明细数据问题排查 , 同时还方便维护 , 模型训练也支持秒级查询 。
为什么我要all in 这个doris
  • es无法进行join计算
  • druid进行join计算还不够强大(虽然新版0.18.0本支持了join语法)
  • clickhouse运维复杂(还是长期看好 , 性能是个亮点)
  • kylin的cube爆炸 , 计算和管理成本高 。
浅谈不到位的 , 还请各位大佬多多指点, 祝所有做大数据的小伙伴 , 都可以升职加薪 , 超过做算法同学的工资哈哈哈哈哈哈哈
3.
业务数仓架构应该具备哪些能力?