RTB(Real Time Bidding)是目前计算广告技术中最新的阶段,从效率和效果上是远远领先网盟和流量平台。RTB业务上包括DSP、Ad Exchange、DMP三大产品形态,技术上涉及到机器学习、大数据处理、流式系统、高并发系统四个部分,是目前尖端计算机工程技术和算法应用和验证的核心领域。
新的工程技术通常很难找到技术方案或资料,需要自己做大量的实验、摸索,踩无数的坑,阅读国外大量的资料,往往才能稳定、高性能地使用起来,算法模型更是,往往是facebook、google、criteo这样的公司掌握了最新的科研成果,国内使用的算法模型普遍晚1-3年,模型部分做的好的国内也就百度了,目前瑞狮网络使用的预测引擎和反作弊引擎是与交通大学APEX实验和UCL计算机系联合研发的,有理论上的高地优势,下面简单的介绍一下各个部分的入门知识。
大数据处理:目前瑞狮Vlion综合使用CDH集群,分在线业务集群和离线业务集群,组件上包括HBase、Spark、HDFS、HIVE等。
CDH集群主要用来进行离线批处理,基于HDFS进行MR、HIVE处理广告数据和营销点数据。Spark主要用于一些实时查询,HBase用于存储基于HDFS的有实时特性的中间数据。从传统行业程序员过来主要得学习Map Reduce的基本原理,学习HBase列存储的原理,熟悉hive的思考方式。学习过程中要注意多看报错日志,这样才能慢慢学会调优性能。
高性能系统:目前瑞狮网络Vlion 的竞价服务器QPS达到25万,单机QPS达到8000。技术架构使用Go和ngx-lua混合模式,使用go之前是用的c语言,综合比较下来如下:
ngx_lua采用“one-coroutine-per-request”的处理模型,对于每个用户请求,ngx_lua会唤醒一个协程用于执行用户代码处理请求,当请求处理完成这个协程会被销毁。每个协程都有一个独立的全局环境(变量空间),继承于全局共享的、只读的“comman data”。所以,被用户代码注入全局空间的任何变量都不会影响其他请求的处理,并且这些变量在请求处理完成后会被释放,这样就保证所有的用户代码都运行在一个“sandbox”(沙箱),这个沙箱与请求具有相同的生命周期。
得益于Lua协程的支持,ngx_lua在处理10000个并发请求时只需要很少的内存。根据测试,ngx_lua处理每个请求只需要2KB的内存,如果使用LuaJIT则会更少。所以ngx_lua非常适合用于实现可扩展的、高并发的服务。
流式系统:目前瑞狮网络Vlion 使用flume+kafka+storm的技术框架来构建的流式系统,Storm集群单机处理20000条/秒。
n Flume agent不能过多占用宿主服务器的计算性能,推荐使用内存模式,用内存换CPU,多个agent建议不能直接导向kafka,而是先合并到一台日志服务器,再从该服务器统一flume到kafka。
n Storm 的输出一般需要自己构建和管理缓存,topology要有异常日志输出,方便排查错误。
机器学习:目前瑞狮网络Vlion 在动态创意优化DCO、反作弊、竞价策略、CVR预测、Audience Segmentation五个部分应用了机器学习技术。
n 动态创意优化综合使用了基于标签tag的推荐和Slope One协同过滤推荐,主要应用在电商的重定向投放中使用;
n 反作弊使用了SVM模型和规则引擎,目前过滤了接近60%的流量。
n 竞价决策使用了Direct functional optimization,竞价函数如下:
n CVR预测主要基于Star Tree和GBDT,AUC大概在82%,目前正在spark集群上尝试FTRL模型。
n 受众细分针对不同的客户采用了不同的模型,如游戏客户采用k-means,电商行业采用SMO。
以上仅是简单介绍,后续会陆续推出更详细的介绍~