-
內核瓶颈
推送量大:100万在线 * 10条/秒 = 1000万条/秒
内核瓶颈:linux 内核发送 TCP 的极限包频 ~ 100 万/秒
查看全部 -
3 个性能瓶颈
內核瓶颈
锁瓶颈
CPU 瓶颈
查看全部 -
內部原理
启动读协程,循环读取 WebSocket,将消息投递到 in channel
启动写协程,循环读取 out channel,将消息写给 WebSocket
查看全部 -
API 原理
SendMessage 将消息投递到 out channel
ReadMessage 从 in channel 读取消息
查看全部 -
隐藏细节,封装 API
封装 connection 结构,隐藏 ebsocket/底层连接
封装 connection 的 API,提供 Send/Read/Close 等线程安全接口
查看全部 -
缺乏工程化的设计
其他代码模块,无法直接操作 Websocket 连接
Websocket 连接非线程安全,并发读/写需要同步手段
查看全部 -
Websocket 是 HTTP 协议 Upgrade 而来
使用 http 标准库快速实现空接口:/ws
查看全部 -
NodeJS:单线程模型,推送性能有限
C/C++:TCP 通讯、Websocket 协议实现成本高
Go!
多线程,基于协程模型并发
成熟的 WebSocket 标准库,无需造轮子
查看全部 -
Heartbeat
查看全部 -
Upgrade: websocket
查看全部 -
抓包观察
使用 chrome 开发者工具,观察 WebSocket 通讯流程
查看全部 -
传输原理
协议升级后,继续复用 HTTP 的底层 socket 完成后续通讯
message 底层被切分成多个 frame 帧传输
编程时只需操作 message,无需关心 frame
框架底层完成 TCP 网络 I/O,WebSocket 协议解析,开发者无需关心
查看全部 -
通讯流程!
查看全部 -
基于 WebSocket 推送
浏览器支持的 socket 编程,轻松持服务端的长连接
基于 TCP 可靠传输之上的协议,无需开发者关心通讯细节
提供了高度抽象的编程接口,业务开发成本较低
查看全部 -
推模式
仅在数据更新时才需要推送
需要维大量的在线长连接
数据更新后可以立即推送
查看全部
举报