文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

万字详解:知乎用户画像与实时数仓的架构与实践

2024-12-01 19:07

关注

一、前言

知乎业务中,随着各业务线业务的发展,逐渐对用户画像和实时数据这两部分的诉求越来越多。对用户画像方面,期望有更快、更准、更方便的人群筛选工具和方便的用户群体分析能力。对于实时数据方面,期望拥有可以实时响应的用户行为流,同时在算法特征、指标统计、业务外显等业务场景有愈来愈多的数据实时化的诉求。

在 2021 年 8 月,知乎平台团队成立数据赋能团队。针对历史实时数据需求无承接方的现象,已有用户画像系统无法满足多样的人群定向的现状,及业务方进一步人群分析的业务诉求,提出基础设施层选用Apache Doris作为实时数据仓库技术选型,业务工具层建设实时数据集成、实时数据调度、实时数据质量中心等系统,应用层建设实时数据应用和用户画像应用的方案。该方案针对性地解决了业务痛点,满足了业务诉求。

拆分当前业务主要在实时数据和用户画像两大部分有难点,共包含如下的三个方向目标:

1)实时业务数据

通过提供实时的业务指标,解决业务对热点、潜力的把控,助力生产、消费,提升优质创作量及内容消费能力。

2)实时算法特征

3)用户画像

本文就知乎平台的数据赋能团队,基于以上三个方向的目标,就这四个问题,来逐一介绍这方面的技术实践经验和心得体会:

​1、名词解释

​2、实时数据与用户画像与各业务的结合

二、面临的挑战和痛点

针对当前业务目标,主要有以下几个具体要求。

​1、有价值

1)如何通过实效性发现业务价值?

2)如何让用户画像的筛选和分析能力最大化?

​2、数据时效性

1)推荐页首屏浏览 6 条内容,如何在第二刷的时候就立即感知到最新的用户行为?

2)在推荐算法中,非常实时的特征推荐算法效果要比天级别更新特征的算法效果好很多,如何保证 10 分钟内算法受到特征变更?

​3、接口实时性

热点运营场景,期望用户画像服务能在秒级别快速筛选出大量人群,用户后续的推送等运营场景,如何解决?

​4、复杂性

1)实时数据几乎没有 count、sum 需求。几乎都是复杂去重和多数据联合计算的情况。

2)人群分析业务,期望多角度、各维度进行人群关联计算,同时基于全部用户特征针对当前人群和对比人群进行 TGI 计算,筛选出显著特征,如何解决?

3)业务数据中有增 / 删 / 改逻辑,如何实时同步?

4)明细数据异常发现滞后,异常发现后,需要针对性修正构建方式,及回溯数据修复,如何解决?

三、实践及经验分享

​1、整体业务架构

基于当前的业务,从顶层至底层进行了拆分。主要分为应用层、业务模型层、业务工具层、基础设施层。基于我们当前的业务形态,自上而下。

​2、实时数据的数据架构选型

解决当前问题的数据架构,一般有 Lambda 架构和 Kappa 架构。针对当前业务特点,计算复杂、偶发的异常问题需要大数据量回溯等特性。当前实时数据的数据架构采用的是 Lambda 架构。由 Doris 承载分钟级的批处理,Flink 来承载秒级别简单逻辑的流处理。具体如下:

​3、应用层建设经验分享

1)实时数据系统​

①业务场景​

实时数据系统主要有两个大方向:实时业务数据和实时算法特征。

②面临的困难​

③解决方案​

当前我们的 Load 主要有 Broker Load 和 Routine Load。其中时效性要求高的是 Routine Load。我们针对性的进行了参数调整。

Doris 集群在 0.14 版本中加入了 Runtime Filter 的过滤,针对 Join 大量 key 被过滤的情况有明显提升;该变更针对我们当前的几个业务调度性能,有明显提升。时间从 40+s 提升至 10s 左右。

2)用户画像系统 DMP

①业务场景​

用户画像系统主要有两大功能:用户检索和用户分析。

重点在于快速完成人群包圈选同时在圈选条件变更过程中,需要快速计算出预计能圈的用户有哪些?

重点在于多人群包的各个维度对比分析,通过分析结论找到最明显的用户特征(通过 TGI 值判断)

②面临的困难

③解决方案​

Doris 的存储是按照 Tablet 分散在集群上的。通过调整数据模型,确保分布均匀及每个文件尽可能的小。

‍由于每个 Broker Load 导入都是有性能瓶颈的,将 900+ 亿行数据,拆分为 1000+ 个 Broker Load 的导入任务,确保每个导入总量都足够小。

  1. 将用户每 0 ~ 100 万拆分为一组。
  2. 针对全部用户的交并差,等价于对所有组用户交并差后的并集。
  3. 针对全部用户的交并差的总数,等价于对分组用户交并差后的总数进行 sum。

  1. 设置 bitmap 的分组参数,将分组设置为 colocate group。确保每个分组的交并差计算均在自己所在 BE 完成,无需 shuffle。
  2. 将 bitmap 表的分桶拆分更多,通过更多文件同时计算加速结果。

由于计算过程通过分治的手段,拆分为多个小任务。通过提升并行度 parallel_fragment_exec_instance_num 再进一步优化计算速度。

④效果 ​

上线后,接入了知乎多个主要场景的业务,支持多业务方的人群定向和分析能力。为业务带来曝光量、转化率等直接指标的提升。

同时在工具性能上,有如下表现:

⑤待提升​

​4、工具层建设经验分享

1)数据集成

①业务场景​

“巧妇难为无米之炊”,没有数据也就没有后面的一切,数据采集作为基础至关重要。Doris 数据仓库自带的多种数据导入方式 对于数据入仓非常便利,但是在我们的使用过程中也遇到了一些问题。比如:

②解决方案

在建设实时数据模型的过程中。需要依赖众多业务的数据,同时需要针对数据逐层建设数据模型。摸索并搭建了实时数据集成系统和实时调度系统,并下沉到工具层。

③效果​

全量:原始数据库 TiDB -> 中间部分(DataX)-> Doris

增量:原始数据库 TiDB -> TiCDC -> Canal Binlog Kafka -> ETL(填充数据)-> Kafka -> Routine Load -> Doris

2)数据调度​

①业务场景

我们在初期通过 Doris 建设实时数据的过程中,是通过 Routine Load 后的数据,再定时任务执行后续计算逻辑,后再将计算结果导出到承载存储,如 Redis、Zetta(知乎自研 HBase 协议) 中完成外部压力承载。在这个过程中遇到了如下问题:

②解决方案​

③效果​

3) 数据质量

①业务场景​

数据,已经成为互联网企业非常依赖的重要资产。数据质量的好坏直接关系到信息的精准度,也影响到企业的生存和竞争力。Michael Hammer(《Reengineering the Corporation》一书的作者)曾说过,看起来不起眼的数据质量问题,实际上是拆散业务流程的重要标志。数据质量管理是测度、提高和验证质量,以及整合组织数据的方法等一套处理准则,而体量大、速度快和多样性的特点,决定了大数据质量所需的处理,有别于传统信息治理计划的质量管理方式。

具体到针对知乎的各个业务:

AI平台、增长团队、内容平台等已经将部分或全部业务渐渐迁移到实时计算平台,在接入数据更实时,更迅速的接入带来的所享受的收益外,数据质量更加变得重要。

数据完整性问题包括:模型设计不完整,例如:唯一性约束不完整、参照不完整;数据条目不完整,例如:数据记录丢失或不可用;数据属性不完整,例如:数据属性空值。不完整的数据所能借鉴的价值就会大大降低,也是数据质量问题最为基础和常见的一类问题;

多源数据的数据模型不一致,例如:命名不一致、数据结构不一致、约束规则不一致。数据实体不一致,例如:数据编码不一致、命名及含义不一致、分类层次不一致、生命周期不一致……相同的数据有多个副本的情况下的数据不一致、数据内容冲突的问题;

准确性也叫可靠性,是用于分析和识别哪些是不准确的或无效的数据,不可靠的数据可能会导致严重的问题,会造成有缺陷的方法和糟糕的决策;

用于识别和度量重复数据、冗余数据。重复数据是导致业务无法协同、流程无法追溯的重要因素,也是数据治理需要解决的最基本的数据问题;

数据关联性问题是指存在数据关联的数据关系缺失或错误,例如:函数关系、相关系数、主外键关系、索引关系等。存在数据关联性问题,会直接影响数据分析的结果,进而影响管理决策;

数据必须真实准确的反映客观的实体存在或真实的业务,真实可靠的原始统计数据是企业统计工作的灵魂,是一切管理工作的基础,是经营者进行正确经营决策必不可少的第一手资料;

数据的及时性是指能否在需要的时候获到数据,数据的及时性与企业的数据处理速度及效率有直接的关系,是影响业务处理和管理效率的关键指标。

②解决方案​

③效果​

以通过 DQC 监控的某一个业务的健康情况,该业务由多个导出任务和中间计算任务及部分数据源组成,当前情况是一切正常。期间如果出现某节点任意异常后,都可及时发现。

 该任务中间计算中其中部分规则未达标,导致该任务未通过。

④收益​

四、总结和展望

​1、收益总结

1)业务发展方面

①针对实时业务数据

②针对实时算法特征

③针对用户画像

2)工具建设方面

3)人员组织方面

2、未来展望

从 2021 年 8 月成立至今,我们一直思考如何提供更好的实时数据服务?实时数据能建设什么方面的应用,为业务创造价值?如何将用户画像服务做好?用户画像服务的筛选、分析能力如何为业务创造更大价值?摸着石头过河的同时,我们也在不断摸索和建设相关的业务能力和基础建设。在明年的发展中,我们还会针对以下方面进一步发展:

1)基于实时数据

2)基于用户画像

来源:dbaplus社群内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯