在互联网江湖中,始终流传着三大赚钱法宝:广告、游戏、电商。三杰之中,又以大哥广告的历史最为悠久,地位也最为不可撼动。君不见很多电商和游戏公司,也通过广告业务赚的盆满钵满。其发迹于Y公司,被G公司发扬光大,又在F公司阶段性地完成了其历史使命。F公司,在移动互联网兴起之际,利用其得天独厚的数据优势,终于能够回答困扰了广告主几百年的问题:我的广告究竟被谁看到了?浪费的一半的钱到底去了哪里?
从用户角度来看,广告其实是充斥着互联网的每个角落,但正如习惯成自然一样,对于越常见的事物,越少有人究其根本。对于互联网技术人员来说,由于广告业务具有高度的垄断性,能够接触到其本质的工程师相对较少,尤其有过大型系统经验的人更加稀缺。本文的目的在于对大型广告系统的整体架构和其中的设计权衡点有一个全面的介绍,为有志从事该行业的工程师提供一套思考的思路。
另外有几点说明。第一,广告系统一般分为搜索广告和上下文广告,由于上下文广告系统面临的问题要比搜索广告系统更加丰富,因此本文专注于讨论上下文广告系统。第二,本文适合对广告业务有一定了解的工程师,对于业务不了解的同学,推荐阅读刘鹏博士的<<计算广告>>。
俗话说,离开业务谈架构都是耍流氓。用一句标准的报告性语言介绍大型广告系统的特点就是:处理的数据量特别巨大,响应速度要求特别快,数据实时性要求特别高,系统可用性要求特别高。面对种种不可思议的困难,最初的一批误打误撞进入广告行业的的互联网工程师们,本着赚钱的目的,通过演杂技一般的对各种技术的拼接,出色地完成了任务。下面逐条分析一下系统特点。
-
数据量特别巨大
在上下文广告中,系统中一般主要包含四种数据(广告系统所有问题的讨论一般都围绕这四种数据展开)