(完整版)极光推送-高并发大容量消息推送后台系统架构演进

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

推送后台 4.0
• 多数据中心支持,用户数据同步最终一致性 • 定制化用户维度数据存储(标签/别名,活跃) • SDK 和外围模块增加限流机制,fail-fast • 核心数据存储服务化 • 并行化,协程 • 自研&&定制化开源组件 • 灰度上线
多数据中心
• 所有数据通过 MQ 同步,最终 一致性
1.0 架构难以支撑百万级在线推送
• 在线用户达到百万级时,IO 瓶颈大量出现 • 数据读写占用 mysql 主从大量的 IO • 基础类开发占用大量时间
• CPU/网卡包量和流量/交换机流量等瓶颈
推送后台 2.0
• 接入与业务服务器集群化 • 接入层与逻辑层分离 • 增加独立在线状态节点 • 引入 ICE 框架,tcp --- RPC • mysql 分库分表多实例 • LocalCache
ICE
• IceGrid • IceStorm • Glacier2
• 极光推送是什么? • 十万级在线到百万级在线 • 千万级用户在线 • 亿级用户在线 • 总结
2.0 架构难以支撑千万级在线推送
• 在线状态中心遇到单点性能瓶颈,一个节点难以存储所有在线状态数据 • 内网数据流量暴增 • 物理机上线周期长 • 业务逻辑实现 all in • 接入不均衡,不支持动态调度策略
为何选择 RabbitMQ
• 请求异步化、模块间解耦 • AMQP • HA, produce/Confirm, Consume/Ack, Flow Control • 消息持久化, limited by disk + memory • Kafka 消费延迟
为何选择 Couchbase
• 多语言支持,兼容 memcached 协议 • auto-scaling, HA, Failover, auto-sharding • Json,Memory-first • Sync/async, sub-document
推送后台 3.0
• 在线状态节点重构为多节点+分片+多副本架构,采用 ICE 封装服务接口 • 引入 RabbitMQ,请求数据消息化,模块间采用 MQ 交换数据 • 引入 Couchbase,Redis,业务与数据分离 • 引入 ES,解决用户多维度信息查询和存储 • 业务进程模块化,垂直/水平拆分业务模块,最小化原则 • 增加全局长连接调度中心 • 物理机 ---> KVM • 业务监控
在线状态 节点
Mysql M
Mysql M
Mysql S
Mysql S
业务服务器 业务服务器
长连接服务器 长连接服务器
SDK
SDK
ICE
• Internet Communications Engine 中间件 • 有效利用带宽、内存, CPU, LBS, Failover, TCP,
UDP, SSL, WebSocket • AMI, AMD, 多线程 • IDL (类似 protobuf)
支持 Android, iOS, WinPhone 三大主流平台
极光推送是什么?
• 极光推送是一个平台
独立的第三方云推送平台
服务 78.4 万 app,高效稳定的毫秒级送达移动消息推送解决方案 总用户数超过 130 亿,覆盖 9.25 亿 Android 和 iOS 终端 日推送消息超过 200 亿条
高级用户提供 VIP 服务
海量服务经验是长期积累的结果
9.25亿 1.6亿同时 3000+ 覆盖超过 130 亿移动终端
月活用户 在线用户 服务器 每日推送超过
每日千亿级服务请求 78.4万app 200亿条消息
7×24 服务
消息毫秒级送达 注册用户超过 百亿级用户维度数据
130亿
从0到百亿 技术团队经历了用户数
• 调度 App 到任意 IDC 提供服务
Conn A Conn B Conn C
北京
Conn A Conn B Conn C
深圳
IDC1
MQ IDC3
MQ
IDC2
标签/别名自研存储服务
• 存储用户标签/别名数据 • 基于 ICE, RabbitMQ, redis, pika, zk • 支持按 key 或者 value 分片 • 定制 redis 与 pika • AutoScale,Failover,AutoRecover • Redis 实例 1000+, 存储数据 10+T
高并发大容量消息推送 后台系统架构演进
极光JIGUANG
• 极光推送是什么? • 十万级在线到百万级在线 • 千万级用户在线 • 亿级用户在线 • 总结
极光推送是什么?
• 极光推送是一个产品
极光推送官网 ( ) 帮助开发者向用户传递消息
• 标签,别名,注册ID,分组推送,自动定时推送
数据存储服务化
• 基于 ICE 框架,服务化,内 部逻辑对使用方透明
• 支持 redis,mysql,pika, etc...
长连接调度中心
• 根据运营商,区域,应用, 负载,权值,动态调度 SDK 接入
• 支持接入模块动态上下线
• 提升 SDK 接入质量
调度中心 SDK
Conn A Conn B Conn C
北京
Conn A Conn B Conn C
深圳
管理中心
健康检测 服务
系统层面优化
• RSS • BBR • cpu affinity • NUMA
• 极光推送是什么? • 十万级在线到百万级在线 • 千万级用户在线 • 亿级用户在线 • 总结
ቤተ መጻሕፍቲ ባይዱ
3.0 架构难以支撑亿级在线推送
• 单数据中心,不支持容灾 • 推送业务量越来越大,尤其节假日高峰期业务量十倍于平时 • 用户推送需求越来越复杂,需要存储海量复杂维度的用户数据 • 服务质量要求越来越高,系统可用性要求 99.9% 以上 • 开源组件自身处理能力瓶颈开始显现 • 服务器数量暴增,管理成本几何增长,单节点的效率亟待提升
的整个过程,吸取了很多经验教训
推送后台 1.0
• mysql 增加主从,读写分离 • 无 cache 层,数据直接读写 mysql • 长连接服务器保存所有在线数据
Mysql M
Mysql S
业务服务器
长连接服务器
SDK
• 极光推送是什么? • 十万级在线到百万级在线 • 千万级用户在线 • 亿级用户在线 • 总结
相关文档
最新文档