这是我最近刚弄完上线的一套比较有意思的比较大型的系统,因此特意记录一下。

先说这套玩意获得的效果:竞品的投放团队运营团队就算有一百个人,天天996,007加班不睡觉,投放效率也没有我们四五个人的高,这个是人工成本的一次大缩减。在效果反馈和素材投放效果的实时性准确性上,肯定也不及专门定制的系统根据各项指标排序展示准确,这个是实用性价值方面,其余的还有创意素材管理…人群定向管理…批量组合逻辑…等等等等~非常庆幸自己有机会坐拥公司提供的这么多资源,才能有这么有价值的产出~

具体功能详述:

腾讯手握大量用户数据(我们注册时的性别/年龄/住址/姓名/学历/消费能力),又有微信QQ公众号朋友圈等等社交媒体,又有大量的游戏,收集了我们这些数据,能提供很精准的广告投放功能。所以他们有一套广告平台。

这套东西是收费的广告投放系统,在交了“入场费”后,我们就可以进去填写我们的投放计划,我们的广告落地页,我们的广告图,广告文案,创意设计等等,以及我们自己填写的出价策略+日预算来增加曝光度等等一大堆复杂的功能。
我公司做的线上教育嘛,为了跟猿辅导,作业帮,学而思那些竞品瓜分市场大蛋糕,自然也要借助这么好用的一个工具,将广告打到家长们的朋友圈,QQ动态,公众号,网页插图等等地方(类似下面)。

其实这个跟公众号运营一样,你可以直接在腾讯提供的后台操作,但是就比较多限制,不够人性化,不能满足公司特殊的业务需求,比如这个广告平台,图文素材上传问题就是每个投手都有一个账号一套,素材不共享,投放批次无法区分,沟通成本大,一次只能选择单图文单定向,无法批量创建,投手们和设计师们苦不堪言。于是作为负责对外招生线的后端开发同学们,就有事可做来。
这里有几个概念简单说明一下:

(1)推广计划:其实就是整个广告的投放推广的计划,是最大的一层,包含了投放时间段和计划预算(预算金额高的腾讯会增加该计划的曝光量),所有后序操作都必须基于推广计划才能继续做。
(2)广告创意:其实就是设计师们做出来的图,还有投手们运营们绞尽脑汁想出来的广告台词文案拼接成的,还包含你的落地页链接,下单也链接,支持商城小程序和商城网页等等。
(3)广告组:一个推广计划下会有1~10个广告组,广告组也有预算,有它各自的定向类型,扩量,投放目标类型等等一大堆参数。
(4)广告:记录了广告组ID,创意ID,计划ID,只有创建完毕广告,整个计划才算创建完整。
(5)投手账号:开通了能新建广告功能权限的投手的微信账号。
(6)定向:分为人群定向和地域定向,人群定向其实是限定人的年龄区间,性别,受教育程度,消费能力等等一堆数据,比如你不可能推送一个游戏的广告给那些老年人,不可能推送卖房子的广告给小学生吧?地域定向就是经纬度,生活的城市地区,毕竟你不可能推送卖泳衣的给撒哈拉沙漠地区人民,推荐防晒霜给四川人民,推荐广州的房地产广告给黑龙江人民吧?
(7)素材:分为文案素材和图片素材和视频素材。有各自的规格,大小多少M,多少像素,800*680…等等,腾讯很多复杂的组合限制。

简单介绍完概念,如果是有需要的同学可以再详细看腾讯的接口文档:https://developers.e.qq.com/docs/start?version=1.1(友情提示:右下角有人工客服,点开输入人工就可以问问题,它很多文档的参数写的都是错的)

下面开始具体说说踩的坑:

(1)做了60%才发现整个流程缺少了一大块!

我们完全按照腾讯的格式,分层建表,在素材管理那一块,我们做了一套类似高级文件夹功能的系统让投手们共享素材,再也不怕沟通不到位的问题了,大家都知道现在投放线的最新素材版本。然而,我们创建创意的时候,发现所有的素材不能存在我们的资源服务器上,而是要上传到腾讯那边的资源库,然后他们返回一个ID,我们创建广告时候拿的其实是这个ID。于是我们又改了流程,要在上传后将返回的ID全部共享到全部投手账号下,也就是每个账号都上传一遍。

(2)循环逻辑太复杂了吧?!

由于投手们饱受腾讯限定的一条一条创建的苦,他们必须不断重复毫无意义的重复创建工作。所以它们要求能批量创建,但是这个批量功能,复杂程度远超乎我的想象!

功能点一:能多选文案和图片素材/视频素材。
功能点二:能够多选人群定向和多个地域定向进行组合。
功能点三:能够自己输入创建N份推广计划,而不用一条条输入创建。
功能点四:能够自己输入创建N份广告组,而不是创建一条再创建一条。
这样的话,顺序其实跟腾讯那边是相反的,腾讯的顺序是现有计划,再有创意,再有广告组,最后有广告,我们这边却要根据用户输入和多选的素材组合和定向组合来确定要创建多少条计划!!
例:
现在有 图片素材A 图片素材B 文案素材T1 文案素材T2
人群定向 P1 P2 地域定向 广州 G 深圳S
问:一共生成多少条计划?
答: 图文结合: AT1 , AT2 , BT1 ,BT2 。人群地域结合:P1G , P1S , P2 G , P2S.
计划参数组合:
AT1-P1G , AT1-P1S , AT1-P2G …好了你们懂我意思了吧?
其实就是组合套组合,循环套循环而已,那我们就先走我们自己的批量逻辑计算出具体会有多少条组合,再通过腾讯接口去依次创建,剩下就是接口对接,上百个参数的对接,枚举类型的定义。

(3)上面的还不算重头戏,重头戏其实在这里:

我花了两天左右时间,把接口调通了,创建流程全部走通,我们这边的分批次分层级入库也没问题了,开心得雅痞!我忽然想起投手们还能自己输入要创建复制同批次的推广计划份数,于是弱弱的问了一句,他们原话:最少一次也复制几百条吧,不然几条几条的没意义啊。
我凌乱了,为什么?!请听分析:
正如我上面最简单的两图两文组合,两地域两人群组合,已经能生成:2222 = 16条计划(以及后序创建计划下面的三个层级),他们假如输入“几百条”复制数量,那我以300为例子,那就是:16300 = 4800条,那么依次创建三个层级,也就是 4800 * 3 = 14400 次接口请求,然后它们还会输入“复制1~10条广告组的条数”,那就是:14400*10 = 144000.
没问题啊老铁,十四万次接口调用,只为了创建一个投手单次操作的广告。我们有上百个投手,嗯,上面的计算量我还是按照最小的数量来进行的,他们如果选择8图8文甚至更多,轻松上百万次接口请求。
那么,假设忽略网络延迟的情况下,我算做你0.1秒请求响应一个接口,不出故障。那也要:14400秒

也就是说,这个投手一次创建的广告,(不出故障,全部创建成功,网络稳定情况下,腾讯接口不针对我做限制情况下)耗时4小时。

真好,我用的是Node,单线程,炸爆服务器。

真好,前端一直转圈圈,用户在四个小时后就能得到创建结果,这四小时可以下班回家煮个饭。

好个球啊!!这很明显是不行的,这已经是存在重大的设计缺陷了!!
中间跟产品撕逼的过程我也不说了,直接给解决方案!!
这种瞬间爆炸数据量得不到即时响应的场景,是不是像秒杀之类,我回忆起自己之前做的一个外包项目的秒杀,就是采用了延时策略。
于是:
创建时候不去请求腾讯接口,只会在我们自己的数据库先进行入库操作,同时为了缓解瞬间大量写入更新造成的压力,我们先将创建请求的参数,对象,通过序列化存在Redis中,后序再通过Linux的CronTab定时任务获取出来,反序列化还原回对象,再进行入库操作,操作成功后记得把该条记录的Key覆盖掉删掉。
把创建流程改为全部先入库,概念从传入单个的“广告条件”,改为传入“广告条件参数包”,将两万个计划和两万个单条创建参数(从前端传入的条件参数包中循环组合拆分出来)组合先insert进数据库,待腾讯返回ID字段留空,并且模仿腾讯广告的层级关系依次创建后续的创意,广告组,广告先入库。然后再通过CronTab定时任务(1分钟)依次从数据库拿status为0的未创建的计划和对应的计划参数和旗下的全部子层级出来,再通过计划的参数依次调用腾讯创建接口,把获得的ID再放到下一层级创建参数中依次循环创建,如果其中一层级失败,记录相关的错误信息(层级+腾讯返回的错误原因)到计划表,整条广告计划创建失败。
用户在运营后台虽然不会等待太久,但是其实我们这边的创建申请,可能要几个小时甚至更久才轮询到再调用腾讯创建接口创建,才会出现在腾讯计划列表,失去了实时性,失败原因得不到及时反馈,紧急情况下不能立即进行修改重投。
协商过后,其实这个已经是最好的解决方案了,这也是没办法的事情,投手们因为已经是批量了,不可能马上能得到反馈,但是我们能够优化它的体验,给个创建进度条给他们看,及时记录失败原因,方便他们修改后重试。
通过这一套大型系统(四套子系统:投手账号管理系统,素材管理系统,定向管理系统,投放管理系统)的创建,真的是非常有意思,但是工期实在太紧张(3星期),搞得压力真的很大。

当然,这还不是结束,这还仅仅是开始,后期还有动态商品类型迭代(包含商品库和商品目录等关系子系统),还有一堆又一堆的新需求迭代~把它打造得更完善~

PS:刚上线一个月就有顾客闻讯而来希望买这套系统,这对于作为父亲的我来说,真是莫大的幸福~

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

  1. TencentOS-tiny+ESP8266+mqttclient对接腾讯云平台IoThub

    1. 硬件准备 本文中我准备的腾讯官方EVB_MX_Plus开发板和ESP8266 WIFI通信模组: 2. 云端产品创建 在云端创建产品的过程和下文相同,不再赘述. 小熊派移植TencentOS-t ...

  2. 网校系统开发如何做才能保证系统稳定发展

    疫情的出现,加速了在线教育的发展.尤其是在教育领域本就资源不平等的环境中,在线教育的出现,无疑是改善了教育领域存在的弊端.网校系统开发商也紧紧抓住机会,开发出不同版本的网校系统,供有所需求的用户使用. ...

  3. 使用 kickstart 半自动化安装CentOS系统 利用PXE实现自动化安装centos系统

    使用 kickstart 半自动化安装CentOS7系统 1.创建kickstart文件 创建kickstart文件的方式 可使用创建工具:system-config-kickstart ,注意:此方 ...

  4. Android原生系统开发如何优雅的提供系统级的API供第三方程序调用?

    目录 故事背景 二.开发步骤 Step1.添加一个专属系统级服务 2.1.1.模仿Android原生服务接口,如WifiManager,规划自己的Manager 2.1.2.为我们的Manager生成 ...

  5. 社区团购系统开发哪家好 新零售系统厂商如何选择

    根据最新的数据显示,社区团购火爆之后,社区团购企业想要规范.高效地做好社区团购是必须要搭建社区团购平台的,但是在搭建平台之前往往被社区团购系统开发服务哪家好困扰, 新零售系统厂商如何选择 本文就来为大 ...

  6. [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件

    本章的最后,通过描述ARM为核心的嵌入式系统,来介绍了嵌入式系统的软件和硬件构成和结构.这里根据这部分的介绍以及其他的文章,描述下通用的嵌入式系统的软件和硬件.     首先来说下硬件,书中说,包含有 ...

  7. php免费虚拟商城系统,开发免费php开源商城系统的难处

    纵观现在的电商行业,免费php开源商城系统确是很受人们的欢迎,这还是要归结于php商城系统的优势.所以,还是有很多的商家热衷于开发php商城系统的,在开发php开源购物系统时也会遇到一些难题.今天MC ...

  8. JAVA分布式医疗云平台系统开发实战第一节 open-his系统技术架构与环境准备

    项目简介                                                                       Open-His 是以完整的基层医疗机构-信息化解 ...

  9. 生鲜配送系统开发功能流程 生鲜配送系统源码

    在日渐成熟的新零售商业模式推动下,生鲜配送管理系统开发受到到企业的欢迎,司科生鲜配送软件,专业用于蔬菜配送,水果配送,农产品订货配送等生鲜配送,软件包括线上商城,司机,账务库存系统,手机app,实配出 ...

  10. php审批系统开发,php科研项目申报审批系统

    科研项目申报审批系统在现有的大学校园网络的基础上架设windows7+Apache2+PHP5+MySql5.0这样的一个安全的平台 系统功能模块根据大量的调研工作,以及与预期用户的沟通和交流,确定平 ...

最新文章

  1. 23Command(命令)模式
  2. MVC3教程之新手入门(转)
  3. [原创]直播服务器简单实现 http_flv和hls 内网直播桌面
  4. Asp.NETCore轻松学系列阅读指引目录
  5. 职业生涯中12个最致命的想法
  6. linux usr目录权限不够,【ARM-Linux开发】Ubuntu下的/usr目录权限,导致不能使用sudo命令的修复...
  7. Git——添加文件【git add / git commit】
  8. JS执行一次任务与定期任务与清除执行
  9. 拓端tecdat|R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
  10. Redis开发与运维读书笔记
  11. win10动态桌面软件
  12. 工具 · GIF录屏licecap for Mac
  13. 从新手到Flutter架构师,一篇就够!这原因我服了
  14. 云服务器系统分区,云服务器系统盘可以分区
  15. ☆ C++ 继承与派生(包括虚继承)
  16. 阿里达摩院开源DAMO-YOLO:兼顾速度与精度的新目标检测框架
  17. 如何获取信息源、如何增长眼界?
  18. Xilinx SDK使用
  19. python撤销_Python 实现还原已撤回的微信消息
  20. Note.js的前世今生

热门文章

  1. Apache运行模式MPM详解
  2. Linux系统中目录或文件颜色代表的含义以及输出内容的颜色显示功能
  3. Java递归求费数列和_java – 斐波纳契数列 – 递归求和
  4. Java递归求费数列和_简述java递归与非递归算法,0-100求和,斐波那契数列,八皇后,汉诺塔问题...
  5. 提醒专注:既往不恋,未来不迎,当下不杂
  6. pr 导出视频 黑屏 或者 没有画面
  7. 企业不可忽略的问题——员工移动设备管理
  8. 怎样把孩子写的日记或作文制成电子版呢?
  9. vs 输入代码时出现火花_VSV和VBV随发动机转速和进气温度怎么变化维修执照机务在线...
  10. 今天来告诉你caj文件怎么打开