系统架构
广点通的系统架构与常见的广告架构并无明显差别。
广告主侧
在广告库这一层,广点通做了容灾升级,部署了天津、上海、深圳三地的数据中心。
检索系统的设计是用业界通用的倒排表,将广告质量的数据关联到广告级别,生成索引文件。
流量侧
Mixer将流量端用户标识扩展出用户画像后,请求检索系统,在Sunfish模块里把用户画像和广告数据关联起来运算。
检索系统
在大规模任务中,广告系统通常由模型、索引和检索算法三大组件组成。模型计算单个用户-广告的偏好概率,索引将所有商品有序地组织在一起,检索算法根据模型的输出在索引中召回最终的推荐结果。三者共同决定了召回质量且存在内在联系。
Sunfish是检索核心,向上对接广告数据,向下对接用户标签,最终决定给用户展示哪些广告。
第一代检索服务
传统的倒排表,是把条件进行组合,再做过滤的逻辑,复杂度是M x N。
第二代检索服务
将定向接口抽象成一棵四层的逻辑树。核心思想就是面向接口编程,这样增加定向就不用改代码了。索引和定向接口标准化,减少了沟通成本。
存在的问题:索引和排序之间的挑战,检索和排序之间的问题。它们是通过数据来耦合,在需求变动的时候频繁的修改这个接口。
第三代检索服务
有更强的定向能力,不是四层书,而是递归多叉树,把排序接口标准化,通过接口来开发和沟通,优化思想与第二代的优化类似。
第三代系统能够融合各种用户标识,腾讯内部有很多用户标识,例如QQ号、腾讯号,还有IMEI、浏览器也有自己的标识。我理解这个应该是属于DMP领域的功能,类似于提供一个全局ONE ID的功能。
检索系统要解决的核心问题
用户特征和广告定向要求能够匹配
流量要求与广告特征的匹配
广告的定向要求是一个逻辑表达式,在这里是递归定义的多叉树。例如一个用户画像,男性,27岁,广州。把逻辑运算问题转换成了一个计数和查找的问题。
把所有递归多叉树都转置存储下来,就形成了索引文件。索引的key为用户特征,value为匹配的广告。
检索系统氛围全量和增量数据流,这样可以满足数据的准确性和及时性两种需求。