长连接和服务端推送

实时性APP的通用需求

  • IM
  • 游戏
  • 网络电话

定义系统边界

接入层业界实践

  • Nginx
  • YY Service
  • socket.io
按uid推送 按房间推送 在线状态查询 踢人禁用 不停服升级 可横向扩容
Nginx
Service
socket.io

部署更轻量,接入更简易

  • 业务隔离
  • 测试、预发布、生产环境
  • 无需SDK,微信开源客户端Mars开箱即用

Mars 开箱即用

  • Mars 是微信官方的跨平台跨业务的终端基础组件
  • 例子特别多:Android, iOS, Mac, Windows
  • 应对弱网;智能心跳省电

部署策略

  • 推送系统本身分布式
  • 接入服部署在单线边缘机房,更靠近客户端
  • 推送服部署在中心机房,更靠近业务
  • 广播起止于边缘机房和客户端,节省带宽

语言协议中立的推送 API

  • HTTP POST
  • 指定 uid (可多个) 或者 roomid
  • 内容透传到客户端

典型的应用场景

Made with Slides.com