腾讯新闻增长运营_从阿里巴巴的爆发式增长看网络营销

腾讯新闻增长运营_从阿里巴巴的爆发式增长看网络营销导读: 随着信息化时代的来临,信息呈现出爆炸式的增长。尤其是在移动互联网的推动下,每天大量信息涌入让人们应接不暇,腾讯新闻客户端的出现,就是以帮助用户寻找有用信息而出现。这时,面对海量的数据、繁多的业

罗强:腾讯新闻如何处理海量商业化数据?

file

导读: 随着信息化时代的来临,信息呈现出爆炸式的增长。尤其是在移动互联网的推动下,每天大量信息涌入让人们应接不暇,腾讯新闻客户端的出现,就是以帮助用户寻找有用信息而出现。这时,面对海量的数据、繁多的业务,如何处理手中的数据,利用数据赋能是今天会议讨论的重点。
今天的介绍会围绕下面三部分展开:

  • 背景介绍
  • 海量日志处理架构
  • 数据应用举例

01 背景介绍

首先介绍一下腾讯新闻的背景。

团队目前承担腾讯新闻客户端,体育和新闻插件的创新业务的输入,广告和用户行为的数据采集、处理、计算和分析的工作。最大的特点就是数据多、业务广。数据庞大,业务应用多样,例如数据会被用于报表展示、算法模型的训练、产品决策等场景。

file

02 海量日志处理架构

1. 总体架构

file

众所周知,业务在实际开发过程中需要一套有效的数据管理、组织、处理方法,使得整个数据体系更加有序。上图展示的是腾讯新闻整体的处理架构,包括:

  • 采集层:依托于大同数据采集上报服务,大同是目前内部力推的数据治理的客户端上报平台。

  • 计算层:包括实时计算与离线计算。离线是基于TDW(hive表)和HDFS建立的各个业务请求、点击、曝光等维度的数据表,同时利用欧拉平台的数据分层、数据分类、数据血缘等能力完成数据资产的管理。实时计算方面使用Oceanus平台和内部的Datahub完成整个数据的开发。这个设计解决了需求多变、代码复杂、系统高可用、海量数据低延时接入、数据高复用等问题。在ODS原始数据层、DWD数据明细层、DWS主题轻汇聚层,我们采用集团的Tube消息中间件,以及BG内部的CDMQ。Tube消息中间件解决海量数据及时接入的问题。数据各层由流式计算引擎进行业务的清洗与转化,结果会回流到下一个消息中间件,供下游使用。对于ODS层的实时数据我们会每隔一个小时同步到TDW,大概存储周期为3天,这部分数据既能用于离线计算,又能作为数据的备份。比如一些链路发生异常,可以利用这部分数据进行问题排查和数据恢复。

  • 数据存储层:组件比较丰富,有Impala、ClickHouse、Mysql、Redis等。Impala主要应用在内部灯塔平台和Datatalk平台进行报表和数据探测的工作中。

2.数据上报

file

这部分详细地讲解整个数据上报体系。目前数据上报会根据数据源进行分类上报。数据源主要分为四大类:

  • 客户端:包括客户端、PC、H5这类数据。采用灯塔SDK进行上报,使用大同SDK进行采集。同时会基于大同平台进行事件的管理,例如埋点的事件管理和统一参数的上报。大同平台有效地解决需求散乱、数据难校验、上报不规范等问题。在整个实时链路中,这部分数据接着会通过atta分发到TDW(hive表)和CDMQ实时中间件供下游进行实时消费。

  • 后台:主要包括后台服务器日志的上报。这部分数据会上报到Tdbank。Tdbank会同时将数据转化为TDW(hive表),同时还会分发到Tube实时流中,供下游进行实时消费。

  • DB:跟后台数据上报类似。以前的方式是DB同步,例如按小时更新或者按天更新将Mysql更新数据放到Hive表中。目前,会通过Flink CDC监听Mysql的binLog实时更新业务维表。

  • 文件:例如业务配置和运营的配置文件,量不大,会通过手动的方式离线同步到TDW(hive表)中去。

3. 实时计算框架

file

实时计算架构整体上选择Lamda架构,ODS层到DWD层数据的处理,实时和离线部分是公用的,也体现了流批一体的概念。下面就分模块介绍实时计算部分的整体架构。

  • 存储/接入层:负责客户端与后台的实时中间数据上报。数据被上报到消息中间件中,消息中间件一方面负责消息的存储,另一方面承担数据分发给离线和在线处理平台的功能,同时它是数据源和数据处理系统之间的桥梁。

  • DWD:DWD层的设计是为了减少下游频繁对ODS层数据进行消费。对于新的需求开发我们只需要申请DWD层的Tube消费节点即可。这样处理极大地节省了计算单元。

  • 计算层:主要负责数据的ETL、维表关联、特征抽取等业务逻辑的计算。

  • 数据仓库存储层:主要采用TDW(hive表)、HDFS和Impala作为存储介质。ODS层的原始数据默认保存在HDFS上,保存周期默认为3天。

另外,DWD和DWS层数据支持写入TDW和HDFS去做离线计算。同时也支持导入Impala进行存储,以供灯塔平台和DataTalk平台等进行数据探测和报表展示。

4. 离线计算框架

file

针对离线计算部分,我们对数据进行了分层管理,简单概括为以下四层:

  • ODS:原始数据存储层。存储大同上报或后台上报的原始数据,例如广告点击曝光等数据。

  • DWD:数据明细存储层。存储经过清洗和标准化的数据。

  • DWS:数据轻度汇合层。基于单业务场景或者单用户行为的汇总。

  • ADS:数据应用层。只要存储最终的,呈现结果的数据。例如存储报表和进入Impala之前的数据,或者 存储需要进入Redis、ClickHouse等的数据。

我们对数据层的调用进行了约束:

  • DWD层必须存在。且所有的ETL逻辑都在DWD层上。

  • DWS层优先调用DWD层。ADS优先调用DWS层。

  • DWD层不做过多与DIM维表的关联

同时我们对于表的命名进行规范,该命名规范使得杂乱无章的数据表变得规范有序,使得内部业务合作变得便利。具体规范如下:

file

5. 数据质量及链路保障

关于数据质量以及链路保障,分为在线和离线两部分进行讲解。

file

离线部分,一方面会依托平台提供指标监控告警以及SLA保障的能力;另一方面,在代码层面进行设计,通过异常捕获、分级告警,出错分层管理,重置机制等,提高整个系统的高可用和稳定性。

实时部分,最容易出错的就是Flink实时计算部分,例如出现内存不足、TaskManager突然减少、网络抖动导致的服务连接超时等。我们会依托于Oceanus平台提供的告警能力。我们设计了一套代码层级的告警作为报警独立模块。首先我们通过try catch捕捉Flink Task中的异常,同时这些报警信息会被发送到消息中间件,然后报警信息会在消息中间件中被聚合,为了预防报警疲劳,报警信息会被分级,错误码会被沉淀,然后报警会统一通过企业微信进行通知,正常情况问题可在5min内被解决。

6. 总结

file

我们在实时和离线对海量日志处理设计方案上的收益可以总结如下:

  • 首先,通过大同平台上报,使得上报更加规范化;

  • 第二是事件规范化,各个BG之间可以应用同一规范数据,有统一规范的数据格式和命名规则;

  • 第三就是数据仓库规范化,包括分层、主题、管理等,使得整体管理更加清晰。


03 数据应用举例

file

这部分,我们通过Flink CDC的DB数据同步技术,进一步举例说明我们的海量数据处理流程。上图是通过Flink CDC进行实时更新维表和实时排行榜更新的设计方案,整体主要包括输入数据源、Flink实时ETL模块、Flink核心计算模块和数据存储模块四部分。Flink内部继承开源组件Debezium和Kafka,CDC技术可以实时捕捉Mysql的增删改,然后将数据同步到下游,同步到多个数据源,然后通过抽取数据库日志的方式完成数据上报。

file

Flink CDC实现方式主要有两种:SQL模式和自定义反序列化模式。个人倾向于选择第二种方式,可以更加灵活地实现业务需求。通过实现反序列化相关接口,数据库的变更数据可以通过SourceRecord得到,解析之后的数据可以通过collect进行收集然后传到下游进行消费。

今天的分享就到这里,谢谢大家。
本文首发于微信公众号“DataFunTalk”。

原文地址:https://www.cnblogs.com/datafuntalk/archive/2022/05/22/16297821.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5220.html

(0)
上一篇 2023-05-18
下一篇 2023-05-18

相关推荐

  • MySQL修改时区的方法小结[通俗易懂]

    MySQL修改时区的方法小结[通俗易懂]问题现象:在数据库中的日期显示正常,但是通过JSP进行调用后发现时间偏差了13个小时。经查询,此问题是由于MySQL的默认时区设置造成的。 具体排查和操作方法如下: 一、查看MySQL当前时区和时间

    2023-03-18
    159
  • Python时间加减操作

    Python时间加减操作在日常编程中,时间操作是非常常见的。而对于Python开发人员而言,Python中提供的时间加减操作功能是非常强大的。Python的日期时间模块datetime可以方便地对时间进行计算、格式化、转换等操作。对时间加减操作的掌握不仅可以提高程序的实用性和可读性,而且可以使得编码更加高效。

    2024-07-01
    45
  • Python与API调用

    Python与API调用API是指应用程序接口,是一组预定义的函数,用于完成特定任务。众所周知,在现代互联网时代,很多应用程序都需要通过API调用来实现各种基于网络的功能。Python作为一种高级编程语言,具有简单易学、易读易写等诸多优点,在API调用领域也得到了广泛的应用。本文将会从多个方面详细阐述Python与API调用的关系,介绍Python如何调用API,并分享一些代码示例,以帮助读者更好地理解这个话题。

    2024-04-16
    74
  • DQL:查询表中的记录

    DQL:查询表中的记录DQL:查询表中的记录 * select * from 表名; 1. 语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件

    2023-03-22
    170
  • 阿里云分析型数据库MySQL版(AnalyticDB)测试初体验[通俗易懂]

    阿里云分析型数据库MySQL版(AnalyticDB)测试初体验[通俗易懂]其实是测试半遂体验。 这阵子对OLAP数据库产生了兴趣,先是简单测试了ClickHouse,性能的确不错,不过它在稳定&可靠性,整体生态&周边配套方面还有待加强,我会持续保持关注。 3月27日,腾讯…

    2023-02-23
    149
  • Python实现打开文件夹的方法

    Python实现打开文件夹的方法在Python程序中,我们可以使用os模块来调用操作系统自带的命令,实现文件夹的打开、删除、添加等操作。其中,打开文件夹是我们最为常见的操作之一。示例代码如下:

    2024-03-23
    78
  • 使用Python发送邮件

    使用Python发送邮件随着互联网的普及,电子邮件已成为人们日常生活和工作中必不可少的一种通讯方式。Python作为一种高效的编程语言,常被用来处理各种数据。当我们需要通过程序自动发送邮件时,Python便可以发挥出其优势。Python内置的smtplib和email库提供了一种灵活的方式来处理电子邮件,程序可以自动化地发送邮件,从而提高了邮件的发送效率,节约了使用者的时间。

    2024-01-03
    106
  • Python单例模式详解

    Python单例模式详解在编写Python程序时,有时需要确保某个类只有一个实例对象,这时就需要用到单例模式。单例模式是一种常用的设计模式,可以保证一个类只有一个实例。本文将详细介绍Python单例模式,包括作用、实现方法和代码实现。

    2024-04-29
    78

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注