暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”

news2024/11/16 16:31:51

文章目录

    • 暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”
      • 广告系统的核心功能
      • ADX 架构流程概述
        • 典型 ADX 架构图概述
        • 消息中心

在这里插入图片描述
抱歉,有段日子没码字了,后面会尽量补出来分享给大家。这段时间整理了关于 “广告业务” 相关的思考,作为 典型的、复杂的、 业务高并发、高可用、高流量的架构系统及其具备学习性、借鉴性,对个人成长和团队提升有重大意义。

广告业务系统 将以一个系列的形式给大家见面,大家记得留意后续或关注微信公众号。

暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”

在互联网中,广告系统、推荐系统、搜索系统 是公认的典型复杂业务系统。当然,并不是说其他业务不复杂,无深度。只是从系统设计面临的痛点、业务应用场景、生产数据规模、业务演进模式 等多个角度出发对比,使这三个系统从数不胜数的基数里面脱颖而出。
这里简单提一嘴,广告较另两个更特殊的一点是:广告是商业变现的最佳手段之一,在90%的公司里都是核心收益来源,渗透在各个业务之中。

换句话说,它很重要,且不可少!

广告系统的核心功能

广告系统,简称 ADX。主要承接入口流量,并透出与之契合的广告物料。

这里的契合代表了多个含义,涉及 广告业务 三方关系。首先,用户对当前物料不会有抵触情节,且满足其需求为最佳;另外,当前物料需要使平台收益最大化,或可以理解为相同类型物料中,出价最高的那个;最后,当前物料符合广告主的最大预期,可以是点击、观看、或者下载、注册等等。

这个契合也带出了 广告业务模式的核心点:在三方关系中找到平衡点的同时,各自利益最大化。 而这个点,在博弈论中叫做 “纳什平衡“。

注:这里的 ADX ,主体方为 平台,以平台为主视角叙述。

ADX 架构流程概述

上面说了一堆系统很复杂的话,具体的体现点就在,它的核心功能描述上。

下面简单列述几处,大家可以有直观的思考:

  • 入口流量规模:一般于公司主业务流量对齐,甚至超过【接入第三方流量,赋于广告能力】
  • 流量的真伪:反作弊内容相关
  • SLA:通常 P90 在 200ms 左右,上下 50ms 浮动【具体业务具体分析】
  • 流量拆分策略:流量类型辨别区分,及如何分发不同的投放引擎
  • 投放引擎:如何从庞大的物料池中选出候选集合,及如何在有限的内存中处理大数据
  • 人物画像:如何对用户做完整且实时的画像描述
  • 竞价策略:如何在多个候选中筛选出最佳候选
  • 广告结算:广告投放出去后如何结算,及如何进行数据归因
  • 曝光/互动/…等数据上报:c2s、s2s 上报链路
  • 链路监测:如何对整个广告系统做健壮性监测
  • 服务依赖中的层级现象:如何避免微服务故障引发层级响应
  • 降级方案:如何应对特殊情况做的灾备策略
  • 性能压缩:如何在业务迭代中保持性能优势

等等,当然这些问题或许在其他业务中也存在,下面讲带着这些问题,逐一讲解各个环节。

典型 ADX 架构图概述

在这里插入图片描述

这是比较经典的 ADX 架构图,涉及 前/后 链路,大家可以点击收藏。

  • 前链路:站内/外流量从前置服务进入之后,将通过漏斗模型,筛选合法流量进入到流量引擎;流量引擎把当前流量的画像带给下游投放引擎的同时,会遵循对应投放引擎的分发规则;投放引擎会依据画像从物料库中召回符合圈定范围的候选集合,同时进行排序,择出最优候选;流量引擎拿到全部投放引擎给的候选集合后,将再次进行二次竞价,择出每个广告位的最佳候选;前置服务依据最终候选去收集对应的渲染样式,最终数据回到站内/外进行终端的展示。

  • 后链路:包括两部分,一部分是物料的由来;一部分是数据的监测。

    • 物料:广告主首先接入平台时,会经过 CRM 系统,敲定相关合同主体、主体资质、结算方式、及返点系数 等等信息;接着会在 BP 平台创建规则/上传广告素材及当前规则圈定的人群包/地域【广告投放的条件,比如,剃须刀客户将圈定男性特征】等;BP 平台审核/校验之后,将规则/素材下放至消息中心,由消息中心进行业务过滤/筛选,并分派至具体投放引擎及投放场景等等;供投放引擎在前链路部分获取使用。

    • 当然,在此过程中涉及到的召回和倒排等数据处理分别由不同的链路和模块独立进行。

    • 当指定规则投放到期后,结算侧将通过消息中心进行物料及规则的下线。至于结算侧是如何知晓订单/合同/投放到期,涉及数据监测部分。

  • 监测:监测数据由端上/Server 两部分构成,分别对应 c2s\s2s 形式。

    • 在 c2s 中,会把曝光/点击的记录日志直接回传给 DSP 和结算侧,供其计数/归因计算;
    • 在 s2s 中,曝光/点击的记录日志 将会回传至结算侧,由结算侧进行数据分析/完善后至 监测服务,进而将数据反馈给 DSP 侧。

    两者区别,在于数据真实性及数据分析处理能力。c2s 数据相对真实,且用户侧数据丰富,但接收端的 DSP 侧需要一定的数据分析处理能力;s2s 数据更倾斜与投放链路侧【竞价/胜出价钱…等】,数据相对成熟、直观,无需 DSP 具有上述分析能力。

注:前后链路以是否存在入口流量参与流调链路为判定依据。

后续我们将从其中的 消息中心 环节开始介绍。

消息中心

消息中心,是为 投放引擎 做客户信息及素材同步的环节,与 bp 平台、结算侧、投放引擎 进行数据实时交互,是 投放引擎生效的重要环节…


见后续文章!


推荐阅读:
三行代码搞定 —— 反转链表…
Kafka 高吞吐、高性能核心技术及最佳应用场景…
HTTPS 如何保证数据传输安全 —— TLS 协议…
五分钟搭建基于 Prometheus + Grafana 实时监控系统…

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

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

相关文章

OSPF笔记(五):OSPF虚链路--普通区域远离骨干区域

一、OSPF 虚链路 1.1 虚链路邻居关系: hello包只发送一次,没有dead时间 虚链路配置邻居指的是RID,非接口IP 1.2 虚链路解决的问题: 普通区域远离骨干区域0的问题 普通区域连接两个骨干区域0问题 (1)…

SpringSecurity授权功能快速上手

3. 授权 3.0 权限系统的作用 例如一个学校图书馆的管理系统,如果是普通学生登录就能看到借书还书相关的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能。但是如果是一个图书馆管理员的账号登录了,应该就能看到并…

最新款发布 | 德州仪器(TI)60G单芯片毫米波雷达芯片 -xWRL6432

本文编辑:调皮哥的小助理 概述 最近,德州仪器(TI)推出了单芯片低功耗 57GHz 至 64GHz 工业(汽车)毫米波雷达传感器IWRL6432,具有 7GHz 的连续带宽,可实现更高分辨率。除了UWB雷达之外,IWRL6432目前是毫米波雷达带宽最…

漏洞挖掘-不安全的HTTP方法

前言: 年关将至,这可能是年前最后一篇文章了。已经有一段时间没有更新文章了,因为最近也没有学到什么新的知识,也就没什么可写的,又不想灌水。最近关注的好兄弟们多了很多,在这里也是十分感谢大家的支持&am…

Make RepVGG Greater Again | 中文翻译

性能和推理速度之间的权衡对于实际应用至关重要。而重参化可以让模型获得了更好的性能平衡,这也促使它正在成为现代卷积神经网络中越来越流行的架构。尽管如此,当需要INT8推断时,其量化性能通常太差,无法部署(例如Imag…

SQL BETWEEN 操作符

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。 SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 AND va…

力扣714题 买卖股票的最佳时机含手续费

class Solution {public int maxProfit(int[] prices, int fee) {// 买第一天股票所需要的全部费用(买入)int buy prices[0] fee; // 利润总和int sum 0;for(int p:prices){// 如果买后些天的股票所需的全部费用比第一天的少,就买后边这天的(买入)if(p fee < buy){buy …

【Python】python深拷贝和浅拷贝(一)

【Python】python深拷贝和浅拷贝&#xff08;一&#xff09; 定义 直接赋值&#xff1a;其实就是对象的引用。浅拷贝&#xff1a;拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。深拷贝&#xff1a; copy 模块的 deepcopy 方法&#xff0c;完全拷贝了父对象及其子对象。…

SpringBoot过滤器与拦截器

为什么要有过滤器和拦截器&#xff1f; 在实际开发过程中&#xff0c;经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的&#xff0c;业务方是无需关注的&#xff0c;业务只需…

Ubuntu20.04安装ROS Noetic

一、实验环境准备 1.使用系统:Ubuntu20.04&#xff08;安装不做赘述&#xff0c;可看我另外一篇博客Ubuntu20.04安装&#xff09;&#xff0c;可到Ubuntu官网下载https://ubuntu.com/download/desktop 2.配置网络&#xff0c;使其可通互联网 二、在Ubuntu20.04上搭建ROS机器人…

树上差分-LCA

树上差分算法分析&#xff1a;练习例题差分的基本思想详情见博客&#xff08;一维、二维差分&#xff09;&#xff1a; https://blog.csdn.net/weixin_45629285/article/details/111146240 算法分析&#xff1a; 面向的对象可以是树上的结点&#xff0c;也可以是树上的边 结点…

springmvc 文件上传请求转换为MultipartFile的过程

前言: 最近在研究文件上传的问题,所以就写下这个博客,让大家都知道从流转换为MutipartFile的过程,不然你就知道在方法中使用,而不知道是怎么样处理的,是不行的 从DiaspatherServlet说起: 别问为啥,去了解tomcat和servlet的关系,我后面会 写这篇博客的 servlet的生命周期 ini…

[ 数据结构 ] 查找算法--------线性、二分、插值、斐波那契查找

0 前言 查找算法有4种: 线性查找 二分查找/折半查找 插值查找 斐波那契查找 1 线性查找 思路:线性遍历数组元素,与目标值比较,相同则返回下标 /**** param arr 给定数组* param value 目标元素值* return 返回目标元素的下标,没找到返回-1*/public static int search(…

63.Python 调用类的属性和方法

63.调用类的属性和方法 文章目录63.调用类的属性和方法1. 调用属性的语法2.调用类的方法3.总结1. 调用属性的语法 我们根据类创建了一张奥迪A6的小汽车。根据汽车流水线呢&#xff0c;汽车生产完之后&#xff0c;需要移交给检查部门检查车辆的外观、颜色(属性)等是否与图纸一致…

JavaEE高阶---SpringBoot 统一功能处理

一&#xff1a;什么是SpringBoot 统⼀功能处理 SpringBoot统一功能处理是AOP的实战环节。我们主要学习三方面内容&#xff1a; 统一用户登录权限验证&#xff1b;统一数据格式返回&#xff1b;统一异常处理。 二&#xff1a;统一用户登录权限验证 Spring 中提供了具体的实现…

Scala 集合常用函数

文章目录集合常用函数一、基本属性和常用操作1、常用方法2、案例示例二、衍生集合1、衍生集合常用方法操作2、案例示例三、集合简单计算函数1、常用计算操作2、案例示例四、集合计算高级函数1、语义说明2、案例示例集合常用函数 一、基本属性和常用操作 1、常用方法 (1) 获取…

Release库与Debug库混用导致释放堆内存时产生异常的详细分析

目录 1、问题描述 2、使用Windbg启动Debug版本的exe程序进行分析 3、进一步分析 4、问题复盘 5、为什么Debug库与Release库混用可能会出异常&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;ht…

DM8:dexpdimp-逻辑导出--逻辑导入

DM8:dexp&dimp-逻辑导出--逻辑导入1 dexp逻辑导出dmp文件1.1 全库导出命令附加的参数信息1.2 导出用户所拥有权限的数据库对象-命令附加的参数信息1.3 导出用户所拥有权限的数据库对象-命令附加的参数信息2 dimp--逻辑导入dmp文件2.1 全库导入dmp数据文件-命令附加的参数信…

人体姿态估计-论文精读--DeepPose: Human Pose Estimation via Deep Neural Networks

图 1. 除了关节的极端变异性外&#xff0c;许多关节几乎不可见。我们能猜测左图中右臂的位置&#xff0c;因为我们看到了姿势的其余部分&#xff0c;并预测了这个人的运动或活动。同样&#xff0c;右边的人的左半身也根本看不见。这些都是需要进行整体推理的例子。我们相信DNNs…

php处理支付宝应用网关给接口发送的post参数

php如何接收支付宝应用网关发送的POST请求方式,参数又是GET请求的数据格式配置支付宝应用网关如何接收支付宝异步通知(应用网关接收请求)将&连接的参数分割成数组实例&#xff1a;难点配置支付宝应用网关 首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应用…