Upload
rhythm-sun
View
284
Download
6
Embed Size (px)
Citation preview
⻓长连接服务孙伟
平台研发主管 20150203
⼀一个简单的需求
⽤用户使⽤用⼿手机来控制路由器
甚⾄至进⼀一步控制路由器下⾯面的智能设备
传统做法
轮询?
如何双向通信?
传统做法的缺陷时间上的延迟,可能是⼏几秒甚⾄至更多
轮询越频繁,⺴⽹网络流量消耗越严重
服务器负载严重
⻓长连接的产⽣生
实时
低开销
不再需要请求,便可更新信息
端到端交互
WebSocket是
rfc6455
连接各端设备
交互推送信息
Websockets?
WebSocket⼤大规模爆发
WhatsAppFacebook Closes $19 Billion WhatsApp Deal
WebSocket是客户端 与服务器之间通过 Web 进⾏行快速⽽而⼜又安全的双向通信的机制。
数据通过全双⼯工套接字连接⽴立即传输,从⽽而允许从两个终结点实时发送和接收消息
WebSocket 最适合⽤用于实时游戏、即时社交⺴⽹网络通知、股票或天⽓气信息以及其他需要安全⽽而⼜又快速地传输数据的应⽤用。
rfc6455
连接各端设备
交互推送信息
建⽴立连接为建⽴立 WebSocket 连接,客户端与服务器之间会交换⼀一个基于 HTTP 的特定握⼿手。
如果成功,则会使⽤用前⾯面建⽴立的 TCP 连接将应⽤用程序层协议从 HTTP“升级”到 WebSocket。
此后,HTTP 完全被排除在外;这两个终结点均可使⽤用 WebSocket 协议发送或接收数据,直⾄至 WebSocket 连接断开。
建⽴立连接图⽰示
WebSocket Client可以是HTML5
JavaScript
Flash
Android/iOS/WindowsPhone
等等⼏几乎所有环境
Demo 雏形100⾏行后端代码(包含REST和WebSocket两端)
80⾏行前端代码(模拟Router)
REST Client(模拟Web/iOS/Android)
Demo 场景Router通电后⾃自动连接WebSocket Server
⽤用户通过Phone来访问⾃自⼰己的Router
Phone与REST Server交互数据,包括鉴权
REST请求WebSocket,进⽽而请求Router
Router请求UCI,返回给WS,再返回给REST
最后⽤用户Phone得到结果,获取和操作Router
Demo各端Android App (REST Client)
REST Server(WebSocket Client)
WebSocket Server
Router(WebSocket Client)
Other One?
Demo 数据流
REST 架构
WS安全保证WSS:// TLS 加密
消息鉴权机制
⾮非法设备主动断开
甚⾄至封禁IP
安排安全⼯工程师测试与维护
Demo 分⼯工全端架构设计及WebSocket 服务:孙伟
REST 服务:周谦
Android App:李梦祥
REST与Router的 WS Client及UCI:李梦祥
WS Client 性能测试和优化:程⾠辰
可能性实时Web(实时⽂文档协作、社交信息流)
在线多⼈人游戏
实时数据统计
视频服务
聊天
跨桌⾯面/移动浏览器的应⽤用
Push Web 成为可能
推送服务器,离线推送iOS/Android
⻓长连接服务器,在线推送Web/iOS/Android/...
WebSocket负载均衡
未来架构
成本的降低更少的流量(更低的流量成本)
更⾼高的效率(更低的服务复杂)
性能指标WhatsApp单台物理机 250万
物理机配置 24核CPU + 100G RAM + SSD
new daily record: 20B messages sent (inbound) and 44B messages received (outbound) by our users = 64B messages handled in just 24 hours.
性能优化
调整内核参数
提⾼高⽂文件数
降低每个连接的内存消耗
测试客户端 Intel i5 四核CPU + 16GB 内存
客户机绑定了 10 个 IP
每个 IP 上发出 5 万 TCP 连接
运⾏行 pingpong 协议
每个连接轮流收发 64 字节的消息。
⾼高可⽤用与⾼高性能的前提
⻓长连接服务是⾮非常基础的服务
投⼊入⾮非常⼤大的开发成本、运维成本
https://twitter.com/imRhythm http://weibo.com/irhythm/
Thanks!