广告系统逻辑架构(Event-Driven):什么事基于事件驱动架构?

温馨提示:文章均来自网络用户自主投稿,风险性未知,涉及注册投资需谨慎,因此造成损失本站概不负责!

目录

1 广告系统概述

首先介绍一下广告系统。 本文所述的广告系统是指CSDN、InfoQ等依靠网站庞大的用户基础,根据用户喜好等多种表现形式推送有针对性的广告的类型。 主要包括两种类型的广告:页面型和频道型。

作为技术人员,我们可能更关心底层的技术内容。 系统逻辑架构包括哪些内容? 系统内的交互? 数据流向? 底层 那么这些底层广告是如何工作的以及如何呈现给用户呢?

现在我们来谈谈广告系统的设计。 系统逻辑架构如下图所示。

模块说明:

图1 广告系统逻辑架构

2 广告系统中的推送服务

推送服务位于整个系统框架的业务层。 可以理解为通道消息推送服务。 是指运营商精选一些用户感兴趣的热点话题、文章、博客等,主动、准确、及时、高校地推送给CSDN用户。 这里的渠道目前支持邮件、短信、私信、公众号、PUSH等,这也是本文的众点。 其与下游系统交互的时序图如下:

图2 推送服务时序图

过程:

引入问题: 1、不知道大家有没有注意到,我在描述推送的时候,特地加了几个修饰词“主动、准确、及时、高校”。 这句话可以说间接概括了我们推送服务的众点。 接下来的重构部分,我们将介绍推送服务,即如何实现“主动、准确、及时、高校”的消息推送?

3 推送服务实践

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

1.什么是基于事件驱动的架构?

EDA 事件驱动架构是一种软件设计模式,可帮助组织检测“事件”或重要业务时刻(例如交易、站点访问、购物车掉落等)并实时或近实时地响应它们。 它需要采取行动。 该模型取代了传统的“请求/响应”架构,其中服务闭须等待答复才能继续执行下一个任务。 事件驱动架构的流程由事件运行,旨在响应事件或对事件执行某些操作。 使用事件驱动架构,当发送事件通知时,系统捕获发生的情况,例如状态更改,并等待将回复发送给发出请求的人,无论他们何时请求回复。 接收消息的应用程序可以响应或等待响应,直到等待状态发生变化。

2.架构有什么优点?

3.1 推送服务任务流程

整个推送服务根据业务可以分为任务事件、用户选择事件、用户推送事件处理模块。

3.2 任务状态传递

任务状态流程如下:

核心组件:

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

3.3 推送服务业务处理流程

业务处理流程如下:

用户选择核心组件:

UserSelectEventListener事件监听器订阅RocketMQ的推送主题,获取用户选择事件,并将事件交给UserSelectEventHandler。 根据具体的分发方式(肖像、客户裙、分发列表),选择不同的UserSelectEventHandler来获取目标用户。 创建任务初始化完成。 事件,任务事件处理模块获取该事件并将任务状态从未开始更新为初始化完成状态。 UML类图如下

用户推送核心组件:

UserPushEventListener事件监听器订阅RocketMQ推送主题,获取用户推送事件,并将事件交给UserPushEventHandler。 它根据具体的推送资源类型选择不同的UserPushEventHandler进行数据处理,并适配MessageSystemApiService(消息系统)接口数据进行信息推送。 将其发送给目标用户以产生任务完成事件。 **,任务事件处理模块获取事件并更新任务状态。

4 总结

本文简単介绍了广告系统,并介绍了推送服务的实现实践。 还提供了相关的设计流程图和UML图,希望能够帮助大家对广告推送服务有一个简単的了解。 还涉及到相关细节问题的解决,比如用户去重、分布式锁、分布式事务等,后面会补充。 有兴趣的同学可以发表自己的看法。

温馨提示:本文最后更新于2023-09-28 07:23:59,某些文章具有时效性,若有错误或已失效,请在下方联系网站客服
------本页内容已结束,喜欢请收藏------
© 版权声明
THE END
喜欢就支持一下吧
分享