Lean Message Architecture Highlights

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

description

An introduction to LeanCloud realtime messaging service, client abstraction and server architecture hightlights.

Transcript of Lean Message Architecture Highlights

Page 1: Lean Message Architecture Highlights

LeanMessage通信云架实时 构

孙宁[email protected]

Page 2: Lean Message Architecture Highlights

About

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

Page 3: Lean Message Architecture Highlights

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

Page 4: Lean Message Architecture Highlights

普通应用● Pull to refresh

Page 5: Lean Message Architecture Highlights

实时应用● 聊天, IM

Page 6: Lean Message Architecture Highlights

实时应用● 互动游戏

Page 7: Lean Message Architecture Highlights

实时应用● 协同编辑

Page 8: Lean Message Architecture Highlights

实时消息 Vs REST API

REST API 实时消息

拉模型(外部触发刷新或轮询)

支持推、拉两种模型(实时反应更新)

短连接 持久连接

无状态或模拟状态(编程简单)

维护状态(编程复杂)

同步 异步

高延迟 低延迟

Page 9: Lean Message Architecture Highlights

实时通信的典型部署

Client Agent Client Agent

Async server

User S

pace

Page 10: Lean Message Architecture Highlights

RTM from scratch

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

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

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

Page 11: Lean Message Architecture Highlights

实时通信云

SDK

Client

SDK

Client

Cloud Infrastructures

Service P

rovider

User SpaceREST Client

Page 12: Lean Message Architecture Highlights

实时通信云● 服务端

– 0

● 客户端– Session 抽象

Page 13: Lean Message Architecture Highlights

客户端抽象● Session

– 属性● appId● selfId

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

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

Page 14: Lean Message Architecture Highlights

客户端抽象隔离● Session

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

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

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

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

Page 15: Lean Message Architecture Highlights

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

– 后台运行 Service

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

● HTML5– Websocket或降级方案

Page 16: Lean Message Architecture Highlights

服务器端● 功能模块

连接管理

会话管理 消息收发

推送消息

关注关系

点对点消息 群组消息

离线消息群组管理

历史记录

敏感信息过滤

权限认证

统计服务

监控报警

配置管理/

持续集成

Page 17: Lean Message Architecture Highlights

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

Page 18: Lean Message Architecture Highlights

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

Page 19: Lean Message Architecture Highlights

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

– 自动 failover

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

Page 20: Lean Message Architecture Highlights

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: Lean Message Architecture Highlights

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

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

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

● 自动更新可用列表

Page 22: Lean Message Architecture Highlights

Wrap up

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

Page 23: Lean Message Architecture Highlights

Thanks !

Thanks!