Golang与高性能DSP竞价系统.pdf

上传人:yyf 文档编号:3330209 上传时间:2019-08-13 格式:PDF 页数:51 大小:5.09MB
返回 下载 相关 举报
Golang与高性能DSP竞价系统.pdf_第1页
第1页 / 共51页
Golang与高性能DSP竞价系统.pdf_第2页
第2页 / 共51页
Golang与高性能DSP竞价系统.pdf_第3页
第3页 / 共51页
Golang与高性能DSP竞价系统.pdf_第4页
第4页 / 共51页
Golang与高性能DSP竞价系统.pdf_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《Golang与高性能DSP竞价系统.pdf》由会员分享,可在线阅读,更多相关《Golang与高性能DSP竞价系统.pdf(51页珍藏版)》请在三一文库上搜索。

1、专业DSP解决方案供应商 Golang与高性能DSP竞价系统 By QLeelulu 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved RTB: Real-time Bidding,实时竞价,允许广告买家根据 活动目标、目标人群以及费用门槛等因素对每一个广告 及每次广告展示的费用进行竞价。 DSP: Demand Side Platform,需求方平台,允许广告客 户和广告机构更方便地访问,以及更有效地购买广告 库存,因为该平台汇集了各种广告交易平台的库存。 什么是RTB与DSP 专业DSP解决方案 广州舜飞信息科技有限公司

2、 All Right ReservedAll Right Reserved 什么是RTB与DSP 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 什么是RTB与DSP 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 高并发量请求处理(峰值QPS 20万) 每天上百亿竞价请求 每个竞价请求要在100毫秒内响应(包含网络延迟) 复杂的出价算法与逻辑 DSP竞价系统的挑战 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAl

3、l Right Reserved 竞价请求解析(JSON 或 Google Protobuf) 根据广告位属性过滤活动 根据客户端信息过滤活动(浏览器、操作系统类型等) 根据地区过滤活动 查询Cookie Mapping得到访客在DSP系统的唯一ID 根据用户看过广告的频次过滤活动 根据访客的人群属性过滤活动 根据活动的出价选择胜出的活动 其他更细致的过滤条件 100毫秒内要做些什么 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 为什么选择Golang 专业DSP解决方案 广州舜飞信息科技有限公司 All Right R

4、eservedAll Right Reserved 2012-11-29 在 Go 1.1 发布之后 第一次签入 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved http包的HelloWorld性能测试 为什么选择Golang Via: http:/ 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 高性能、天生并发支持 性能敏感的模块可以直接使用C编写(当时是这么认为的) 编译为本地机器码,部署方便 快速上手,学习成本低 标准库基本够用 带GC(当时不

5、了解GC的性能问题) 自带单元测试、性能测试、性能分析工具 开发效率不低 为什么选择Golang 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved C+ NodeJS Golang 备选 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 竞价接口 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 直接用golang的http包 只使用gorilla/mux做简单的请求路由 封装简单的HT

6、TPBaseHandler HTTP竞价接口 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 简单的HTTPBaseHandler 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 简单监控接口: GO 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 简单监控接口 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved

7、预警接口: Interface 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 预警接口: Redis 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved Dispatch: 数据、状态同步 Dispatch etcd Bid Server Bid Server . . Bid Server Bid Server 队列 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 专业DSP解决方案

8、 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 重度使用Redis 存放的数据包括 CookieMapping 曝光频次 DMP人群数据 实时费用消耗 其他 Redis集群 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved Server端:等待Redis官方(当时还没有的) Proxy中间代理:twemproxy,维护方便,有一定的性能消 耗 Client端:配置、维护麻烦,几乎无性能损耗 Redis集群 专业DSP解决方案 广州舜飞信息科技有限公司 All Right

9、ReservedAll Right Reserved 最终在Client端实现 一致性hash: 预先开启足够多的Redis实例,预防增加节点带来的数据 迁移麻烦 Redis集群 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 500个Redis实例 占用600G内存 峰值QPS在50万 Redis集群 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right

10、 Reserved 直接配置主从同步 机房间网络差,非常差(北京香港,北京北美) 会触发Redis全量同步(超过repl-backlog-size时) Redis跨机房同步 需要替代方案 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 取消Redis的主从同步 写主Redis时,同时写一份到NSQ,异步写入其他机房 使用SoftLayer的香港云主机作为中转(why?) Redis跨机房同步 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 内存占用过大

11、时,可以切分为多个实例,减少单个实例 的内存占用,减少BgSave和重启时Load数据的时间 一致性要求不是非常高的业务,可以把自动的BgSave 关闭,在凌晨或者空闲时候手动调用BgSave Redis运维 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 广告投放时是用Cookie来定向用户的 CM保存了DSP与ADX(如百度、淘宝)间CookieId的映 射关系 在RTB竞价的时候,DSP可以根据ADX-CookieId从映射 表中获取到DSP-CookieId CookieMapping 专业DSP解决方案 广州舜飞

12、信息科技有限公司 All Right ReservedAll Right Reserved CookieMapping 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 数据量大,单个渠道全量映射达到20亿以上Id 渠道多达几十个 每个竞价请求查一次 响应控制在1ms以内 CookieMapping存储 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 数据存在Redis中 占用内存大,达到2T内存 内存成本高 Redis没有集群,维护成本高(嗯,当时是还

13、没的) CookieMapping 第一版 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 性能不比Redis差 SSD优化 完备的分布式集群 二级索引 开源,企业版支持跨机房的集群 99%的请求1ms响应 支持的数据结构类型偏简单 CookieMapping: Aerospike 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 采用SSD来存储(Intel S3500,SATA口) 数据在SSD中,索引在内存中(1G内存索引16M记录) 10个节点,

14、replication-factor: 1,写一份到Ardb做备份 官方提供Go的Client 线上半年无故障 CookieMapping: Aerospike 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved CookieMapping: Aerospike =writes_reply= timespan ops/sec 1ms 8ms 64ms 192.168.3.52:3000 10:25:12-GMT-10:25:22 2378.6 0.06 0.00 0.00 192.168.3.53:3000 10:25:04-

15、GMT-10:25:14 2273.1 0.03 0.00 0.00 192.168.3.54:3000 10:25:13-GMT-10:25:23 2292.5 0.04 0.00 0.00 192.168.3.55:3000 10:25:09-GMT-10:25:19 2481.1 0.03 0.00 0.00 192.168.3.56:3000 10:25:12-GMT-10:25:22 2359.8 0.11 0.00 0.00 =reads= timespan ops/sec 1ms 8ms 64ms 192.168.3.52:3000 10:25:12-GMT-10:25:22 1

16、1974.2 0.18 0.00 0.00 192.168.3.53:3000 10:25:04-GMT-10:25:14 11741.3 0.06 0.00 0.00 192.168.3.54:3000 10:25:13-GMT-10:25:23 10975.6 0.12 0.00 0.00 192.168.3.55:3000 10:25:09-GMT-10:25:19 12223.2 0.09 0.00 0.00 192.168.3.60:3000 10:25:13-GMT-10:25:23 11266.2 0.10 0.00 0.00 专业DSP解决方案 广州舜飞信息科技有限公司 All

17、 Right ReservedAll Right Reserved 独立部署 方便更新与重启 把服务划分为独立的进程 ./bin adx_mod analysis bid charge convrate_import cookie_map dispatch ip_import kpicharge pdmp whisky 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved Go不支持以后台进程的方式启动 使用Supervise来管理进程 配合parallel-ssh做集群管理 部署:进程管理 专业DSP解决方案 广州舜飞信息科技

18、有限公司 All Right ReservedAll Right Reserved Nginx做前端 开多个Go进程 Nginx的upstream做负载均衡 Nginx的upstream记得开 keepalive 部署:web服务器 Nginx Go竞价服务 Go竞价服务 Go竞价服务 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 三个人(Golang部分) 三个多月 第一版正式上线 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 30台竞价服务器,

19、CPU为8核16线程 每天100多亿竞价请求 峰值20万QPS 98%响应在10ms以内 稳定 线上运行情况 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 每天N亿曝光 30个维度,40个指标 表的数据量和维度的离散程度相关 如广告位有5000个,全国500个城市,时间粒度到小时级别,则地区汇总表一个 推广活动一天最多就有 5000*500*24 = 6千万 记录 实时统计 实时计算、入库 实时查询,秒级响应 曝光统计服务 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Righ

20、t Reserved 曝光统计服务 HTTP接口, Go服务 日志 队列 Transfer, 计算并生成SQL SQL 队列 MysQL 实时库 读取SQL 写入MysQL InfoBright 历史库 隔天导入 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 应届毕业生 一个人 三个星期 接近一万行代码 性能提升7倍 部署、维护更方便 Golang重写原来PHP的Transfer 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 写入做一些合并,减少写

21、入的SQL数量 MySQL库只保留最近7天的数据 MySQL使用MyISAM引擎 MySQL做分库、分表后还可以应付 InfoBright是列存储 InfoBright压缩率奇高 InfoBright使用的是社区版 曝光统计服务 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved MySQL 不适合OLAP类应用 MySQL和InfoBright横向扩展都不方便 数据更新麻烦 曝光统计服务: 问题 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved Apach

22、e Drill HP Vertica EMC GreenPlum Cassandra InfiniDB MonetDB VoltDB InfluxDB 实时统计存储 MemSQL opentsdb kairosDB Kylin Druid 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 专为统计分析而生 列存储 shared-nothing的分布式架构,可扩展性、高可用 秒级以内对十亿行级别的表进行统计查询 对内存要求高,相当于内存数据库 JAVA系,开源 曝光统计服务: Druid 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 没有Go的Client,所以我们写了一个 曝光统计服务: Druid 专业DSP解决方案 广州舜飞信息科技有限公司 All Right ReservedAll Right Reserved 回馈社区 第三方包会有一些小坑 网络运营全流程解决方案供应商 Q&A Thanks! 欢迎加入我们!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1