该文是百度文库课程
《计算广告学之内容匹配广告&展示广告原理、技术和实践》的课程笔记,感谢百度!
课程地址 http://wenku.baidu.com/course/view/1488bfd5b9f3f90f76c61b8d
第一章:内容匹配广告投放技术:网盟概述&工程架构
这章讲述内容匹配广告投放技术的概要,包括基本概念,系统框架,以及应用技术。
四大角色——互联网广告涉及的四大角色,其中网盟是用户看不到的。
网盟广告检索系统——这是一个从子系统角度看的网盟广告检索系统,主要包括页面特征子系统,用户特征子系统,广告特征子系统,检索子系统,CTR预估子系统
网盟广告检索系统所需要用到的技术,从底向上是从基础到高级应用。
应用技术——分层实验框架
广告系统优化是数据驱动,需要实验证明结论。
应用技术——用户识别
以下是应用技术层面的用户识别可以使用的技术,其中广告行业用到的最多的是HTTP COOKIE和FLASH COOKIE
用户识别技术新动向——CookieMatching
应用技术——高性能检索
细分为计算模型,网络模型,索引模型
触发策略将会通过query向量得到一批广告,然后通过交并进行归并(使用归并算法),过滤策略将会过滤一些网站主不允许投放的一些广告,初选策略会选出一些相关性从高到低的已排序广告(一般使用堆排序算法),精选策略将会精选出收益最高的广告。
********************************************************************************************************************
********************************************************************************************************************
********************************************************************************************************************
********************************************************************************************************************
********************************************************************************************************************
********************************************************************************************************************
索引的实现一般使用两种结构:树形结构和hash结构。
使用内存池的好处:1)分配内存的时候不用从用户态切换到系统态而消耗大量时间(操作系统用malloc申请内存的时候需要从用户态切换到系统态);2)内存碎片更少,使管理更加高效。
广告主操作广告的系统会在独立的服务上面,广告检索系统也在独立的服务上面,两者在物理上是隔离的,要将数据从广告主操作广告的系统传输到广告检索系统中,如果保证实时高效?一般采用如下基准加增量的形式,可能每天两次传一个100G的基准过来,然后后面广告主对广告的操作都会通过patch的形式增量的传输过来,最后进行合并形成最新的库。
无锁读写分离:采用COW,如果读的时候又有写操作,那么读的时候是读的旧版本,写的时候会将之前的版本复制出来进行修改变成新版本,这样就是读写分离,写完之后进行版本切换,版本切换就是一个指针的切换,是一个原子操作。延迟销毁:因为在多线程中,老版本的数据不能立即销毁,因此切换后可能使用老版本的线程并未结束,还需要访问这些老版本的数据,所以等待1到2秒等待线程结束后对老版本进行销毁。
需要使用普通的服务器承载大容量的广告库,当一台服务器内存不够用时,加一台机器进来就可以,但此时内存中的索引如何扩展呢?划分partition索引系统,既可以横向划分索引(将词划分成组,不同机器存储不同的组),也可以纵向划分索引(将拉链切开成组,可能一开始有20长度的链,划分成只有5个长度的链)。
partition划分,数据和计算的可扩展是基础,如果数据和计算不是可扩展的,那将不可能能进行划分。拿宽带增长为例,比如在一台机器上做top100的计算,如果数据划分到4台机器上做top100计算,那么每台机器上都要返回top100,将一共要返回400条数据,然后在400中做top100,此时宽带增长为4倍了。
下图是索引扩展的逻辑结构,用户请求过来之后做流量控制,将一个请求拆解成多个请求,分到不同的Cluster里面,每个cluster里面都会有很多的query节点去处理这个请求,每个cluster里面的数据和程序是一模一样的(完全同构),每个cluster里有一个索引节点Index Node,索引节点会定期的把广告的索引下载一个基准出来,当query节点要重启的时候,就可以用这个最新的基准加上最新的增量进行快速的启动。下部分的广告数据传输采用的是分布式的消息队列。整个集群的逻辑分布,哪个集群部署了哪些数据是通过资源定位服务来记录的,通过此服务就知道哪个请求该发到哪个集群里去才是正确的。