Dolphin Streaming实时计算,助力商家端算法第二增长曲线

news2024/12/24 22:04:58

丨目录:

   1.背景

   2.业务问题

   3.业界解决方案

   4.技术方案

   5.应用示例

   6.业务收益

   7.总结

1. 背景

随着业务朝向精细化经营增长,阿里妈妈商家端营销产品更加聚焦客户投放体验,旨在帮助商家提升经营效果,在变化的市场中找到确定增长。近年来,商家端算法业务使用的数据是离线T+1甚至T+7更新,为进一步捕捉用户意图,更全面实时的挖掘潜在需求,利用实时行为及投放效果帮助广告主在成效预估、货品工具推荐等业务有更好效果,阿里妈妈数据引擎团队从21年开始在数据实时化开发方面进行探索尝试,从实时角度助力商家端算法第二增长曲线。

2e5fbcc022298d787591e8dcc4523b15.png
货品工具推荐场景

2. 业务问题

与用户端(C端)相比,商家端(B端)算法业务更具多样性,但对实时数据的使用还处于启蒙阶段。目前面向C端的实时开发服务已经很成熟,但开放的能力比较基础,且这些能力主要面向工程同学,但在实际B端场景中,因算法工程支持资源有限,而算法同学自己直接开发实时作业成本较高,不仅需要学习了解上游实时数据源订阅信息,还需要了解不同存储引擎选型等工程技术支持,例如Igraph(阿里集团内部KV存储引擎)、Lindorm(阿里云多模存储引擎)和Hologres(阿里云HTAP存储引擎)等,所以需要有一个更算法友好的开发平台,实现让非工程同学也能轻松开发实时作业

那么,对于算法同学什么开发方式最简单?因为算法同学对SQL非常熟悉,每天大量工作都在Dataworks(Dataworks是阿里集团大数据开发平台)完成,所以能让实时作业SQL化开发是平台确定方向。目前Flink已经可以提供SQL化开发,但仅提供基础实时计算开发能力,存储方面需要自己选择,对于非工程技术人员仍有较高的学习成本,故期望如下能力:

  • 屏蔽底层细节的SQL化开发,不仅开发SQL化,还可以帮助用户屏蔽底层存储和上层数据源配置信息,降低学习及开发成本;

  • 统一的数据中心,从实时开发的数据获取、开发调试及上线End2End一体化,提升开发效能。

3. 业界解决方案

如何更高效开发实时作业,业界有很多尝试和探索。

3.1 集团内部解决方案

在集团内部,经常使用的实时化产品有AMC特征中心和蚂蚁特征服务平台等,它们体系化建设完善且功能全面,但大多是工程同学使用,有一定开发使用成本。

3.1.1 AMC特征中心

AMC是特征样本平台,解决主搜场景算法同学特征迭代遇到的问题,提供复杂特征开发和统一特征管理问题。

914429596e6227061a54730060fde02f.png

在复杂特征开发方面提供TableApi,支持算法自助开发复杂特征,该方案灵活性比较高,但是从算法开发体验和debug角度看,成本仍然较高。

3.1.2 蚂蚁特征服务平台

蚂蚁提供全平台统一的特征服务平台,提供特征管理、服务、分析和计算等能力。

f19334ddd9c82d4974ae9bc114372b5f.png

为了简化计算流程,平台提出特征SQL语法,该语法使用类似SQL,但区别较大,对新开发同学学习成本不低,因为新语法有很多非通用概念。

3.2 外界解决方案

调研发现外界有很多类似的设计,主要有老牌云厂商Cloudera的SSB和新兴公司RisingWave。

3.2.1 Cloudera Stream Builder

Cloudera在实时开发方面有成熟商业化实践,Stream Builder整体上是基于Flink和Database封装形成实时开发平台,使用SQL进行开发,数据经过Flink处理写入database,从Database读取数据,架构图如下。

f0e409926737e7f2dadeb4fb4ef76214.png a7125af8f62991cb8a05fac5bb615b7d.png

上图为用户开发页面,所有的数据源和存储库都抽象出来,配置一次即可,无需每个job都配置一次,此外该平台还提供sample能力支持数据preview,大幅提升数据开发效率。

3.2.2 RisingWave

RisingWare在2021年底开源,主打实时数据库,不仅包括实时计算能力,还有自己的存储,提供PG SQL语法,用户可以像使用传统数据库一样开发实时作业,整个流程就像操作传统数据库,所写即所得

它和我们系统设计的目标非常一致,提供通用的SQL语法,且使用方面不用过多考虑数据来源和存储选择,学习成本、开发、调试及上线都一体化,是用户体验和开发成本更优的方案,但RisingWave还在dev阶段。

4. 技术方案

当前集团提供的实时开发方案多面向工程技术同学,具有相对灵活的控制能力,可解决超大规模复杂场景;但在广告商家端场景,面对百万规模的用户实时行为,业务更看重开发迭代效率,期望把复杂工程细节屏蔽,节省人力成本提升迭代效率。

b861d293fd391626de6ca96d156af0bf.png

Dolphin引擎是阿里妈妈数据引擎团队自2018年底研发的超融合一体化计算引擎,在面向商家端营销产品场景下经过多年发展,已经从最初的OLAP计算延伸到AI计算、实时计算和批量计算,让业务迭代效能达到较高水位。

引擎基于在SQL领域的基础能力,在2021年中研发出Streaming框架能力,填补实时计算能力空白,解决实时计算高开发及维护成本问题,下图是Dolphin Streaming在整体B端工程解决方案的定位,主要是基于计算存储引擎以及SQL引擎能力构建。

955db77d980a6d1acf17d600731b4596.png

4.1 设计思路

Dolphin Streaming设计目标是像开发数据库一样开发实时作业(DB for Streaming),让算法等非工程用户也可以轻松开发实时作业,具体包括:

  • 极简SQL语法:屏蔽有理解成本的实时开发术语,如TUMBLE、HOP等;

  • 底层技术无感知:为算法用户及其他非工程用户提供一套开发平台,无需过多感知上下游数据源和存储;

  • 流程一体化:打通从实时数据开发、迭代到上线读取全流程。

该设计跟Cloudera、Risingwave有很多相似,但也有区别:

  • 不仅关注实时开发平台,还关注用户对实时数据获取、开发及高效复用;

  • 设计简化SQL语法,屏蔽TUMBLE、HOP等概念;

  • 不仅关注数据开发产出,还关注用户开发后直接上线数据流程

4.2 架构图

我们开发了从数据、计算引擎到上线一体化方案,端到端高效实现数据开发、存储、debug查询及上线整个流程。

606ebe110342d70f0fe74586d04dc0ba.png

4.3 数据层

目前阿里妈妈广告商家端数据散落在各个团队,我们期望面向商家端场景搭建数据中心,让离线和实时数据被更好的管理、复用。具体设计如下:

  • 将实时行为标准化,沉淀实时、离线特征基础设施,提升数据复用,减少重复存储和开发。

  • 建立实时数据地图,降低实时数据查找、管理及维护成本。

建立商家端数据中心,并跟极光开发平台结合,形成集团公共层、妈妈商家端中间层到业务应用层三层数据体系。

d0e6dd67bc4d731254c79854ab81b9e3.png

此外,我们还建立了面向商家端算法实时开发的协作模式:

  • 数据同学负责将集团公众层非结构化数据ETL为结构化的实时数据中间层;

  • 算法等非工程同学自主使用Dolphin SQL将上游中间层实时数据进一步开发聚合为所需要的特征数据;

  • 特征数据会进入商家数据中心被复用。

135a4840d972bcc63cc24f0a63462ac1.png

数据同学开发的中间层数据进入商家数据中心,数据一方面可被直接被查询,另一方面可以给算法同学开发特征使用,开发的特征会进入商家特征中心,从而形成数据闭环和复用,如下图所示。

23e57469129f4387aad63b2a45171639.png

4.3 Dolphin引擎

Dolphin Streaming在实现方面基于Flink实现,使用OpenAPI实现对Flink job的创建、资源配置和启停;在存储方面使用GP、Hologres和igraph,该方案既利用现有引擎支撑大规模场景的成熟能力,又让使用体验像数据库一样简单。下图是Flink、RisingWave和Dolphin Streaming的架构特点:

47925f84e8af66d3baf381eedebac62c.png

这里主要对比Dolphin Streaming跟Flink的区别:

  • Flink定位实时计算引擎,没有自己的存储,用户在使用必须定义外部存储

  • Dolphin Streaming屏蔽计算和存储引擎计算引擎使用Flink,存储使用不同引擎

    • 用户无需感知Flink SQL语法,只需要使用更简单,更接近SQL标准的Dolphin SQL

    • 用户开发无需感知底层存储类型、表配置等信息

Dolphin Streaming提供数据库SQL操作方法,使用Flink成熟大规模计算能力,屏蔽存储,让实时数据开发和查询一体化,是结合用户使用体验和性能的不二之选

4.3.1 SQL转译

Dolphin streaming提供一套面向算法用户友好的SQL语法,屏蔽数据源信息、中间结果处理、输出信息,让算法用户开发实时特征就像在Dataworks上开发离线计算作业一样简单。

(1)实时作业开发

新作业的整体开发流程分为定义输入源、定义输出源和定义计算逻辑三个部分,定义数据源只需要执行一次全局可用,无需每个作业都重复定义。为了屏蔽底层复杂的实时计算语义理解问题,我们设计更简化的UDF,让开发更简单,例如:

  • window_row(amount),窗口函数,按时间排序取最近amount条行为。

  • window_time(timecloum,timeunit) 按照单位时间进行指标序列聚合

(2)实时数据查询

传统方案特征查询都是使用存储引擎对应的client来查询,不同引擎查询方法都不一致,这里我们使用Dolphin SQL屏蔽底层查询引擎,使用统一的SQL语法查询,不仅降低开发成本,还让特征debug调试更简单,调试完的SQL可以直接在线上使用。

很多场景都存在实时特征和离线特征一起作为请求入参,一般都是分别查询实时和离线特征再拼接,为提升效率,Dolphin SQL支持在SQL查询就可以让实时特征和离线特征join实现参数拼接,极大提升开发效率。

SELECT a.id, a.action_list, b.city, b.level
FROM realtime_feature_table a
JOIN offline_feature_table b ON a.id = b.id

4.3.2 作业调度

Dolphin Streaming通过openApi进行作业进行调度运维,包括:

  • 作业创建、执行计划生成、作业启动

  • 作业停止、作业暂停、作业状态查询

4.3.4 Debug功能

传统使用Flink debug都是写一个job打印数据记录,需要写一个完整的job,效率较低。为了让用户debug更简单支持用户使用select语句探查实时数据源表,进行快速ETL开发,无需提前定义上游源数据,相较Flink非常高效。

5. 应用示例

作为整体端到端方案,我们实现极光开发平台打通Dolphin Streaming能力,可以直接在极光开发平台(极光是阿里妈妈商家端数据开发平台)进行数据管理、实时作业开发、debug调试及运维管理,让实时数据问题在这里一站式解决。

5.1 数据开发

用户直接基于上游中间层实时数据进行开发,定义好输入输出源,然后定义计算逻辑即可,上游TT的subId,accessId,accessKey信息都在SQL转译阶段生成,用户无感知,下游存储表信息也都是自动创建和生成。

2737a1d799609d2ad0932b06f6dc720e.png

5.2 特征数据查询

开发好特征数据之后可以直接查询实时结果,验证计算逻辑,如果没问题该查询SQL可以在线上直接查询Dolphin使用。

fa414ed8caca5c22007d11227228e0de.png

5.3 数据探查

当上游TT表已经提前注册好,直接像数据库一样select查询表就可以实时获取探查结果,在数据debug,数据探查方面非常实用高效。

01d7e088fa934658302990bb55d8dec9.png

6. 业务收益

Dolphin Streaming支撑商家端算法实时特征开发,包括阿里妈妈直通车、引力魔方成效预估及如意货品推荐等场景,已取得显著收益。

  • 支持客增如意货品推荐服务顺利经历本次双十一大促考验,通过对客户行为序列的精细化兴趣建模,应用到5+场景,实现拉新、活跃和新建计划客户数增长显著,整体实时特征在线查询QPS达到6000+,实现Dolphin引擎查询业务量翻倍增长。

  • 通过引入实时广告效果数据,支持万相台MCB、千牛小程序及直通车智能计划等3+场景成效预估,其中万相台MCB带来cost及ARPU值显著提升。

7. 总结

在大规模实时场景,数据开发需要专业的工程技术同学支持,优势是可以达到极致性能;但在大多数普通规模实时场景中,如何简单高效的开发、迭代、测试和上线是业务方更关注的因素。

通过Dolphin Streaming提供面向算法等非工程同学的实时开发DB for Streaming解决方案,实现从数据获取、特征开发到特征上线整个流程一体化完成,在广告商家端算法场景不仅节省了算法到工程之间的沟通时间,还降低了开发人力成本,让业务迭代效率更高,实现规模化提升实时研发效能。

用户使用越简单,关心的内容越少,越是需要背后大量的用户理解和研发工作,未来我们会继续以用户体验和研发效能为中心,用技术提升商家经营增长。

附阿里妈妈工程平台智能分析引擎团队系列文章,欢迎阅读交流~

🏷 阿里妈妈Dolphin分布式向量召回技术详解

🏷 FAE:阿里妈妈归因分析与用户增长分析引擎

🏷 面向数智营销的 AI FAAS 解决方案

END

a0a03d344f88ad641a8ca1d6ea6b8e6c.gif

关注「阿里妈妈技术」,了解更多~

2a79e61fcced4f1a5c97d6cd23fd2c47.gif

喜欢要“分享”,好看要“点赞”哦ღ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OpenGL学习】OpenGL介绍

一、OpenGL是什么? 在早期一般认为OpenGL是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(S…

商城模式“分享购”意味着什么?关键逻辑是什么?

商城模式“分享购”近期炽手可热的卖家打赏模式电子商务平台,根据申请注册交易赠予贡献度,推动者每日权重计算分派领到固定不动积分兑换数量空投物资,积分兑换前去出售买卖转现,店家根据选购积分兑换完成对客户的交易打赏主播&…

【遥感综述】

遥感综述小集合 Image fusion meets deep learning: A survey and perspective(张浩,马佳义) Sharpening fusion 多光谱图像锐化和高光谱图像锐化是两种典型的锐化融合任务。 Multi-spectral sharpening多光谱锐化 多光谱锐化是将低空间…

Android开发必修—Activity,View,Window三者之间的密切联系【深度解析】

简介 Activity就像工匠,Window就像是窗户,View就像是窗花,LayoutInflater像剪刀,Xml配置像窗花图纸。 Android根据他们不同的职能让他们各斯其活,同时也相互配合展示给我们灵活、精致的界面。 一张图理清所有层级关系&…

量子计算机的推出会影响网络安全吗

在谈量子计算机之前,首先得了解什么是量子计算机。量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。当某个装置处理和计算的是量子信息,运行的是量子算法时,它就是量子计算机。量子计算机在分析大量…

飞凌OK3568-C嵌入式Linux开发板开箱体验

本篇来介绍一款具有AI计算能力的Linux开发板:OK3568-C。 1 OK3568-C介绍 OK3568-C是飞凌嵌入式设计的一款开发板,板子的包装如下,盒子内有两层,上层是开发板,下层是配件。 1.1 核心板介绍 开发板的SOC采用Rockchip的…

MySQL进阶:索引的使用及理解

MySQL索引前言什么是索引?索引的优缺点?MySql索引添加索引的sql语句添加PRIMARY KEY(主键索引)添加UNIQUE(唯一索引)添加INDEX(普通索引)添加FULLTEXT(全文索引)添加多列索引索引的底层数据结构哈希索引BTree树索引为什么索引会提高查找速度?最左前缀…

数据结构与算法2—链表

1. 链表 线性表的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储线性表的数据元素。采用链式存储结构的表示的线性表简称链表。链式存储方式可用于表示线性结构,也可用于表示非线性结构。 链表通常有两个域 data域——存放结点…

北大硕士LeetCode算法专题课--递归和回溯

算法专题课 北大硕士LeetCode算法专题课-栈、队列相关问题_骨灰级收藏家的博客-CSDN博客 北大硕士LeetCode算法专题课--链表相关问题_骨灰级收藏家的博客-CSDN博客 北大硕士LeetCode算法专题课-查找相关问题_骨灰级收藏家的博客-CSDN博客 北大硕士LeetCode算法专题课-字符串…

一.【linux】常用操作命令

目录 1 . 查看当前登录系统用户信息 【who】 2 . 查看终端用户whoami 3 . 查看日期date 4 . 查看系统信息uname 5 . 日历cal 6 . 计算器bc 8 . 显示或修改计算机主机名的命令hostname 9 . 在显示器上显示文字的命令echo 10 . 清除计算机屏幕上的信息命令clear 11 . 查…

【尚硅谷】Java数据结构与算法笔记04 - 栈

文章目录一、实际需求二、栈的介绍三、应用场景四、数组模拟栈4.1 思路分析4.2 Java代码实现五、栈实现综合计算器5.1 中缀表达式5.2 后缀表达式一、实际需求 二、栈的介绍 栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素…

nacos 2.1.0集群生产环境多节点部署

nacos 2.1.0集群生产环境多节点部署 版本 2.1.0版本发布日期 2022-04-29官网 集群部署说明GitHub GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. 下载地址&…

大数据面试题(七):Flume核心高频面试题

文章目录 Flume核心高频面试题 一、Flume有哪些组件,flume的source、channel、sink具体是做什么的 二、你是如何实现flume数据传输的监控的 三、Flume的source,sink,channel的作用?你们source是什么类型? 四、Flu…

2023年浙江建筑施工电工(建筑特种作业)模拟试题及答案

百分百题库提供特种工(电工)考试试题、特种工(电工)考试真题、特种工(电工)证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 159.临时⽤电⼯程验收应填写&#xff0…

基于Vue 全家桶实现网易云音乐 WebApp

基于 Vue(2.5) vuex vue-router vue-axios better-scroll Scss ES6 等开发一款移动端音乐 WebApp,UI 界面参考了安卓版的网易云音乐、flex 布局适配常见移动端。因为服务器的原因,所以可能多人访问的时候有些东西会加载不出来,如果可以的…

P2069 松鼠吃果子

题目描述 输入输出样例 输入 #1 10 4 输出 #1 9 说明/提示 注:吃掉的果子依次为 3,8,5(回到下面重做第 3 跳),9(回到下面重做第 4 跳)。 写着感觉好别扭 感觉和字符串没啥关…

接口管理工具YApi怎么用?颜值高、易管理、超好用!

众多接口管理工具如雨后春笋搬冒出。让人欣慰的是,有许多优秀作品来自国内,包含YApi和rap。 看着中文的官网,熟悉的汉语,不禁让人暗爽。当然这也就带来另一个弊端,因为使用基数少,所以参考资料少。我们想学…

发送tcp/udp请求

本文章介绍下通过nc工具和iperf工具,发送tcp/udp请求一、nc工具(netcat工具)这个工具linux系统默认是自带的,以下是命令的常用参数1.1 发送tcp请求在服务端监听端口nc -l port客户端连接并发送请求nc -v host port在服务端收到了信…

自定义动态IRule进行路由转发

gateway的负载均衡以及feign服务之间的调用或者RestTemplate请求,都可以使用自定义IRule规则进行路由转发。 自定义IRule 固定IRule:将IRule的一个实现类注入到spring容器中 Configuration public class MyIRuleConfig { Beanpublic IRule myIRule() {…

力扣sql基础篇(五)

力扣sql基础篇(五) 1 页面推荐 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 输入示例 b 输出示例 1.2 示例sql语句 # Write your MySQL query statement below SELECT distinct page_id recommended_page FROM Likes WHERE (user_id in (SELECT user2_idFROM …