长连接服务 websocket service

29
连接服务 孙伟 平台研发主管 20150203

Upload: rhythm-sun

Post on 15-Jul-2015

276 views

Category:

Software


6 download

TRANSCRIPT

Page 1: 长连接服务 WebSocket Service

⻓长连接服务孙伟

平台研发主管 20150203

Page 2: 长连接服务 WebSocket Service

⼀一个简单的需求

⽤用户使⽤用⼿手机来控制路由器

甚⾄至进⼀一步控制路由器下⾯面的智能设备

Page 3: 长连接服务 WebSocket Service

传统做法

轮询?

如何双向通信?

Page 4: 长连接服务 WebSocket Service

传统做法的缺陷时间上的延迟,可能是⼏几秒甚⾄至更多

轮询越频繁,⺴⽹网络流量消耗越严重

服务器负载严重

Page 5: 长连接服务 WebSocket Service

⻓长连接的产⽣生

实时

低开销

不再需要请求,便可更新信息

端到端交互

Page 6: 长连接服务 WebSocket Service

WebSocket是

rfc6455

连接各端设备

交互推送信息

Websockets?

Page 7: 长连接服务 WebSocket Service

WebSocket⼤大规模爆发

Page 8: 长连接服务 WebSocket Service

WhatsAppFacebook Closes $19 Billion WhatsApp Deal

Page 9: 长连接服务 WebSocket Service

WebSocket是客户端 与服务器之间通过 Web 进⾏行快速⽽而⼜又安全的双向通信的机制。

数据通过全双⼯工套接字连接⽴立即传输,从⽽而允许从两个终结点实时发送和接收消息

WebSocket 最适合⽤用于实时游戏、即时社交⺴⽹网络通知、股票或天⽓气信息以及其他需要安全⽽而⼜又快速地传输数据的应⽤用。

rfc6455

连接各端设备

交互推送信息

Page 10: 长连接服务 WebSocket Service

建⽴立连接为建⽴立 WebSocket 连接,客户端与服务器之间会交换⼀一个基于 HTTP 的特定握⼿手。

如果成功,则会使⽤用前⾯面建⽴立的 TCP 连接将应⽤用程序层协议从 HTTP“升级”到 WebSocket。

此后,HTTP 完全被排除在外;这两个终结点均可使⽤用 WebSocket 协议发送或接收数据,直⾄至 WebSocket 连接断开。

Page 11: 长连接服务 WebSocket Service

建⽴立连接图⽰示

Page 12: 长连接服务 WebSocket Service

WebSocket Client可以是HTML5

JavaScript

Flash

Android/iOS/WindowsPhone

等等⼏几乎所有环境

Page 13: 长连接服务 WebSocket Service

Demo 雏形100⾏行后端代码(包含REST和WebSocket两端)

80⾏行前端代码(模拟Router)

REST Client(模拟Web/iOS/Android)

Page 14: 长连接服务 WebSocket Service

Demo 场景Router通电后⾃自动连接WebSocket Server

⽤用户通过Phone来访问⾃自⼰己的Router

Phone与REST Server交互数据,包括鉴权

REST请求WebSocket,进⽽而请求Router

Router请求UCI,返回给WS,再返回给REST

最后⽤用户Phone得到结果,获取和操作Router

Page 15: 长连接服务 WebSocket Service

Demo各端Android App (REST Client)

REST Server(WebSocket Client)

WebSocket Server

Router(WebSocket Client)

Other One?

Page 16: 长连接服务 WebSocket Service

Demo 数据流

Page 17: 长连接服务 WebSocket Service

REST 架构

Page 18: 长连接服务 WebSocket Service

WS安全保证WSS:// TLS 加密

消息鉴权机制

⾮非法设备主动断开

甚⾄至封禁IP

安排安全⼯工程师测试与维护

Page 19: 长连接服务 WebSocket Service

Demo 分⼯工全端架构设计及WebSocket 服务:孙伟

REST 服务:周谦

Android App:李梦祥

REST与Router的 WS Client及UCI:李梦祥

WS Client 性能测试和优化:程⾠辰

Page 20: 长连接服务 WebSocket Service

可能性实时Web(实时⽂文档协作、社交信息流)

在线多⼈人游戏

实时数据统计

视频服务

聊天

跨桌⾯面/移动浏览器的应⽤用

Page 21: 长连接服务 WebSocket Service

Push Web 成为可能

推送服务器,离线推送iOS/Android

⻓长连接服务器,在线推送Web/iOS/Android/...

Page 22: 长连接服务 WebSocket Service

WebSocket负载均衡

Page 23: 长连接服务 WebSocket Service

未来架构

Page 24: 长连接服务 WebSocket Service

成本的降低更少的流量(更低的流量成本)

更⾼高的效率(更低的服务复杂)

Page 25: 长连接服务 WebSocket Service

性能指标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.

Page 26: 长连接服务 WebSocket Service

性能优化

调整内核参数

提⾼高⽂文件数

降低每个连接的内存消耗

Page 27: 长连接服务 WebSocket Service

测试客户端 Intel i5 四核CPU + 16GB 内存

客户机绑定了 10 个 IP

每个 IP 上发出 5 万 TCP 连接

运⾏行 pingpong 协议

每个连接轮流收发 64 字节的消息。

Page 28: 长连接服务 WebSocket Service

⾼高可⽤用与⾼高性能的前提

⻓长连接服务是⾮非常基础的服务

投⼊入⾮非常⼤大的开发成本、运维成本

Page 29: 长连接服务 WebSocket Service

https://twitter.com/imRhythm http://weibo.com/irhythm/

Thanks!