SlideShare a Scribd company logo
1 of 23
Download to read offline
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 实时消息 
拉模型(外部触发刷新或轮 
询) 
支持推、拉两种模型(实时反 
应更新) 
短连接持久连接 
无状态或模拟状态(编程简 
单) 
维护状态(编程复杂) 
同步异步 
高延迟低延迟
实时通信的典型部署 
Async server 
Client Agent Client Agent 
User Space
RTM from scratch 
● 服务端 
– 异步持久连接服务器 (nodejs) 
– 系统参数调优 
– 可用性,扩展性 
– 运维、监控 
● 客户端 
– 状态维护 
– 重连策略
实时通信云 
SDK 
Client 
SDK 
Client 
Cloud Infrastructures 
Service Provider 
REST Client User Space
实时通信云 
● 服务端 
– 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 
PPPuuussshhh S SSeeerrrvvviicicceee 
RPC 
MQ 
Push Server 
PPPPuuuusssshhhh S S SSeeeerrrvrvvveeeerrrr 
REST 
RPC 
Push Lookup ZK 
Push Lookup 
Storage API 
Client 
RPC Censorship 
MQ 
Watchdog 
RPC 
HTTP 
WebSocket
负载均衡 
● 应用层的负载均衡 
– DNS负载均衡不够灵活 
– REST无状态服务 
● 根据长连接服务器的负载分配新连接 
– 支持其他业务规则:灰度上线 
● 自动更新可用列表
Wrap up 
● 降低有状态服务端的开发运维成本 
● 简化客户端编程 
● 可伸缩架构支撑业务量扩展 
● 报表、预警系统增强用户控制
Thanks ! 
Thanks!

More Related Content

Viewers also liked

陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web appWebrebuild
 
淘宝交易平台前端重构
淘宝交易平台前端重构淘宝交易平台前端重构
淘宝交易平台前端重构Frank Xu
 
旺铺前端设计分享
旺铺前端设计分享旺铺前端设计分享
旺铺前端设计分享fangdeng
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发Duoyi Wu
 
React单页应用性能调优实践
React单页应用性能调优实践React单页应用性能调优实践
React单页应用性能调优实践spray_lx
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011Yiwei Ma
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理rfyiamcool
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术团队
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术团队
 
美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术团队
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)Ufo Qiao
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Minko Gechev
 

Viewers also liked (17)

Web App Mvc
Web App MvcWeb App Mvc
Web App Mvc
 
陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web app
 
淘宝交易平台前端重构
淘宝交易平台前端重构淘宝交易平台前端重构
淘宝交易平台前端重构
 
旺铺前端设计分享
旺铺前端设计分享旺铺前端设计分享
旺铺前端设计分享
 
nodejs开发web站点
nodejs开发web站点nodejs开发web站点
nodejs开发web站点
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发
 
React单页应用性能调优实践
React单页应用性能调优实践React单页应用性能调优实践
React单页应用性能调优实践
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
Meteor
MeteorMeteor
Meteor
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用
 
美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2
 

Similar to Lean Message Architecture Highlights

Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Dahui Feng
 
徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月drewz lin
 
基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的hnoutman
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验colderboy17
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验guiyingshenxia
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 
什么是云计算
什么是云计算什么是云计算
什么是云计算Liyang Tang
 
Chap12 嵌入式系统开发模式
Chap12 嵌入式系统开发模式Chap12 嵌入式系统开发模式
Chap12 嵌入式系统开发模式Allen Galler
 
轻量分布式服务框架
轻量分布式服务框架轻量分布式服务框架
轻量分布式服务框架-Xing Xing
 
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 SaacChao Zhu
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维guiyingshenxia
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维colderboy17
 
Brochure ahn lab trusguard utm
Brochure ahn lab trusguard utmBrochure ahn lab trusguard utm
Brochure ahn lab trusguard utmahnlabchina
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状Danny AJ Lin
 
微信201204
微信201204微信201204
微信201204drewz lin
 
微信之道201204
微信之道201204微信之道201204
微信之道201204shaomeng shi
 

Similar to Lean Message Architecture Highlights (20)

Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
Mocha Bsm
Mocha BsmMocha Bsm
Mocha Bsm
 
徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月
 
基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
SWsoft_Prim@Telecom
SWsoft_Prim@TelecomSWsoft_Prim@Telecom
SWsoft_Prim@Telecom
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
什么是云计算
什么是云计算什么是云计算
什么是云计算
 
Chap12 嵌入式系统开发模式
Chap12 嵌入式系统开发模式Chap12 嵌入式系统开发模式
Chap12 嵌入式系统开发模式
 
轻量分布式服务框架
轻量分布式服务框架轻量分布式服务框架
轻量分布式服务框架
 
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
Brochure ahn lab trusguard utm
Brochure ahn lab trusguard utmBrochure ahn lab trusguard utm
Brochure ahn lab trusguard utm
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状
 
微信201204
微信201204微信201204
微信201204
 
微信之道201204
微信之道201204微信之道201204
微信之道201204
 

Lean Message Architecture Highlights