某智能终端厂商流量商业化项目的云原生大数据平台实践

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 随着流量获取,移动互联网业务成为集团三大战略之一,启动流量商业化项目,包括类似阿里妈妈的流量联盟、帮助广告主更好买量的数字化营销平台以及用户体系等,其中广告检索和广告大数据平台成为支撑整个流量商业化项目的技术基础。

本文作者:仲向远、欧阳楚才


客户从事以手机为核心的智能终端的设计、研发、生产、销售和品牌运营,致力于成为新兴市场消费者喜爱的智能终端产品和移动互联服务提供商。智能终端产品在全球新兴市场有广泛的覆盖和用户基础,通过与国内互联网公司合作推出了众多移动互联网业务,成为全球增长最快的移动媒体渠道。


项目背景

随着流量获取,移动互联网业务成为集团三大战略之一,启动流量商业化项目,包括类似阿里妈妈的流量联盟、帮助广告主更好买量的数字化营销平台以及用户体系等,其中广告检索和广告大数据平台成为支撑整个流量商业化项目的技术基础。


广告检索平台的业务场景包括:

1)将海量广告从广告库中实时同步到检索系统,构建正排索引和倒排索引;

2)承接C端的高并发请求,经过召回层和检索层做多级筛选和排序,从海量广告库中筛选出几百个广告返回给前端,实时性要求高。


广告大数据平台需要聚合各种异构数据源,完成离线和实时数据分析和统计,产出业务报表,生产模型特征等,其中业务报表是是核心业务,它是广告主、平台运营人员进行投放优化、业务决策的依据。


广告检索和广告大数据平台面临的技术挑战主要有:

1、高并发:广告引擎和C端流量对接,请求量大,2022年峰值超过6万QPS。

2、实时性:广告检索结果实时响应(P99 100ms内)、广告索引实时同步和更新(秒级)。

3、业务逻辑复杂:一次广告请求,涉及到多路召回、算法模型打分、竞价排序等复杂的业务流程,策略多,执行链路长。

4、稳定性要求高:广告系统直接跟收入挂钩,广告引擎及计费平台等核心系统稳定性要求很高,可用性至少要做到3个9。

5、大数据存储和计算:随业务发展,推广数量以及扣费订单数量很容易达到千万甚至上亿规模,另外收入报表的分析维度多,单报表可能达到百亿级别的记录数。


技术选型

面临上述快速变化的业务需求和技术挑战,客户摒弃基于开源组件从零开始构建的技术架构方案,期望通过云原生架构,满足整个架构的硬需求和软需求,以便将更多的精力和时间用在业务思考和数据赋能的应用上。


硬需求:检索引擎、离线计算引擎,实时计算引擎,OLAP分析引擎,KV存储,实时数据集成工具,分布式存储系统。

软需求:高并发高可用,实时性强、灵活易扩展、易于运维管理和全链路数仓构建。


通过一个月时间的调研和POC,客户主要从以下4个因素进行考量后,决定选择阿里云云原生大数据平台方案:


  1. 阿里云ElasticSearch提供高性能硬件、广告场景配置模板、优化的内核、负载均衡、多可用区部署等高性能和高可用能力,支持大规模、低时延的广告召回。
  2. 灵活的数据集成和OSS数据湖集成能力:数据主要来自于RDS业务数据、Kafka实时用户行为数据,以及第三方云服务商对象存储中的历史用户行为数据。阿里云DataWorks提供灵活、可视化的数据集成能力,方便从业务数据到广告检索和大数据平台的离线和实时数据同步;阿里云MaxCompute提供湖仓一体能力,可以方便地处理OSS上来自于第三方云服务商的半结构化数据。
  3. 阿里云云原生大数据平台离线实时一体化、分析服务一体化能力可以极大地简化大数据平台的架构。
  4. 在海外region有较完备的产品服务能力。


以下是各个组件的定位:


实现架构

整体架构

技术选型确定之后,开始建设广告检索和大数据平台数据中台,以下为架构图:

广告检索平台架构

广告检索平台使用Elasticsearch+Flink+RDS+Kubernetes构建,架构图如下所示:


架构的各组件说明:


  1. 数据接入

广告数据源为RDS MySQL关系型数据库,通过Flink实时捕获变更数据,并同步到Elasticsearch。Flink CDC 基于数据库日志的 Change Data Caputre 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游生态,支持捕获多种数据库的变更,并将这些变更实时同步到下游存储。


  1. 广告召回

为了支持高并发、低延时、高可用的查询服务,使用Elasticsearch作为召回引擎,多路召回广告信息。Elasticsearch中索引分片数按照单个分片30GB左右规划,将索引主分片设为1,副本数设为节点数-1,通过扩展节点数可以弹性提升查询性能。不需要支持范围查询的数值字段,把integer类型字段改为keyword类型,提升查询速度。在业务低峰期,使用_forcemerge API来对分段执行合并操作,每个分片中最大允许一个分段。为了避免JVM垃圾回收对查询延迟时间的影响,堆内存超过16GB的场景下,使用垃圾回收器G1替代CMS为了避免高并发查询请求导致带宽打满,应用程序本地缓存搜索结果,配置缓存1分钟后过期。系统上线前,通过全链路压测,验证需要的Elasticsearch服务、应用程序Kubernetes容器节点和规格。Elasticsearch数据节点规格16核32G内存、100GB ESSD云盘,总共配置28个数据节点,并配置3个专有主节点。

Elasticsearch查询性能监控


广告大数据平台架构

广告大数据平台使用 MaxCompute+DataWorks+Flink+Hologres构建,架构图如下所示:


架构的各组件说明:

1)数据源:

广告日志:来自App、Web、服务端等端的广告展点消日志;

业务数据库:存储业务数据的关系型数据库,主要是RDS。


2)云Kafka消息中间件

提供广告日志、系统日志、用户行为日志、RDS CDC数据的消息汇聚;提供计费明细数据的消息汇聚。


3)数据接入

通过DataWorks从Kafka中实时消费广告日志数据,并实时写入MaxCompute;业务数据通过DataWork从RDS离线周期性同步到MaxCompute;第三方云服务商大数据系统中的历史数据通过OSS同步工具从S3同步到OSS,MaxCompute通过OSS外表直接访问。


4)离线数据处理

离线数据处理基于MaxCompute搭建,用于计算全量数据,数据源来自于DataWorks的实时和离线导入。离线数据经过离线数仓计算(ODS层->明细层→汇总层),导入Hologres作为存量数据,一部分离线的DWD/DWS数据也导入Hologres作为维表的存量数据。

数仓模型采用分层设计,主要分为ODS层、明细层和汇总层:

ODS层:对应各种源数据,包括MaxCompute中存储的实时导入的广告日志,增量或者全量同步的MySQL业务数据表。

明细层:包含维度表和事实表,通常是对源数据进行清洗后的数据宽表,比如行为日志表、推广宽表、用户宽表等。

汇总层:对数据进行轻粒度的汇总表,比如广告效果表、用户行为的全链路表、用户群分析表等。


5)实时数据处理

实时数据处理基于Flink搭建,用于实时广告日志数据的预处理和ETL,数据源来自于Kafka和RDS CDC,经实时处理后写入实时数仓Hologres和计费Kafka,供对外提供数据服务和下游计费系统的处理。


6)数据服务

由于应用层报表部分面临聚合维度多、单表达百亿级行数、需要支持低延迟的查询等挑战,选择了Hologres作为交互式分析引擎, 聚合维度多, 需要分时、分广告位、分推广等几十个维度; 单表最大达到百亿级别;支持时间范围的实时查询。

另外为了提供统一、安全的数据服务,使用DataWorks数据服务能力,构建统一的数据服务API目录,并提供服务授权和计量管控。


7)数据数据应用

上层应用场景直接使用的数据表,包括多维分析生成各种收入报表、MaxCompute任务产出的算法模型特征和画像数据等。


业务价值

在确定平台方案和架构后,经过短短3个月时间,客户从0到1完成广告大数据平台的建设,并支持广告项目在海外多地的全面推广和落地,在技术和业务方面的带来的价值如下:


  • 为广告业务提供了高QPS、低延迟、高可用的企业级广告召回引擎,支撑业务快速从0到1增长,2022年QPS超过6万。
  • 为运营人员提供了分钟级/秒级的实时看板服务和实时报表,可以及时了解到广告收入和效果;为广告推荐算法提供了秒级的实时用户行为反馈,从而可以让广告召回系统及时根据用户反馈调整召回策略,从而提高广告投放效率。
  • 开发效率大为提高,开发人员从原来的作坊式开发,切换到DataWorks一站式、向导式的开发模式,数据集成零代码,数据开发SQL化,任务调度配置化,运维监控可视化,开发效率提高了2-3倍,学习的梯度也降低了很多。
  • 运维成本和复杂度下降,之前需要维护Hive、Spark、HBase, 、Druid等异构系统,采用阿里云云原生离线实时一体化、分析服务一体化的大数据产品,极大地简化了平台架构,同时全托管服务免运维


未来期望

客户在使用阿里云云原生大数据产品构建了大数据平台后,在后续的使用过程中也提出了更多的要求:


  1. 国际化能力的支持

客户业务范围覆盖多个国家,目前使用DataWorks做任务调度,只能按照固定时区时间进行调度,无法灵活配置按本地时区或某基准时区时间进行调度,导致任务开发不方便,需要较大的代价做时区适配,严重时甚至影响任务产出。


  1. 极致高性能高可用的广告检索引擎

随着业务的发展,客户对广告检索引擎的高性能达到极致的要求(满足峰值近10万QPS P99响应时间20ms内),检索引擎的性能优化之路永无止境;广告检索引擎直接对接客户业务,除了多AZ部署方面等硬能力之外,客户更关注的是故障演练规范、故障切换的最佳实践等这些软能力,这块期望阿里云能够有更多的支持。


了解更多阿里云大数据方案与产品信息 >>


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
12天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
53 2
|
11天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
15天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
2天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
3天前
|
Cloud Native 安全 Docker
云原生技术在现代应用部署中的实践与思考
本文深入探讨了云原生技术如何在现代应用部署中发挥关键作用,并提供了具体的代码示例来展示其实现。通过分析云原生的核心概念和优势,我们将了解如何利用这些技术来提高应用的可扩展性、可靠性和安全性。文章还将讨论云原生技术的未来发展趋势,以及如何将其应用于实际项目中,以实现更高效和灵活的应用部署。
|
10天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
34 5
|
12天前
|
运维 Cloud Native 安全
云原生技术在现代软件开发中的实践与挑战####
【10月更文挑战第21天】 本文将深入探讨云原生技术在现代软件开发中的应用,分析其带来的优势及面临的挑战。通过案例分析和数据支持,揭示云原生化转型的关键因素,并展望未来发展趋势。 ####
33 7
|
12天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
12天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
26 3
|
12天前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 下一篇
    无影云桌面