广告系统中通道类推送服务实践

article/2025/11/6 23:56:35

目录

1 广告系统概述

2 广告系统中的推送服务

3 推送服务实践

3.1 推送服务任务流程

3.2 任务状态流转 

3.3 推送服务业务处理流程

4 总结


1 广告系统概述

        首先介绍下广告系统,本文所述的广告系统指类似CSDN、InfoQ这类型依托站点庞大的用户群,根据用户的喜好等类型表情作广告定点推送。主要包括页面类、通道类两种类型的广告。

  • 页面类:主要表现为依托csdn站点所进行的各类型信息推送,比如网站首页顶部、底部的活动推广链接、爆灯广告、siderbar、弹窗等形式的广告;
  • 通道类:主要表现形式,如手机收到的活动短信、邮箱收到的活动推广邮件及链接、APP收到的各种消息通知、私信消息等统称为通道类广告。

作为技术人员,我们可能更加关系底层技术层面的内容。系统逻辑架构包含哪些?系统内部交互?数据流向?底层那么这些广告底层是如何运作的产生,如何展现到用户面前的?

下面咱们就来说说广告系统的设计。系统逻辑架构如下图所示。

模块说明:

  • 1、api模块:负责分发广告/任务。silkroad-api:负责代理推荐、搜索、热榜等服务,并在各种feed流中进行分发强运营/广告内容。
  • 2、管理后台,运营创建任务工单。
  • 3、定时任务模块:报表数据统计、广告扣费、计算ctr、更新任务状态、刷新客群/分发名单等到缓存。
  • 4、推送类服务:sms、push、私信、邮件

图1 广告系统逻辑架构

2 广告系统中的推送服务

        推送服务处于整个系统框架中的业务层,可以理解成一种渠道消息推送服务,就是运营选择一些用户感兴趣的、热门的话题、文章、博客等主动、准确、及时、高效,推送给CSDN用户,这里的渠道目前支持邮件、短信、私信、公众号、PUSH等。这也是本文关注的焦点,其跟上下游系统交互的时序图如下:

图2 推送服务时序图              

流程:

  • ①、运营小哥哥、小姐姐创建通道类任务(填写各类参数,客群、分发方式、触发方式、过滤条件等等)
  • ②、推送服务获取运营后台的任务数据,根据相关参数获取用户,生成响应的推送事件
  • ③、调用消息中台对应服务接口,给查询到的用户发送数据

引入问题: 1、不知大家注意到没,我在描述推送时特意加了几个修饰词"主动、准确、及时、高效”,这些词可以说间接的概括了我们的推送服务的工作重点,后面在重构部分将介绍推送服务是即如何“主动、准确、及时、高效”实现消息推送的?

3 推送服务实践

        本文的推送服务系统,主要基于EDA架构组织代码

1、什么事基于事件驱动架构?

        EDA 事件驱动架构( Event-Driven Architecture )是一种软件设计模式,有助于组织检测 “事件” 或重要的业务时刻(例如交易、实地参观、购物车丢弃等),并实时或接近实时地对其采取操作。这种模式取代了传统的 “请求/响应” 架构,在该架构中服务必须等待答复才能进入下一个任务。事件驱动架构的流程由事件运行,它旨在响应事件或针对事件执行一些操作。 使用事件驱动架构,当发送事件通知时,系统会捕捉发生的事情,例如发生了状态变化,并等待向发出请求的人发送回复,无论他们何时请求回复。收到该消息的应用程序可以做出响应,也可以等待响应,直到正在等待的状态发生变化。

2、架构有何优点?

  • 异步,内部的组件不需要知道之前发生了什么,接下来发生什么,只需要关注处理各自的事件即可。
  • 松耦合,服务不需要(也不应该)知道或依赖于其他服务。 易扩展:扩展现有服务:由于服务在事件驱动的体系结构下解耦,而且服务通常只执行一项任务,因此跟踪特定服务的进行扩展变得很容易。
  • 弹性扩展,只需要新增一个消费者即可,可随时自由的添加

3.1 推送服务任务流程

整个推送服务按业务可以划分成任务事件、用户选择事件、用户推送事件处理模块。

  • 任务处理模块: 从运营平台定时获取推送任务,接收任务事件,更行任务状态
  • 用户选择模块: 从分发名单、画像系统、客群系统获取需要推送的用户
  • 用户推送模块:向目标用户推送数据

 

3.2 任务状态流转 

任务状态流转如下:

 

 核心组件:

  • TaskEventListener 事件监听类
  • TaskEventHandlerService 事件处理服务,类似Manager这种管理中心的角色,将事件的不同状态类型交由专门的状态类处理
  • TaskUnStarted、TaskInitizing、TaskRunning TaskStatusMachine的各种实现类,仅处理各种状态

        在MQ中创建任务事件Topic,TaskEventListener监听改Topic,一旦接收到相关任务事件,进行相应的处理,会生成后续的事件(用户选择事件)发布到MQ中,同时将任务状态更改成初始化完成状态。热舞监听器获取到任务任务事件后,发现任务完成后同样会生成后续事件(用户推送时间)并改变任务状态。UML类图如下:

3.3 推送服务业务处理流程

业务处理流程如下:

用户选择核心组件:

  • UserSelectEventListener 事件监听类
  • UserSelectEventHandleService 事件处理服务
  • UserSelectEventHandle 事件处理类

        UserSelectEventListener事件监听器订阅了RocketMQ的推送topic,获取用户选择事件,将改事件交由UserSelectEventHandler根据具体的分发方式(画像、客群、分发名单)选着不同的UserSelectEventHandler获取到目标用户, 创建任务初始化完成事件,由任务事件处理模块获取事件,将任务状态从未开始更新到初始化完成状态。UML类图如下所示

 

用户推送核心组件:

  • UserPushEventListener 事件监听类
  • UserPushEventHandleService 事件处理服务
  • UserPushEventHandle 事件处理类

        UserPushEventListener事件监听器订阅了RocketMQ的推送topic,获取用户推送事件,将该事件交由UserPushEventHandler根据具体的推送资源类型选着不同的UserPushEventHandler做数据处理及适配MessageSystemApiService(消息系统)接口数据, 将推送信息发送给目标用户,生产任务完成事件,最终由任务事件处理模块获取事件,更新任务状态

 

 

4 总结

本文简单介绍了广告系统,并对其中推送类服务的落地实践进行了相关介绍,且给出了相关设计流程图、UML图,希望能帮助大家对广告推送服务有简单的了解。其中也涉及相关细节问题的解决并未给出点出,如用户去重、分布式锁、分布式事务等,后面看情况补充,感兴趣的同学可以给出自己的见解。


http://chatgpt.dhexx.cn/article/NuXjpM6i.shtml

相关文章

对接腾讯广告平台系统开发(半自动化广告投放系统)

这是我最近刚弄完上线的一套比较有意思的比较大型的系统,因此特意记录一下。 先说这套玩意获得的效果:竞品的投放团队运营团队就算有一百个人,天天996,007加班不睡觉,投放效率也没有我们四五个人的高,这个…

java广告投放系统_广告投放系统

一、串讲PPT 二、上下游 需求方: 商业产品部投放同学 后端: 账号部分:小度注册后端给广告前端提供注册接口。 数据表部分:广告组后端以mysql表的形式与广告前端对接。 测试: 白盒测试 三、系统设计 四、代码开发 4.1 前…

销售系统—指引腾讯广告平台对接销售系统操作

一.教程介绍。 本教程是指引腾讯广告平台对接(自己)销售系统。是对https://leads.qq.com/assets/doc/api_guide.pdf详细文档的简解。 二.对接设置教程 1.推送线索设置 1.1.登录腾讯广告平台,在【工具 - 线索管理 - 系统设置 - 线索转发设…

dmp广告系统

项目背景就是项目描述,主要描述以下几个方面: 1、你分析的数据源是什么,有几个,为什么 2、通过这些数据要分析什么结果(有几个模块,每个模块有哪些需求) 3、通过这些结果能够给公司的产品或决策…

大型广告系统架构 — 检索模块

广告系统主要解决一个问题:在给定展示场景、用户的情况下,返回收益最大化的广告。下图是一个广告系统最简单的架构图。其中,Router,检索模块,排序模块一般称为广告系统的核心。同时,与之辅助的至少包含三大…

互联网智能广告系统架构(业务+系统)

互联网智能广告系统架构 (争取用最简单的图,最简洁的语言描述清楚) 一、业务简述 从业务上看整个智能广告系统,主要分为: 1)业务端:广告主的广告后台 2)展现端:用户实际访…

广告系统简易流程与架构

一、业务简述 从业务上看 整个智能广告系统,主要分为: 1)业务端:广告主的广告后台 2)展现端:用户实际访问的页面 业务端,广告主主要有两类行为: 1)广告设置行为&am…

揭秘广告系统架构

作者 | 骆俊武 来源 | IT人的职场进阶(ID:BestITer) 广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务…

广告系统架构

一:广告系统整体架构 用户通过浏览器访问网页,网页上的广告位贴了广告请求代码,广告请求发送到投放机,投放机上DE进行处理,选择出合理的广告进行投放。(或者网站上贴的是ssp的代码,ssp将请求转发…

大型广告系统架构概述

在互联网江湖中,始终流传着三大赚钱法宝:广告、游戏、电商。三杰之中,又以大哥广告的历史最为悠久,地位也最为不可撼动。君不见很多电商和游戏公司,也通过广告业务赚的盆满钵满。其发迹于Y公司,被G公司发扬…

广告管理系统

软件工程与UML 大作业 课题:广告管理系统 学号:3158126157 姓名:徐先森 专业班级:网络工程 指导老师:杨财英 目录 一、 系统的需求分析 2 1.1功能性需求 2 1.2广告管理系统介绍 2 1.3.1用例图如图: 3 1.3.2 用例描述 3 二、 概要设计 5 2.1总体结构图&…

三大视角,聊聊我眼中的广告系统

作者 | wulc 整理 | NewBeeNLP 从实习到工作,接触过一些大大小小的广告系统,有麻雀虽小但五脏俱全的小 dsp,也有把 ssp、adx、dsp 都打包了的大媒体 ,算是对业界的广告系统有了一个初步的了解。趁着放假这几天,简单地…

十分钟理解广告系统

什么是广告系统 广告是以“把合适的内容推送给合适的受众”为目的的商业交易过程,它同时为三种人群服务:第一种是广告主,即出钱购买广告的人,需要通过广告获取顾客;第二种是媒体,即提供投放平台以换取广告费…

广告系统架构浅谈

写在前面 最近即将入职字节跳动的广告系统部门,因此花了一些时间了解了一下现代广告系统的一般架构,在这里分享给大家。 广告系统一般架构 整体上来看,广告系统由三个主体部分构成: 1、在线的高并发投放引擎(Ad server)。 2、离…

广告系统实现

一、系统架构 二、准备工作 1、开发工具:IDEA 2、数据库:MySQL 3、环境:JDK1.8、 Maven 3 4、系统目录结构 三、广告系统的功能 1、广告投放系统 -> 既然是广告系统,一定得有广告数据,数据当然是由广告主或代理…

逻辑位移和算术位移

在C语言标准中&#xff0c;有两种位移分别为算术位移和逻辑位移。 逻辑位移&#xff1a;在位移运算符&#xff08;>>和<<&#xff09;之前的数是无符号数&#xff0c;编译产生的汇编指令是逻辑位移。 算术位移&#xff1a;在位移运算符之前的数是有符号数&#xff…

带符号位移运算,无符号位移运算,位运算

带符号位移运算&#xff1a; &#xff08;符号位也参与移动&#xff09; &#xff08;除了负数右移高位补1&#xff0c;其他情况空位均补0&#xff09; &#xff08;左移右移后可能结果正负都变了&#xff09; >>右移 &#xff08;向右移一位约等于除以2&#xff0c;注意…

显卡和异构计算

显卡和异构计算 本文采用知识共享署名 4.0 国际许可协议进行许可&#xff0c;转载时请注明原文链接&#xff0c;图片在使用时请保留全部内容&#xff0c;可适当缩放并在引用处附上图片所在的文章链接。 显卡GPU 显卡分类 集成显卡独立显卡核芯显卡 显卡性能 架构流处理器核心频…

带符号移位运算详解

十进制正整数有符号左移 示例&#xff1a;10 << 2 40 Java代码&#xff1a; public class ShiftTest {public static void main(String []args){int leftShiftBegin 10;System.out.println("十进制数&#xff1a;" leftShiftBegin " , " &quo…

机器对移位运算的看法

1.先说一个运算口诀叫“左乘右除”&#xff0c;如k<<1>k*2; k>>1>k/2; 2.左移 先看左移运算&#xff0c;因为相对于右移较为简单&#xff1b; x向左移动K位&#xff0c;会丢弃最高的K位&#xff0c;并在右端补K个0&#xff0c;移位运算是从左到右课结合的&a…