前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈Doris和Flink在广告实时数仓中的实践

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

作者头像
小晨说数据
发布2022-03-10 10:41:17
2K0
发布2022-03-10 10:41:17
举报
文章被收录于专栏:小晨讲Flink

1.

Doris简介

▍1.1 简介

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

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

▍1.2 架构

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

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

2.

▍2.1 我们的历史架构

数据量介绍:

  • 请求百亿级
  • 曝光亿级
  • 点击百万级
  • 其他数据就不说了,我就简单讲哈哈。

▍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真的是个神器😝。

看上面👆这个图,你就知道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内部自带物化视图,既可以存明细,也可以实现聚合模型,既方便报表查询,也方便线上通过明细数据问题排查,同时还方便维护,模型训练也支持秒级查询。

  • es无法进行join计算
  • druid进行join计算还不够强大(虽然新版0.18.0本支持了join语法)
  • clickhouse运维复杂(还是长期看好,性能是个亮点)
  • kylin的cube爆炸,计算和管理成本高。

3.

业务数仓架构应该具备哪些能力?

  • 业务经常变动打法,你的实时数据仓不能构建的太重,需要短时间迭代上线(大家没有遇到业务提一个需求,一个月时间做完了,业务用了几次就不用了,还有就是公司改变广告营销打法,之前的实时指标可能没人去看了,打入冷宫了)。
  • 你的架构要足够的轻量化,易维护,同时还得兼顾:明细查询(线上问题排查),聚合查询(报表指标呈现)
  • 业务看重的是你支持业务的能力,而不是你花里胡哨的架构。你要确保业务当天提需求,当天可以完成,你的架构好坏是靠你支持业务的效果来体现,所以适合自己业务的架构,就是好架构。
  • 你的架构平时稳只能算及格,你要确保架构在大促和高峰流量来时系统稳定,能不能抗住百亿或者千亿的流量。
  • 不同sla的业务场景设计不同的架构,并不是所有的业务场景都是要求毫秒或者秒级,其实你仔细跟他们聊分钟级他们也可以接受,不同的sla对你的计算资源成本要求不一样,适量把控计算资源成本,优秀的工程师都是想办法给公司省钱,同时还可以圆满完成任务。

4. END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小晨说数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 想要了解更多doris,可以去官网学习Apache Doris,Flink我也不赘述了,说多了,今天讲不完😝。
  • ▍2.2 遇到的问题
  • ▍2.3 解决问题
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档