第三发 DSP 点击控制系统

news2025/7/22 22:54:14

背景

​ 在第三方 DSP 上投放广告,需要根据 DP Link 的点击次数进行控制。比如当 DP Link 达到 5000 后,后续的点击将不能带来收益,但是后续的广告却要付出成本。因此需要建立一个 DP Link 池,当 DP Link 到达限制后,我们可以调用 DSP 的 Marketing API 替换 DP Link。

技术框架

  1. 投放上报 接收上报的曝光、点击等行为

  2. 通过内部的 redis 队列,处理上报数据,然后新增一个 Kafka 队列,统计 DP Link 的点击数(使用 Redis 统计)

  3. 当点击数达到限制,判断当前 DP Link 是否替换过,如果没有替换过,向 DP Link 替换任务队列发送消息
    1. 之所以异步处理 DP Link 替换,是因为需要调用第三方 DSP 的 Marketing API,性能无法保证。而 Kafka Click Count 的队列消息的 QPS 非常高,非常容易积压。

    2. 每个 DP Linke 的最大限制数,需要从投放系统配置和获取。通过本地缓存提升性能

  4. DP Link 替换 的消费者:确保 DP Link 替换成功,需要手动执行 ACK
    1. 注意:将 DP Link 替换 设计成幂等性,防止有重复任务,确保不受影响。上游非常有可能重复提交相同的任务

WX20250527-181130@2x

WX20250527-181130@2x

实现上述框架,一个基础的版点击控制已经实现。在现实中跑的过程中发现一个问题:极个别的 DP Link 出现严重的点击超量。比如现实控制 5000 点击,但是实际点击却出现在 10000 左右。替换 DP Link 后,还有大量的点击上报。也就是点击上的滞后性

为了解决点击上报的滞后性,我们设计了一个等待队列。比如一个 DP Link 总点击限制在 5000,那么在点击数到达 500 时,就进行 DP Link 替换,将替换下来的 DP Link 放到等待队列中。这一段时间等待延迟的点击上报。如果后续达到了 5000,改 DP Link 直接放入完成队列,如果没有完成,继续下放该 DP Link。

等待队列

如下图:统计完毕后点击数后,有两个触发条件:

  1. 到达最大点击数

  2. 到达本轮的最大点击次数
    1. 在 DP Link 刚被替换上时,使用当前点击数 + 500,便是本轮最大的点击数

等待队列的设计:

  1. 等待队列是无重复数据的

  2. 等待队列是有界的,比如最多 20 条数据

  3. 当队列满时,循环使用队列中的数据。队列中的数据等待时间,队列中所有数据的使用时间

  4. 当队列满时,从队列中获取一条 DP Link(新),被替换下的 DP Link(旧) 如果没有达到最大限制,会将旧 DP Link 还给等待队列。

  5. 当队列不满时,需要从 未开始的 DP Link 池中获取新的 DP Link,将替换下来的旧 DP Link 放入等待队列,等待队列放满。

WX20250529-104010@2x

WX20250529-104010@2x

等待队列 未满时,新的 DP Link从 未开始队列中获取,替换下来的旧 DP Link,如果不满足最大点击数,放回 等待队列

WX20250603-194341@2x

WX20250603-194341@2x

等待队列 已满时,新的 DP Link从 等待队列 中获取,替换下来的旧 DP Link,如果不满足最大点击数,放回 等待队列

WX20250603-194735@2x

WX20250603-194735@2x

替换下来的旧 DP Link,如果满足最大点击数,放回 完成队列

WX20250603-194927@2x

WX20250603-194927@2x

未开始队列 队列空了之后,开始逐渐消耗 等待队列 中的 DP Link,直到消耗完毕。

WX20250603-195052@2x

WX20250603-195052@2x

下图是根据点击数替换 DP Link 的业务流程图:

WX20250603-101500@2x

WX20250603-101500@2x

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

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

相关文章

【笔记】在 MSYS2 MINGW64 环境中降级 NumPy 2.2.6 到 2.2.4

📝 在 MSYS2 MINGW64 环境中降级 NumPy 到 2.2.4 ✅ 目标说明 在 MSYS2 的 MINGW64 工具链环境中,将 NumPy 从 2.2.6 成功降级到 2.2.4。 🧰 环境信息 项目内容操作系统Windows 11MSYS2 终端类型MINGW64(默认终端)Py…

vue入门环境搭建及demo运行

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 vue简介:第一步:安装node.jsnode简介第二步:安装vue.js第三步:安装vue-cli工具第四步 :安装webpack第五步…

原始数据去哪找?分享15个免费官方网站

目录 一、找数据的免费官方网站 (一)国家级数据宝库:权威且全面 1.中国国家统计局 2.香港政府数据中心 3.OECD数据库 (二)企业情报中心:洞察商业本质 4.巨潮资讯 5.EDGAR数据库 6.天眼查/企查查&a…

宝塔部署 Vue + NestJS 全栈项目

宝塔部署 Vue NestJS 全栈项目 前言一、Node.js版本管理器1、安装2、配置 二、NestJS项目管理(等同Node项目)1、Git安装2、拉取项目代码3、无法自动认证4、添加Node项目5、配置防火墙(两道) 三、Vue项目管理1、项目上传2、Nginx安…

# [特殊字符] Unity UI 性能优化终极指南 — LayoutGroup篇

🎯 Unity UI 性能优化终极指南 — LayoutGroup篇 🧩 什么是 LayoutGroup? LayoutGroup 是一类用于 自动排列子节点 的UI组件。 代表组件: HorizontalLayoutGroupVerticalLayoutGroupGridLayoutGroup 可以搭配: Conte…

2024-2025-2-《移动机器人设计与实践》-复习资料-8……

2024-2025-2-《移动机器人设计与实践》-复习资料-1-7-CSDN博客 08 移动机器人基础编程 单选题(6题) 在ROS中,用于移动机器人速度控制的消息类型通常是? A. std_msgs/StringB. geometry_msgs/TwistC. sensor_msgs/ImageD. nav_ms…

如何监测光伏系统中的电能质量问题?分布式光伏电能质量解决方案

根据光伏相关技术规范要求,通过10(6)kV~35kV电压等级并网的变流器类型分布式电源应在公共连接点装设满足GB/T 19862要求的A级电能质量监测装置。用于监测分布式光伏发出的电能的质量,指标包括谐波、电压偏差、电压不平衡度、电压波动和闪变等。 CET中电…

SPL 轻量级多源混算实践 4 - 查询 MongoDB

除了以上常见数据源,还有 NoSQL、MQ 等数据源,其中以 MongoDB 最为常用。我们用 SPL 连接 MongoDB 做计算。 导入 MongoDB 数据。 外部库 SPL 支持的多种数据源大概分两类,一类是像 RDB 有 JDBC 直接使用,或者文件等直接读取&a…

Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程

昨天我们了解了maestro测试框架以及maestro studio工具以及创建我们的第一个flow,然后通过例子在maestro cli云端进行测试请求并且成功,今天我们就在我们自己的app上简单的进行三种测试流程,maestro cli云端测试,github cl集成测试…

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库

宁德时代新能源科技的SHL测评中,语言理解部分主要考察阅读理解、逻辑填空和语句排序等题型,要求应聘者在17分钟内完成30题。阅读理解需要快速捕捉文章主旨和理解细节信息;逻辑填空则要根据语句逻辑填入最合适的词汇;语句排序是将打…

AutoGenTestCase - 借助AI大模型生成测试用例

想象一下,你正在为一个复杂的支付系统编写测试用例,需求文档堆积如山,边缘场景层出不穷,手动编写让你焦头烂额。现在,有了AutoGenTestCase,这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

接到一位知识星友的邀请,实现他需要3Dtiles三维模型的简单高度调整需求,适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境:依赖Node安装环境,demo本地Node版本:推荐v18。 运行工具:…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

当 “欧洲版 Cursor” 遇上安全危机

在 AI 编程助手蓬勃发展的当下,安全问题正成为行业不容忽视的隐忧。近期,AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间,因安全漏洞问题掀起了一场风波,引发了业界的广泛关注。​ Replit 的员工 Matt Palmer…

【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】

AA. 我的开发环境配置与核心工具链解析 一、开发环境全览 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…

(Python网络爬虫);抓取B站404页面小漫画

目录 一. 分析网页 二. 准备工作 三. 实现爬虫 1. 抓取工作 2. 分析工作 3. 拼接主函数&运行结果 四. 完整代码清单 1.多线程版本spider.py: 2.异步版本async_spider.py: 经常逛B站的同志们可能知道,B站的404页面做得别具匠心&…

【氮化镓】GaN HMETs器件物理失效分析进展

2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…

Abaqus连接器弹片正向力分析:

.学习重点: • 外部幾何匯入。 • 建立解析剛性面。 • 利用Partition與局部撒點來提高網格品質。 • 材料塑性行為(材料非線性)。 • 考慮大變形(幾何非線性)。 • 接觸(邊界非線性)。 • 平移組裝。 • 設定輸出參數。 • 討論Shear Locking & Hourglassing效應。 1) 設…

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章

随着信创国产化战略的深入推进和鸿蒙操作系统(HarmonyOS Next)的迅速崛起,市场对兼容国产软件生态的需求日益增长。在这一背景下,中安身份证识别和银行卡识别技术应运而生,为鸿蒙生态的发展注入了新的活力。 移动端身份…

NLP学习路线图(十九):GloVe

自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…