Lean Message Architecture Highlights

Post on 02-Jul-2015

320 views 6 download

description

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

Transcript of Lean Message Architecture Highlights

LeanMessage通信云架实时 构

孙宁nsun@leancloud.rocks

About

● 孙宁● nsun@leancloud.rocks● wechat:try-another● twitter.com/sunng● github.com/sunng87

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

普通应用● Pull to refresh

实时应用● 聊天, IM

实时应用● 互动游戏

实时应用● 协同编辑

实时消息 Vs REST API

REST API 实时消息

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

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

短连接 持久连接

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

维护状态(编程复杂)

同步 异步

高延迟 低延迟

实时通信的典型部署

Client Agent Client Agent

Async server

User S

pace

RTM from scratch

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

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

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

实时通信云

SDK

Client

SDK

Client

Cloud Infrastructures

Service P

rovider

User SpaceREST Client

实时通信云● 服务端

– 0

● 客户端– Session 抽象

客户端抽象● Session

– 属性● appId● selfId

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

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

客户端抽象隔离● Session

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

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

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

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

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

– 后台运行 Service

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

● HTML5– Websocket或降级方案

服务器端● 功能模块

连接管理

会话管理 消息收发

推送消息

关注关系

点对点消息 群组消息

离线消息群组管理

历史记录

敏感信息过滤

权限认证

统计服务

监控报警

配置管理/

持续集成

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

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

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

– 自动 failover

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

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

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

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

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

● 自动更新可用列表

Wrap up

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

Thanks !

Thanks!