打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用开源软件搭建计算广告系统

1. Web服务器Nginx

广告系统有高并发、低延迟的性能要求,Nginx都是广告系统首选的Web服务器解决方案。在广告系统中,用Nginx作为前端Web服务器,而将广告投放机的功能用C/C++实现成fastCGI插件,是一个开发成本低、性能比较好的方案,而这一方案已经实现了一个基本的广告投放机。

2. 分布式配置和集群管理工具ZooKeeper

在使用多台服务器的时候,会遇到很多诸如配置文件更新、集群上下线管理等分布式环境下的同步问题,ZooKeeper可以解决这些问题。

3. 全文检索引擎Lucene

当广告业务开始面向长尾广告主,广告库规模较大时,采用“倒排索引”加“排序”这样的两段式决策过程是必要的。Lucene可以方便地实现全文索引和检索功能,其主要功能是对文档中的每个关键词建立索引。
在需要比较强的索引扩展性的情形下,还可以考虑使用ElasticSearch,其在云计算环境下,能够实现稳定可靠的实时搜索,并具有良好的水平扩展性。

4. 跨语言通信接口Thrift

由于各个模块广泛存在数据交互,不过由于各模块需求的不同,我们会选用不同的语言开发,为了方便在不同语言的模块之间实现调用接口,可以使用Thrift框架。我们建议在计算广告的系统模块之间尽可能采用Thrift这类工具封装接口。

5. 数据高速公路Flume

计算广告这类系统并发很高,产生的日志量也很大,应该避免对数据做单点的集中式读写,而是尽量让数据的处理形成环形的流动,可以由数据高速公路将线上日志准实时地送至 离线或在线处理平台,再将处理结果保存在缓存中,供线上决策使用。Flume就是这样一个分布式的、高可靠的、高可用的海量日志采集、聚合和传输的系统。

6. 分布式数据处理平台Hadoop

离线数据处理部分需要一个能够存储和加工海量数据的基础设施,Hadoop几乎是工业界的标准首选。在计算广告系统中,无论是受众定向、点击率预测还是基础的报表生成,都需要在Hadoop上进行大规模的数据处理。

7. 特征在线缓存Redis

由于受众定向标签或点击率模型参数和特征的规模比较大,一般无法直接存放在在线广告投放机的内存中,而要用独立的缓存服务。在线用到的特征缓存有两个特点:首先只需要存储键值对,其次是大多数情形下需要支持高并发的随机读和不太频繁的批量写。在这样的需求下,Redis比较适合。

8. 流计算平台Storm

在线处理部分需要一种新型的、能够以数据流的方式对线上日志准实时处理的平台作为基础设施,工业界比较爱用的是Storm。
广告中需要用到流计算的问题包括在线反作弊、计费、实时受众定向和实时点击反馈等。我们希望的解决方案是能够自动地处
理各流计算模块间的通信和数据依赖,并能够在数据规模增大时自动进行分布式的负载分配,Storm这样的流计算平台就可以为我们实现上述的需求。

9. 高效迭代计算框架Spark

计算广告系统可以利用Spark来解决迭代计算问题,如文本主题模型、点击率预估等,非常适合迭代计算的框架。

好了,我们的计算广告系统架构图如下:

参考资料
1.《计算广告》,刘鹏

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
系统架构-性能篇章2(系统拆分2-问题)
架构设计(1)
携程大数据实践:高并发应用架构及推荐系统案例
Hadoop框架介绍
2011 年最重要的 10 个开源软件
RDD:基于内存集群计算的容错抽象 | 简单之美
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服