vivo推送平台架构演进
如果无法正常显示,请先停止浏览器的去广告插件。
1. 2021 vivo开发者大会
互联网技术专场
vivo推送平台系统架构师
2. 限流
高性能
降级
内容审核
数据一致性
容灾降级
异常流量识别、处理
2021.12.16 vivo开发者大会-互联网技术专场
3. 2021.12.16 vivo开发者大会-互联网技术专场
4. 2021.12.16 vivo开发者大会-互联网技术专场
5. 认识推送
手机客户端主动和服务器建立socket连接,应用运营、开发人员通过后台服务
接口将消息、指令主动下发给手机客户端,手机客户端收到消息后自行处理或
者在通知栏展示。
2021.12.16 vivo开发者大会-互联网技术专场
6. 推送平台后台
亿级同时在线
推送平台
核心能力介绍
推送客户端
应用商店
浏览器
... ...
内容和服务
分发的通道
数千万同时在线
超过1亿注册用户
抖音
是指:一个常驻在手机的后台,通过心跳
机制,使手机和服务器保持一条
,为公
司内外部业务提供全天候实时的信息和服务传输能力。
1.实时百万/秒推送速度 3.实时推送效果分析
2.日最高122亿推送量 4.全量推送消息实时审计
2021.12.16 vivo开发者大会-互联网技术专场
7. 2021.12.16 vivo开发者大会-互联网技术专场
8. 推送平台的业务发展
立项
1亿 10亿 40亿 75亿 100+亿
服务内部业务 内销对外部应用
开放 IM
互联短信
内容安全审核 视频
IoT WebSocket
2021.12.16 vivo开发者大会-互联网技术专场
9. 推送平台架构演进
逻辑
服务
内部业务
自建机房
自建机房
接入
网关
云上
离线
统计
内部
业务
离线
统计
存储
自建机房
逻辑
服务 内容
审核 分布式
缓存
实时
统计 离线
统计 TiDB
全局调度
量级管控
逻辑
服务
华
南
存储
云上
华
东
接入网关
华
北
华
南
云上
华
东
华
北
接入网关
2021.12.16 vivo开发者大会-互联网技术专场
10. 消息服务
业务
SaaS
&
PaaS
浏览器 应用商店
菜鸟裹裹 快手
天气
互联短信
视频
...
Jovi物联
运营、系统消息下发
...
单向
双向富媒体
跨 平 台 ( Android 、 iOS、 IoT移动终端消息队列,
PC)双向富媒体通信,即 发布/ 订阅,设备互联
时通信, 群聊,聊天室...
发布/订阅
服务
push
消息
服务
中台
IM
VBroker
效率组件
效率组件
(规划中)
VRPC
Persisten Connection GateWay
OSS
移动端与后台通信服务框架,简化开发工
(Operation Support Systems 运营支撑系统)
全局GSLB, 流量调度,立体化监控,问题诊断/修复
作,提升业务开发效率:提供多语言、多
协议代码生成, 支持双向Stream通信,
支持Tars、Dubbo
2021.12.16 vivo开发者大会-互联网技术专场
11. 2021.12.16 vivo开发者大会-互联网技术专场
12. HTTPS
HTTPS
Tars
系统概览
SDK
推送
内容
审核
运营系统
IM
大数据
VBroke
r
SDK
Dubbo
运营接口
Dubbo
服务接口 服务代理
消息接口 MQ
Adapter
通信服务
长连接网关
Kafka RMQ
消息代理
存储接口
DAO
MySQL
TiDB
2021.12.16 vivo开发者大会-互联网技术专场
13. t1
监控与质量度量
t1
推送网关 推送网关
推送逻辑 推送逻辑
t2
t2
长连接网关
长连接网关
统计服务
t1 和 t2 的时间基准不一致
95%
80% > 70% > 50%
2021.12.16 vivo开发者大会-互联网技术专场
14. 无锁
C1M 与 长连接保活
内存对齐
池化
硬件指令解密加速 动态心跳
网卡软中断优化 热插拔组件
WebSocket
MQTT
私有二进制
NAT
C++ 多协议接入长连接网关
8C16G
8C32G
连接 6.3GB 内存
proxy
firewall
middle-box
连接 (线上稳定)
业界理想
migratorydata 12C 96G 1200W
网关动态心跳
2021.12.16 vivo开发者大会-互联网技术专场
15. 可视化操作
web console
策略制定
流量调度系统
global
scheduler
全国3地接入 流量调度
全局负载均衡 接入ip 重定向
流量控制
策略存储
策略下发
dispatcher
dispatcher
HTTPDNS
vphone
负载信息上报:连接数、请求量
Set 华中
Set 华北
长连接网关 1
长连接网关 2
Set 华南
长连接网关 长连接网关
vphone vphone vphone
华北 华中 华南
ip redirect
2021.12.16 vivo开发者大会-互联网技术专场
16. 单机 30W+ TPS
32C64G
cache hit: 99.9%
高并发推送
推送网关
百亿级
映射关系转换
推送网关
...
映射关系转换
全局流量调度
分布式缓存
TiDB
消息下发 ... 消息下发
长连接网关 ... 长连接网关
Redis
单机 2W+ TPS
32C16G
cache hit: 99%
业务后台
流控
容灾
多级回压
在线热点迁移
单机 长连接线上环境:170W
8C 32GB(实际使用8GB)
手机
手机
2021.12.16 vivo开发者大会-互联网技术专场
17. 限流控速
针对API上层业务方调用推送 标签推、全量推等大量级推送 下游消息下发模块对限速消息
接口频率进行应用维度的限制 任务,在推送上游tag模块中 通过分布式限流防止流量突增
进行控速下发 增加业务方压力
2021.12.16 vivo开发者大会-互联网技术专场
18. HTTP接口和Dubbo接口利用轮询负载
均衡策略将接口分发到各个API节点
API内对应用维度使用RateLimiter令牌
桶限流算法进行请求频率限制
推送网关限流
令牌桶
各方面应用
推送下
游模块
令牌调节器
传入的请求
分配到令牌
令牌
不足
2021.12.16 vivo开发者大会-互联网技术专场
19. 延迟调度线程
poll task
Redis+lua
thread
Redis做为分布式集群中的中间件保证线程安全,
任务
10
系统内部限速
是否平滑
N
lua脚本执行限流逻辑保证原子性
30
12
RateLimiter
Y
15
20
RateLimiter
任务延迟队列
40
同样通过令牌桶算法实现RateLimiter,用于
校验是否被限速以及计算出限速后的延迟时间
等待队列
thread
thread
thread
推迟工作线程池
……
thread
将限速的推送预计算出延期时间,利用时间构造
小顶堆的延迟队列,任务重试时则从延迟最小的
推送开始重试
2021.12.16 vivo开发者大会-互联网技术专场
20. Pusher
针对单推、群推这种非任务级别的推送。
以clientId做一致性hash将推送分发到
pusher服务,服务内利用Redis实现分
系统内部限速
布式漏桶限流方式进行控速判断。
是否限速
tryAcquire
Broker
例如
限速:1000
则每个分片阈值为:10
限速下发消息的设备加入本地缓存
和Redis缓存的等待队列中,轮
询检测进行重试。
number自增序列打散
Redis
本地保存延迟时间:
当前时间+目标量/速度
Pusher
本地缓存
Redis
空待队列
自增:2 自增:3 自增:3
分片:0 分片:1 。。。 分片:99
轮询检测
2021.12.16 vivo开发者大会-互联网技术专场
21. 熔断降级
cp
手机用户
缓冲通道
传统架构
1. 为了避免突发流量,冗余部署大量机器,成本高,资源浪费严重
2. 在面临大并发突发流量时,无法及时扩容,导致推送成功率降低
优化架构
1.增加缓冲通道,使用消息队列和docker云主机,系统改动小
2.最小机器部署,无人工介入,根据系统负载实现自动扩缩容
2021.12.16 vivo开发者大会-互联网技术专场
22. 团队沟通漏斗模型
代码自动生成测试用例
基于Karate的
自动化测试系统
gherkin
编写测试模板
查看测试报告
保存到管理平台
html
karate
输出测试报告
word
word
持久化到DB
html
JVM运行karate
写入feature
xmid excel
JVM动态DNS
2021.12.16 vivo开发者大会-互联网技术专场
23. 推送系统
谛听
同步审计
敏感词库
不送审词库
本地缓存
安全:内容安全
相似度聚类
AI反垃圾
影响面策略
CP
接入网关
异步审计
任务调度
应用分级审计策略
政府类
…
资讯类
人工反垃圾
谛听人工审核
消息分类
推送系统运营平台
监控告警
在线诊断
撤销回收
推送运营人员
2021.12.16 vivo开发者大会-互联网技术专场
24. 2021.12.16 vivo开发者大会-互联网技术专场
25. 总结展望
实现全系统的
数据一致性
各子完善系统
容灾降级能力
优化接入方式
降低业务接入门槛
业务请求异常流量识别
移动端异常流量识别
2021.12.16 vivo开发者大会-互联网技术专场
26. 2021 vivo开发者大会
互联网技术专场
李青鑫 | vivo推送平台系统架构师
相关技术文章后续
将在公众号发布
敬请关注