这一节,主要讲解怎么实现一个千万级的广告监控系统。

系统主要架构如上图,系统主要功能模块有:数据接口、数据处理进程、数据回调进程、自然量重新计算进程、数据汇总进程、配置/报表显示后台。
主要技术及工具:
1、NGINX+PHP-FPM:数据接收接口
2、Redis:数据队列及匹配Key索引
3、Mysql:数据仓库
4、PHP-CLI:数据后端处理进程

下面我们对图中标好编号进行分开解析:
1、用户点击广告:对于原生广告,APP/SDK可以收集到用户特征(IDFA/IMEI/MAC/IP)更多,可以进行更精准定位,如果是WAP广告,一般就只有IP/UA(浏览器USER-AGENT)。同时广告页面也会引导用户下载APP。
2、发送点击:广告渠道发送点击有两种形式:
方式1、广告渠道服务端推送,如:广点通,这种方式在我看来更加合理,也更加规范,缺点就是广告渠道要采用专门服务器推送数据,要消耗一定的服务器和带宽。
方式2、广告渠道客户端推送。如UC,各版本发送数据可能会有出入,对广告系统并不友好。采用客户端推送数据的渠道,常常要做接口兼容处理,各种取不到数据,市场投放同事常跟我反馈监测有问题。
3、广告系统接收数据,并存入队列。
4、广告后端处理进程(PHP CLI)从队列取出数据,并计算,生成特征KEY,有效期一般3-7天,redis可以进行有效期设置。
5、保存点击日志,保存到数据库主要是方式汇总统计,点击日志比较多,需求做定期处理。
6、用户启动APP,并产生相应操作(启动/注册/登陆/充值)。
7、广告系统接收用户操作日志,这同2步骤一样,有两种推送方式:服装端推送和客户端推送,对于充值数据,服务端更加可靠,就只能用服务端推送了。
8、广告系统接口接收用户行为日志,并存入行为日志队列。
9、广告后端处理进程(PHP CLI)从队列取出数据,利用日志特殊,逐一进行匹配,如找到对应点击,则日志进行广告标记,如找不到,就认为这是自然量(非广告来源)。
10、回调数据给广告渠道,如果在9步骤中匹配到广告渠道,就要把这个行为报告给广告渠道,广告渠道利用这些数据可以对当前广告进行优化,以提高转化率,目前广点通在这方面是做得最好的了。
11、保存用户行为日志到数据库。
关于自然量重新计算:由于广告渠道情况复杂,可能由于吞吐量问题,导致点击数据不能及时推送,导致用户日志不能正常匹配到广告来源,需要定期对自然量进行重新匹配,建议一个小时匹配最近一天的自然量。目前我们系统接入的多个渠道都发生过这样的问题,包括广点通这样的大渠道。

总结:该系统架构目前承载了我们一天5千万的日志请求处理,数据还在不断增加,运行一年,点击单表数据最多时达到18亿条记录,系统正常运行。MYSQL日志表按日期进行分区保存,理论上可以无限期运行下去,但出于安全还有稳定性考虑,还是要对历史数据做定期处理。按日千万级计算,点击数据最多,建议保存最近一个月或半个月,其他日志可以保存两年或更久没问题。

博客原文(拖鞋小站):http://www.39gs.com/archive/303.html

移动APP广告监测 - 千万级系统架构相关推荐

  1. 淘宝电商项目落地,从零开始搭建亿级系统架构笔记

    电商亿级系统架构设计笔记,分为:基础篇.数据库篇.缓存篇.消息队列篇.分布式服务篇.维护篇.实战篇.通过学习这份笔记,你可以系统的学会从零开始搭建亿级系统架构.其中每篇中又有具体的设计实施的笔记供大家 ...

  2. 首次公开,300多页阿里百亿级系统架构设计实录

    高并发系统设计 一年一度的金三银四已经过去了,想必有不少在这个时间段选择跳槽或者入行的朋友都入职了新的公司.对于萌新来说,肯定是增强自己面向业务的编程能力(手动狗头),而对于一些有很多年工作经验的程序 ...

  3. 又到618,.NET 千万级秒杀架构到底有多牛

    年年618,次次高并发. 其实这不仅仅是对618下各大电商平台的考验,更是如今每一个互联网应用上线后,会遇到的一个严峻的考验,渡得过 965,渡不过 996. 在这个极速膨胀的互联网世界里, .NET ...

  4. MySQL千万级访问量架构(转)

    转载自:http://www.jianshu.com/p/092a40267f21 *1.HTML 静态化 其实大家都知道,效率最高.消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网 ...

  5. 千万级并发架构下如何提高数据库存储性能

    如图所示,表示发起一个请求时,涉及到数据库的相关操作,在前面的文章中我们说过,如果服务端要提升整体的吞吐量,就必须要减少每一次请求的处理时长,那么在当前这个场景中,数据库层面哪些因素会影响到性能呢? ...

  6. 疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...

    性能调优整体思路 作为一名团队技术核心,如何让系统跑得通.跑得稳.跑得快是必然会面对的场景.性能分析是一个大课题,不同的架构.不同的应用场景.不同的程序语言分析的方法若有差异,抽象一下大致分为两类: ...

  7. 千万级并发架构下,关系型数据库应该如何优化?,Java程序员资源

    垂直拆分 垂直拆分有两种,一种是单库的垂直拆分,另一种是多个数据库的垂直拆分. 单库垂直分表 单个表的字段数量建议控制在20~50个之间,之所以建议做这个限制,是因为如果字段加上数据累计的长度超过一个 ...

  8. Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统

    Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...

  9. 平台千万级订单推送实现

    背景:基于公司业务,需要对接不同平台阿里,京东,有赞,苏宁,抖音等众平台,平台以消息推送的方式将订单数据推送给我们,订单量千万级,架构师让我出一份技术方案. 1.技术方案 A:platform-lis ...

最新文章

  1. iOS更改状态栏前景色背景色
  2. 你真的会二分查找吗?
  3. muduo之Socket和SocketsOps
  4. Linux环境下配置JDK
  5. mac上安装MySQL
  6. 22套精美的网页按钮图标设计推荐(包括PSD和AI文件)
  7. (一)PyQt5基础学习
  8. 怎样删除Weblogic Domain?
  9. linux 安装 yum 命令源
  10. 【2022 李宏毅】机器学习导论
  11. REST及RESTful原则
  12. python 移动文件位置-python实现指定文件夹下的指定文件移动到指定位置
  13. 未来教育计算机二级office评分有问题,未来教育计算机二级-未来教育计算机二级msoffice题库评分 – 手机爱问...
  14. java 读取xps_java读取带格式word内容
  15. Python数据分析学习系列 六 数据加载、存储与文件格式
  16. 3.数据的一致性与一致性算法(CAP原则、Paxos算法、Raft算法、ZAB协议)
  17. Java File分隔符和 Path分隔符
  18. An unexpected connection driver error occured错误(亲测有效)
  19. Python-pygsheets模块(读写Google谷歌文档)
  20. Windows常用热键

热门文章

  1. php开心农场游戏源码,解密开源版开心农场游戏小程序分享
  2. 手机新趣味!三星将展示对屏幕发声技术
  3. 区块链中的智能合约是什么
  4. 区块链积分扩展积分生态大商圈
  5. Ubuntu之输入法
  6. 密歇根安娜堡计算机排名,密歇根大学的计算机系统排名,该细心来考查
  7. AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
  8. hawk物联网组态工具_万德物联平台|智能供电整体解决方案之物联网在线组态软件...
  9. Arya and Bran Game of the Rows Multiple Clocks
  10. 警察抓到ABCD四个小偷C语言,警察抓小偷游戏作文450字