THELEADINGCONTENTDISTRIBUTIONPLATFORMTHELEADINGCONTENTDISTRIBUTIONPLATFORM利用云服务搭建高性能,高可用的广告系统利用云服务搭建高性能,高可用的广告系统Dec.17,2015黄伟坚Co-founder公司荣誉AppsFlyer全球安卓流量综合排行榜(电商、旅行、工具类App)第2位AppsFlyer全球安卓游戏流量综合排行榜第3位GoogleAdWords2015年核心合作伙伴入选TUNE发布的全球Top25广告主合作伙伴名单,名列第12位1.系统架构演变之路2.处理高并发的设计思路3.海量数据高速查询的解决方案4.离线和实时日志统计5.故障转移主题大纲业务场景Mobvista点击广告广告主下载页面安装数据媒体302跳转安装数据日展现量:100亿日点击量:3亿日激活量:100万业务场景100W点击EC2实时热数据统计结果RDS经典Apache+PHP+Mysql结构单点,功能耦合,可靠性差,速度慢!一亿点击1000W点击实时热数据S3Nodejs+NoSQL+S3+Mysql结构物理多点,异步,容灾弱,拓展性差!NOSQL备份统计结果复制节点-2复制节点-3EC2RDS高并发处理最短延迟1.全球化部署2.DNS最短延迟3.负载均衡Tracking.com最短延迟Route53EC2LoadBalancerEC2美国地区分发节点欧洲地区分发节点EC2LoadBalancerEC2网络优化优化前:Tracking.comDNS最短延迟EC2ELB全球分发节点优化后:Tracking.comEC2ELB全球分发节点主干链路动态CDN高并发处理Tracking.comRoute53EC2ELB批量传输EC2ELB全球分发节点数据中心分发节点分发节点1.二级设计,功能拆分2.缓存实时数据,批量传输海量数据高速查询问题:每秒处理5-10k的写入,存量数据在10亿,如何完成毫秒级查询?NOSQL优缺点Redis1.速度快2.占用内存大,容量瓶颈MongodbReplicaSet1.读写分离,能满足性能要求2.横向扩展制约很大,流量增大,需要手工加机器MongodbSharding1.真正的分布式结构2.硬件&后期维护成本高3.增加和摘除节点,需要平衡数据的时间很长,扩容不方便;4.某个分片挂掉后,影响线上业务;解决方案DynamoDB1.无缝扩展,自动分片2.高性能的读写QPS3.动态调整读写容量,节约成本20150616_TABLEMongoID_3{E:F}MongoID_4{G:H}………………….………………….MongoID主键查询1.MongoID定位到表2.主键查询20150615_TABLEMongoID_1{A:B}MongoID_2{C:D}动态调整容量消耗容量Match预留容量离线日记统计Tracking.comRoute53访问日志全球分发节点数据中心业务日志S3RedShiftRDSEMRS3统计结果数据分析RedShift1.列存储技术,区域压缩,亿级数据快速查询•表自动分区;节点无缝升级扩展,无需停机•可靠性强,自动备份•兼容PostgreSQL,ODBC,迁移成本低数据仓库操作描述(1.8亿条)性能Createtableas复制表3分钟Update更新3千万条90秒Query多维度聚合统计5秒内Join跟万级别表几乎没影响实时日记统计实时数据流数据中心KinesisRedshiftEMRS3Kinesis1.大型分布式数据流进行实时数据处理2.灵活性,吞吐量可从几千/秒到百万/秒3.并行性,多个应用程序同时处理同一个数据流4.成本低,可靠性Tracking.comRoute531.DNShealthchecks全球分发节点全球分发节点2.ELBhealthchecksELBEC2EC2全球分发节点故障转移为什么选择aws•部署快,稳定性高,可拓展性强•节省时间,人力,财力•产品线丰富,满足不同阶段的技术诉求•完善的支持体系Thankyou