Large Scale Video Monetization
                                   海量视频⼲⼴广告分发的挑战
                                                                杜嵩 sdu@freewheel.tv
                                                                  Arch Summit 2012
© FreeWheel 2012 SILICON VALLEY • NEW YORK • BEIJING • LONDON
关于 FreeWheel

• FreeWheel 提供对版权数字内容进⾏行价值管理的全⾯面解决⽅方案
• 服务于美国市场超过1/3视频⼲⼴广告流量,90%的领先视频⺴⽹网站为
  FreeWheel的客户或合作伙伴*
• ⽀支持数⼗十种平台和设备上的版权数字视频播放和⼲⼴广告管理,并为世界
  杯、奥运会等⾼高访问量项⺫⽬目提供实时视频⼲⼴广告决策与统计分析。




 * 统计数字基于2011 Q4 ComScore 和 FreeWheel 数据



                                           Confidential
                                                         2
寻找体现内容最⼤大价值的⽅方程式
    $ ./adserver --start
视频产业的独特挑战 - 复杂的⽣生态链
                ⼲⼴广告商          内容拥有者

• 多⽅方业务整合
• 多变的⼲⼴广告投放策略
• 不同流量模式的分发渠道
                  版权拥有及运营⽅方      分发渠道
• 完整数据报表和分析
• 灵活的第三⽅方集成


                分销商

                              第三⽅方平台




                                  Confidential
视频产业的独特挑战 - 多维度的⼲⼴广告形式和播放体验


• 视频内的线性(前后贴⽚片、中插与暂停)和⾮非线性(悬浮)
⼲⼴广告、⻚页⾯面展⽰示⼲⼴广告及其组合




• 来⾃自⼲⼴广告主(投放频次、区域与独占要求)、最终⽤用户(频
次控制、视觉优化)、监管机构(分级、提⽰示)的不同⾓角度
的要求

                             Confidential
技术堆栈


                                    Ruby on Rails
                          B2B UI



                                                       C++
                                              Forecasting

 Ruby on          MySQL
  Rails

API        OLTP              OLAP                       C++
                                                Ad Server            SDK

                                                               Flash, iOS, …


                                               C++ / Java
                                    Backend


                                                              Confidential
B2B UI 架构


     Module                            Module                             Module
     Resources                         Resources                          Resources
       Biz Logic                         Biz Logic                          Biz Logic
 C                              C                                   C
                      A                                  A                                      A
 O                              O                                   O
     View/Helper      P               View/Helper        P                View/Helper           P
 N                              N                                   N
                      I                                  I                                      I
 F    Controller                F       Controller                  F      Controller
       Model                             Model                              Model




                                    Shared Library
       SSO         User Permission      System API (Search, i18n, …)            Tasks
      Shared Model        Controller/Dispatcher      View/Helper          BizLogic
           Shared 3rd Plugins            Components                Shared Resources




                                                                                     Confidential
                                                                                                    7
平滑处理流量
$ netstat -na
B2C服务集群的架构设计




                     GSLB (NetScaler)

       Lighttpd             Lighttpd         Lighttpd



                                                                        MMAP
                                                                        Dump


                                                                                   OLTP


     Counter Server
                                                                      Memcached
     Counter Client         Counter Client         Counter Client

       Ad Server 1            Ad Server 2               Ad Server n




                        Binary Logs (




                                                                                  Confidential
                                                                                                9
为动态请求的峰值流量作好准备


• 基础设施
• 设计冗余
 • 服务端负载 - 50%
 • 客户端容许延迟
• 彩排!
• ⼤大量、稳定的⽇日常流量
• 静态化?




                 Confidential
                               10
保证全球服务的⾼高可⽤用性
    $ uptime
B2C服务集群的分布




                                       Data Service

           150Mbps, 90ms rtt
                                                       1Gbps, 69ms rtt

                                     1Gbps, <1ms rtt

   USWest ads
     cluster                                 USEast1 ads
                                               cluster
                                                                         UK ads
                                                                         cluster

                               USEast2 ads
                                 cluster




                                                                                   Confidential
Failure is a feature


 • 消灭单点故障
   • 可独⽴立运⾏行的集群
   • 可离线运⾏行的服务实例
 • 总是异步
 • 断线、重连与最终同步




                       Confidential
                                     13
实时数据透视与多维度报表
  $ tail -f adserver.log
多层次的数据服务


• ⽇日志导出
• 定期报表
• 实时报表
• 预测
• BI分析




           Confidential
                         15
实时报表服务的架构设计

• ZeroMQ for log transporting
• LevelDB for log matching
• Redis/MongoDB as Realtime Counters
• UI: JQuery + Highcharts + Google Map API
               Ad             MQ Servers           RT-Reporting
             server                                  Servers

                                                           RT-
   Bin/Ack                                   Processor
                                                         Counter?
     Logs
                 LogTailer/                  Processor   MongoDB
                 LogSend         LogServer                  ?         RT-UI
                                             Processor
   Debug            er                                   Historical
    Logs                                                   Data
                                             Processor
                                                          Store?




                                                                      OLTP



                                                                              Confidential
接⼊入异构平台和终端
$ ftpd ; crond ; xcodebuild ; adb push
多样化的接⼊入是发展趋势




               Confidential
                             18
优良的API⽤用户体验有助于快速⼲⼴广泛的业务集成




                            Confidential
                                          19
API的基础:可插接的数据访问层


• 建⽴立⼀一致的内部数据层
  • API术语
  • API数据规范
• 维护兼容性
  • 迁移成本的考量



  通⽤用      API              API     客户端
客户端集成    (Ruby)            (C++)    SDK      第三⽅方
                   内部数据层                     客户端
特定第三⽅方    导⼊入器               API              集成
服务端集成     (Ruby)           (XSLT)

                                          Confidential
                                                        20
回顾
$ history | grep key
回顾

• adserver --start
  • 寻找体现内容最⼤大价值的⽅方程式
    • 可扩展的核⼼心架构:处理复杂多变业务逻辑
• netstat -na
  • 平滑处理流量冲击
    • 从链路层开始;⾼高峰流量的特质;冗余
• uptime
  • 保证全球数据中⼼心的⾼高可⽤用性
    • 没有单点、总是异步、最终同步
• tail -f adserver.log
  • 实现亚分钟级数据透视与多维度商业智能报表
    • 实时⽇日志处理框架
• ftpd ; crond ; xcodebuild ; adb push
  • 接⼊入产业链上下游的异构平台和设备
    • 开放数据架构、注重API的⽤用户体验


                                         Confidential
                                                       22
变化总在发⽣生


• 设计
 • 与产品团队合作:好的产品设计应该是可扩展、可重⽤用的
• 重构
 • 定期回顾流量结构和活跃的业务模式
• 透视
 • 建⽴立快速诊断问题和容易发现趋势的⼯工具




                                Confidential
                                              23
Thank You!




             Confidential

杜嵩 Arch summit2012 dusong@freewheel

  • 1.
    Large Scale VideoMonetization 海量视频⼲⼴广告分发的挑战 杜嵩 sdu@freewheel.tv Arch Summit 2012 © FreeWheel 2012 SILICON VALLEY • NEW YORK • BEIJING • LONDON
  • 2.
    关于 FreeWheel • FreeWheel提供对版权数字内容进⾏行价值管理的全⾯面解决⽅方案 • 服务于美国市场超过1/3视频⼲⼴广告流量,90%的领先视频⺴⽹网站为 FreeWheel的客户或合作伙伴* • ⽀支持数⼗十种平台和设备上的版权数字视频播放和⼲⼴广告管理,并为世界 杯、奥运会等⾼高访问量项⺫⽬目提供实时视频⼲⼴广告决策与统计分析。 * 统计数字基于2011 Q4 ComScore 和 FreeWheel 数据 Confidential 2
  • 3.
  • 4.
    视频产业的独特挑战 - 复杂的⽣生态链 ⼲⼴广告商 内容拥有者 • 多⽅方业务整合 • 多变的⼲⼴广告投放策略 • 不同流量模式的分发渠道 版权拥有及运营⽅方 分发渠道 • 完整数据报表和分析 • 灵活的第三⽅方集成 分销商 第三⽅方平台 Confidential
  • 5.
    视频产业的独特挑战 - 多维度的⼲⼴广告形式和播放体验 •视频内的线性(前后贴⽚片、中插与暂停)和⾮非线性(悬浮) ⼲⼴广告、⻚页⾯面展⽰示⼲⼴广告及其组合 • 来⾃自⼲⼴广告主(投放频次、区域与独占要求)、最终⽤用户(频 次控制、视觉优化)、监管机构(分级、提⽰示)的不同⾓角度 的要求 Confidential
  • 6.
    技术堆栈 Ruby on Rails B2B UI C++ Forecasting Ruby on MySQL Rails API OLTP OLAP C++ Ad Server SDK Flash, iOS, … C++ / Java Backend Confidential
  • 7.
    B2B UI 架构 Module Module Module Resources Resources Resources Biz Logic Biz Logic Biz Logic C C C A A A O O O View/Helper P View/Helper P View/Helper P N N N I I I F Controller F Controller F Controller Model Model Model Shared Library SSO User Permission System API (Search, i18n, …) Tasks Shared Model Controller/Dispatcher View/Helper BizLogic Shared 3rd Plugins Components Shared Resources Confidential 7
  • 8.
  • 9.
    B2C服务集群的架构设计 GSLB (NetScaler) Lighttpd Lighttpd Lighttpd MMAP Dump OLTP Counter Server Memcached Counter Client Counter Client Counter Client Ad Server 1 Ad Server 2 Ad Server n Binary Logs ( Confidential 9
  • 10.
    为动态请求的峰值流量作好准备 • 基础设施 • 设计冗余 • 服务端负载 - 50% • 客户端容许延迟 • 彩排! • ⼤大量、稳定的⽇日常流量 • 静态化? Confidential 10
  • 11.
  • 12.
    B2C服务集群的分布 Data Service 150Mbps, 90ms rtt 1Gbps, 69ms rtt 1Gbps, <1ms rtt USWest ads cluster USEast1 ads cluster UK ads cluster USEast2 ads cluster Confidential
  • 13.
    Failure is afeature • 消灭单点故障 • 可独⽴立运⾏行的集群 • 可离线运⾏行的服务实例 • 总是异步 • 断线、重连与最终同步 Confidential 13
  • 14.
  • 15.
    多层次的数据服务 • ⽇日志导出 • 定期报表 •实时报表 • 预测 • BI分析 Confidential 15
  • 16.
    实时报表服务的架构设计 • ZeroMQ forlog transporting • LevelDB for log matching • Redis/MongoDB as Realtime Counters • UI: JQuery + Highcharts + Google Map API Ad MQ Servers RT-Reporting server Servers RT- Bin/Ack Processor Counter? Logs LogTailer/ Processor MongoDB LogSend LogServer ? RT-UI Processor Debug er Historical Logs Data Processor Store? OLTP Confidential
  • 17.
    接⼊入异构平台和终端 $ ftpd ;crond ; xcodebuild ; adb push
  • 18.
  • 19.
  • 20.
    API的基础:可插接的数据访问层 • 建⽴立⼀一致的内部数据层 • API术语 • API数据规范 • 维护兼容性 • 迁移成本的考量 通⽤用 API API 客户端 客户端集成 (Ruby) (C++) SDK 第三⽅方 内部数据层 客户端 特定第三⽅方 导⼊入器 API 集成 服务端集成 (Ruby) (XSLT) Confidential 20
  • 21.
  • 22.
    回顾 • adserver --start • 寻找体现内容最⼤大价值的⽅方程式 • 可扩展的核⼼心架构:处理复杂多变业务逻辑 • netstat -na • 平滑处理流量冲击 • 从链路层开始;⾼高峰流量的特质;冗余 • uptime • 保证全球数据中⼼心的⾼高可⽤用性 • 没有单点、总是异步、最终同步 • tail -f adserver.log • 实现亚分钟级数据透视与多维度商业智能报表 • 实时⽇日志处理框架 • ftpd ; crond ; xcodebuild ; adb push • 接⼊入产业链上下游的异构平台和设备 • 开放数据架构、注重API的⽤用户体验 Confidential 22
  • 23.
    变化总在发⽣生 • 设计 •与产品团队合作:好的产品设计应该是可扩展、可重⽤用的 • 重构 • 定期回顾流量结构和活跃的业务模式 • 透视 • 建⽴立快速诊断问题和容易发现趋势的⼯工具 Confidential 23
  • 24.
    Thank You! Confidential