2-百万弹幕下的礼物系统(公开)
2020-02-27 170浏览
- 1.百万弹幕下的礼物系统 ——-海量并发 强事务系统实践 沈冠璞 shenguanpu@panda.tv
- 2.我是谁? 熊猫直播⾼高级应⽤用开发⼯工程师,近7年后端开发经验 曾任职新浪微博、360等互联⺴⽹网公司,负责短链接、微博Card对象、⺴⽹网游⻚页游平台 业务。对⾼高并发海量数据业务设计有丰富经验 经历熊猫直播从0到1 海量PV和存储的快速扩张发展场景,有⼤大中型互联⺴⽹网⺴⽹网站⾼高 可⽤用设计架构经验。
- 3.现状 两集群 各6台服务器 QPS 峰值20000+ 平均响应时间10ms 服务热部署,99.99%可⽤用 百万条订单/天,数⼗十亿交易流⽔水
- 4.整体架构 LVS LVS LVS LVS LVS nginx nginx LVS nginx nginx nginx - - nginx - - redis redis redis redis redis redis redis redis redis redis mongo redis mongo A redis redis mongo redis redis redis mongo mongo B mongo
- 5.构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 6.没有礼物的直播就是耍流氓!
- 7.设计 礼物列表 礼物赠送 礼物排⾏行 礼物消费流⽔水
- 8.设计
- 9.设计 magi golang redis mongoDB
- 10.设计
- 11.分组设计
- 12.构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 13.⻓长连带宽问题 60GB 礼物消息过⼤大 打满⻓长连⺴⽹网卡
- 14.redis问题 3w 卡了⻬齐刷房间 redis QPS超标 ⺴⽹网卡吃紧
- 15.WTF!
- 16.扩容和压缩 siege top nload cpu mem eth0 load pps 应⽤用服务器扩容 redis 增加slave Algorithm remaining Encoding Decoding GZIP 13.4% 21 MB/s 118 MB/s LZO 20.5% 135 MB/s 410 MB/s Zippy/ Snappy 22.2% 172 MB/s 409 MB/s 对礼物列表gzip压缩 4KB到1KB
- 17.扩容和压缩 40" 35" 30" 25" 20" 15" 10" 5" 0"
- 18.消息优化 168字节 x 100万 在线 x 100礼物弹幕/s 节省16GB带宽/s 削减礼物信息冗余,⻓长连接带宽也消停了。
- 19.构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 20.CAS ⺩王撕葱:“我连击了100个佛跳墙,你消费记录竟然就给我记了 100条”
- 21.CAS
- 22.CAS 三分钟之内累计点击算连击 update 间隔超过三分钟 新增 insert
- 23.
- 24.CAS ⼤大部分房间 只能⼀一个个单击赠送 增加连击数的⽅方案: 1连击 7连击 DB 8连击 …….. 200连击 200连击
- 25.CAS 专题⻚页批量赠送 连击的⽅方案: 1连击 100个 连击数和 5连击 1000个 当前赠送总数两个计数 10连击 2000个 3分钟同时过期 20连击 6666个 hset结构维持 DB 6666个
- 26.CAS 注意点: redis 3.2之前版本从库 key惰性过期 golang redis lib 需设置MaxActive⼤大⼩小, Wait true golang mongo lib 需设置maxPoolSize
- 27.NoSQL事务 9⽉月9⽇日收益 1,000猫币 收益被累积到第⼆二天 ⽆无法和⽀支付记录按天对账 9⽉月10⽇日收益 100,000猫币
- 28.WTF!
- 29.NoSQL事务 • 事务和吞吐的权衡 • 最终⼀一致性 • 保证⾼高性能 CAS
- 30.⾃自动对账系统
- 31.构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 32.failover 1 2 3 复杂的跨系统交互 4 5
- 33.failover • 系统隔离 • 降级 • 超时控制 • 异步
- 34.failover带来的问题 扣费成功 却 • • • • 没有加上经验 没有弹出弹幕效果 没有返⽵竹⼦子奖励 消费记录查不到
- 35.构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 36.跨系统事务 状态跟踪回补系统 1 2 3 4 5
- 37.状态跟踪回补系统
- 38.最终模块 礼物列表 礼物分组管理 礼物赠送 礼物排⾏行 收益统计、对账 礼物消费流⽔水 状态跟踪回补系统
- 39.总结 构建百万在线的礼物系统 • • NoSQL系统 • 设计 • 优化 保证最终⼀一致性 • NoSql事务 • failover • 跨系统事务
- 40.QA && 快上⻋车! shenguanpu@panda.tv