快手关播是什么(Flink)

首页教程更新时间:2023-06-01 07:26:17

本文整理自快手数据技术专家李天朔在 5 月 22 日北京站 Flink Meetup 分享的议题《快手基于 Flink 构建实时数仓场景化实践》,内容包括:

1.快手实时计算场景

2.快手实时数仓架构及保障措施

3.快手场景问题及解决方案

4.未来规划

一、快手实时计算场景

快手关播是什么,Flink(1)

快手业务中的实时计算场景主要分为四块:

二、快手实时数仓架构及保障措施

1. 目标及难点

快手关播是什么,Flink(2)

1.1 目标

1.2 难点

2. 实时数仓 - 分层模型

基于上面三个难点,来看一下数仓架构:

快手关播是什么,Flink(3)

如上所示:

整体过程可以分为三步:

3. 实时数仓 - 保障措施

基于上面的分层模型,来看一下整体的保障措施:

快手关播是什么,Flink(4)

保障层面分为三个不同的部分,分别是质量保障,时效保障以及稳定保障。

以上就是我们整体的保障措施。

三、快手场景问题及解决方案

1. PV/UV 标准化

1.1 场景

第一个问题是 PV/UV 标准化,这里有三个截图:

快手关播是什么,Flink(5)

第一张图是春晚活动的预热场景,相当于是一种玩法,第二和第三张图是春晚当天的发红包活动和直播间截图。

在活动进行过程中,我们发现 60~70% 的需求是计算页面里的信息,如:

1.2 方案

抽象一下这个场景就是下面这种 SQL:

快手关播是什么,Flink(6)

简单来说,就是从一张表做筛选条件,然后按照维度层面做聚合,接着产生一些 Count 或者 Sum 操作。

基于这种场景,我们最开始的解决方案如上图右边所示。

我们用到了 Flink SQL 的 Early Fire 机制,从 Source 数据源取数据,之后做了 DID 的分桶。比如最开始紫色的部分按这个做分桶,先做分桶的原因是防止某一个 DID 存在热点的问题。分桶之后会有一个叫做 Local Window Agg 的东西,相当于数据分完桶之后把相同类型的数据相加。Local Window Agg 之后再按照维度进行 Global Window Agg 的合桶,合桶的概念相当于按照维度计算出最终的结果。Early Fire 机制相当于在 Local Window Agg 开一个天级的窗口,然后每分钟去对外输出一次。

这个过程中我们遇到了一些问题,如上图左下角所示。

在代码正常运行的情况下是没有问题的,但如果整体数据存在延迟或者追溯历史数据的情况,比如一分钟 Early Fire 一次,因为追溯历史的时候数据量会比较大,所以可能导致 14:00 追溯历史,直接读到了 14:02 的数据,而 14:01 的那个点就被丢掉了,丢掉了以后会发生什么?

快手关播是什么,Flink(7)

在这种场景下,图中上方的曲线为 Early Fire 回溯历史数据的结果。横坐标是分钟,纵坐标是截止到当前时刻的页面 UV,我们发现有些点是横着的,意味着没有数据结果,然后一个陡增,然后又横着的,接着又一个陡增,而这个曲线的预期结果其实是图中下方那种平滑的曲线。

为了解决这个问题,我们用到了 Cumulate Window 的解决方案,这个解决方案在 Flink 1.13 版本里也有涉及,其原理是一样的。

快手关播是什么,Flink(8)

数据开一个大的天级窗口,大窗口下又开了一个小的分钟级窗口,数据按数据本身的 Row Time 落到分钟级窗口。

以上是 PV/UV 一个标准化的解决方案。

2. DAU 计算

2.1 背景介绍

下面介绍一下 DAU 计算:

快手关播是什么,Flink(9)

我们对于整个大盘的活跃设备、新增设备和回流设备有比较多的监控。

但是我们计算过程之中可能需要 5~8 个这样不同的 Topic 去计算这几个指标。

我们看一下离线过程中,逻辑应该怎么算。

首先我们先算活跃设备,把这些合并到一起,然后做一个维度下的天级别去重,接着再去关联维度表,这个维度表包括设备的首末次时间,就是截止到昨天设备首次访问和末次访问的时间。

得到这个信息之后,我们就可以进行逻辑计算,然后我们会发现新增和回流的设备其实是活跃设备里打的一个子标签。新增设备就是做了一个逻辑处理,回流设备是做了 30 天的逻辑处理,基于这样的解决方案,我们能否简单地写一个 SQL 去解决这个问题?

其实我们最开始是这么做的,但遇到了一些问题:

2.2 技术方案

针对以上问题,介绍一下我们是怎么做的:

快手关播是什么,Flink(10)

如上图的例子,第一步是对 A B C 这三个数据源,先按照维度和 DID 做分钟级别去重,分别去重之后得到三个分钟级别去重的数据源,接着把它们 Union 到一起,然后再进行同样的逻辑操作。

这相当于我们数据源的入口从万亿变到了百亿的级别,分钟级别去重之后再进行一个天级别的去重,产生的数据源就可以从百亿变成了几十亿的级别。

在几十亿级别数据量的情况下,我们再去关联数据服务化,这就是一种比较可行的状态,相当于去关联用户画像的 RPC 接口,得到 RPC 接口之后,最终写入到了目标 Topic。这个目标 Topic 会导入到 OLAP 引擎,供给多个不同的服务,包括移动版服务,大屏服务,指标看板服务等。

这个方案有三个方面的优势,分别是稳定性、时效性和准确性。

此时我们遇到了另外一个问题 - 乱序。对于上方三个不同的作业,每一个作业重启至少会有两分钟左右的延迟,延迟会导致下游的数据源 Union 到一起就会有乱序。

2.3 延迟计算方案

遇到上面这种有乱序的情况下,我们要怎么处理?

快手关播是什么,Flink(11)

我们总共有三种处理方案:

综合来看这三个方案:

3. 运营场景

3.1 背景介绍

快手关播是什么,Flink(12)

运营场景可分为四个部分:

下面进行分析这 4 种不同的状态产生的一些不同的场景。

快手关播是什么,Flink(13)

前 3 种基本没有什么差别,只是在查询模式上,有的是特定业务场景,有的是通用业务场景。

针对第 3 种和第 4 种,它对于更新的要求比较低,对于吞吐的要求比较高,过程之中的曲线也不要求有一致性。第 4 种查询模式更多的是单实体的一些查询,比如去查询内容,会有哪些指标,而且对 QPS 要求比较高。

3.2 技术方案

针对上方 4 种不同的场景,我们是如何去做的?

快手关播是什么,Flink(14)

四、未来规划

上文一共讲了三个场景,第一个场景是标准化 PU/UV 的计算,第二个场景是 DAU 整体的解决方案,第三个场景是运营侧如何解决。基于这些内容,我们有一些未来规划,分为 4 个部分。

快手关播是什么,Flink(15)


原文链接:http://click.aliyun.com/m/1000291942/

本文为阿里云原创内容,未经允许不得转载。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
混沌战争
混沌战争
下载
我们之中飞船版
我们之中飞船版
下载
色线索
色线索
下载
贵州美食娱乐平台
贵州美食娱乐平台
下载
收集荷取金
收集荷取金
下载
喔喔兔局域网传输软件1.0.1绿色版
喔喔兔局域网传输软件1.0.1绿色版
下载
全面战争三国大型平衡MOD
全面战争三国大型平衡MOD
下载
SView看图纸
SView看图纸
下载
摩托艇赛车冠军ios
摩托艇赛车冠军ios
下载
芝课书法
芝课书法
下载
担当办公
担当办公
下载
htcincredible驱动通用版
htcincredible驱动通用版
下载
热血坦克百度版
热血坦克百度版
下载
噬神令
噬神令
下载
花样水上摩托3D
花样水上摩托3D
下载
你好疯狂邻居2
你好疯狂邻居2
下载