23
LeanMessage 实时通信云架构 孙宁 [email protected]

LeanMessage 实时通信云架构

Embed Size (px)

Citation preview

Page 1: LeanMessage 实时通信云架构

LeanMessage实时通信云架构孙宁[email protected]

Page 2: LeanMessage 实时通信云架构

About

● 孙宁● [email protected]● wechat:try-another● twitter.com/sunng● github.com/sunng87

Page 3: LeanMessage 实时通信云架构

什么是实时通信?什么是实时通信云?

Page 4: LeanMessage 实时通信云架构

普通应用● Pull to refresh

Page 5: LeanMessage 实时通信云架构

实时应用● 聊天, IM

Page 6: LeanMessage 实时通信云架构

实时应用● 互动游戏

Page 7: LeanMessage 实时通信云架构

实时应用● 协同编辑

Page 8: LeanMessage 实时通信云架构

实时消息 Vs REST API

REST API 实时消息拉模型(外部触发刷新或轮询) 支持推、拉两种模型(实时反应更新)短连接 持久连接无状态或模拟状态(编程简单) 维护状态(编程复杂)同步 异步高延迟 低延迟

Page 9: LeanMessage 实时通信云架构

实时通信的典型部署

Client Agent Client Agent

Async server

User S

pace

Page 10: LeanMessage 实时通信云架构

RTM from scratch

● 服务端– 异步持久连接服务器 (nodejs)

– 系统参数调优– 可用性,扩展性– 运维、监控

● 客户端– 状态维护– 重连策略

Page 11: LeanMessage 实时通信云架构

实时通信云

SDK

Client

SDK

Client

Cloud Infrastructures

Service P

rovider

User SpaceREST Client

Page 12: LeanMessage 实时通信云架构

实时通信云● 服务端

– 0

● 客户端– Session 抽象

Page 13: LeanMessage 实时通信云架构

客户端抽象● Session

– 属性● appId● selfId

– 行为● open/close● watch/unwatch● send

– 事件● open● pause/resume● message● presence (上下线通知)

Page 14: LeanMessage 实时通信云架构

客户端抽象隔离● Session

– Bare metal● 连接创建和重用、管理● 自动重连,永远在线

– 检测网络条件变化– 心跳,保持连接

● 保证消息到达,去重● 隔离下层传输协议

– websocket– socketio– 应用层协议分帧

Page 15: LeanMessage 实时通信云架构

构建持久连接的客户端● Android

– 后台运行 Service

● iOS, Windows Phone– 应用在前台时建立连接– 应用在后台时主动断开,通过平台推送通知

● HTML5– Websocket或降级方案

Page 16: LeanMessage 实时通信云架构

服务器端● 功能模块

连接管理会话管理 消息收发

推送消息

关注关系

点对点消息 群组消息

离线消息群组管理历史记录

敏感信息过滤权限认证

统计服务监控报警

配置管理/持续集成

Page 17: LeanMessage 实时通信云架构

技术栈● Clojure● Netty NIO● core.async, SEDA pipeline● Slacker cluster RPC● Zookeeper● Kestrel

Page 18: LeanMessage 实时通信云架构

微服务架构● Microservice● 细粒度,针对功能和性质拆分● 传输 :消息队列和 RPC● 元编程 :实现本地和远程调用 API一致● 服务作为一层抽象独立于进程

Page 19: LeanMessage 实时通信云架构

服务发现● 利用 Zookeeper注册服务● ephemeral节点● watch

– 自动 failover

– 自动引导流量到新的部署● 动态配置管理

Page 20: LeanMessage 实时通信云架构

Push Service

Push Server

RPC

REST

MQ

RPC

Push Lookup ZK

Push ServerPush ServerPush ServerPush Server

Push Lookup

Push ServicePush ServicePush Service

Storage API

Client

CensorshipRPC

MQ

WatchdogRPC

HTTP

WebSocket

Page 21: LeanMessage 实时通信云架构

负载均衡● 应用层的负载均衡

– DNS负载均衡不够灵活– REST无状态服务

● 根据长连接服务器的负载分配新连接– 支持其他业务规则:灰度上线

● 自动更新可用列表

Page 22: LeanMessage 实时通信云架构

Wrap up

● 降低有状态服务端的开发运维成本● 简化客户端编程● 可伸缩架构支撑业务量扩展● 报表、预警系统增强用户控制

Page 23: LeanMessage 实时通信云架构

Thanks !

Thanks!