Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
基于Tornado打造通用长链接代理服务器
Search
Leo
December 25, 2015
130
0
Share
基于Tornado打造通用长链接代理服务器
Leo
December 25, 2015
More Decks by Leo
See All by Leo
简单实用的自制Rest API工具
nerd
0
320
Luiti 来构建数据仓库
nerd
0
130
py + gi - 高效 C 庫整合方案
nerd
0
64
Python的数据工具箱
nerd
1
120
柔性数据接口的设计与实现.pdf
nerd
0
68
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
270
WCS-LA-2024
lcolladotor
0
570
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
190
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
260
New Earth Scene 8
popppiees
3
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
900
Art, The Web, and Tiny UX
lynnandtonic
304
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
论实时应⽤用开发的『正确』姿势 Rainbow—基于Tornado打造的⻓长连接代理服务器
[email protected]
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 关于@jeff_kit - 珠三⾓角技术沙⻰龙化⽯石组委 -
连续(未成功 -_|||)创业者 - 厚建云计算⼲⼴广州公司总经理 - 略懂Python,⻓长⼤大后想当全栈多 妻 栖⼯工程师 - PyCon⽼老朋友 2
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 懒 3
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 4
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 关于实时(⻓长连接)应⽤用 智能⼿手机推送 即时聊天 监控仪表板
etc … 5
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 关于Socket 编程 异步的编程模型 管理⻓长连接的状态
保证消息传输的可靠性 6
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 不容易 7
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 寻找最偷懒的开发⽅方式 像HTTP应⽤用那样简单! 客户端:Request/Response模式 服务端:写RESTFUL
API 业务逻辑随时更新,不影响⽤用户连接 8
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 9 MQTT ?ZeroMQ? MQTT
/ ZeroMQ Web Mobile BIZ SRV Server HTTP Pub/Sub Pub/Sub Pub/Sub Auth Handler InProc://
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! Why not! 编写专有的鉴权系统 Pub/Sub系统所有客户端平等
以致于服务端没有上帝视⾓角 服务端不能控制客户端 10
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! ⼼心中的她... 11 Her Web
Mobile BIZ SRV Req/Rsp Req/Rsp Connect Close Forward make client sub/unsub Send to a channel HTTP
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 消息的关键概念 消息类型,类⽐比HTTP的URL 消息内容,类⽐比HTTP的参数 12
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 基于WebSocket TCP+,轻 但,完整:⼼心跳,装拆消息包 ⽀支持Web接⼊入
成熟、流⾏行 13
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 借鉴MQTT的QoS 消息Quality of Service
三个级别 级别 0:最多只发⼀一次,不管是否成功 级别 1:保证⾄至少成功送达⼀一次 级别 2:保证有且只成功送达⼀一次 14
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 协议格式 15
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 命令类型 PACKET_SEND PACKET_ACK #
for QoS=1 PACKET_REC # for QoS=2 PACKET_REL # for QoS=2 PACKET_COM # for QoS=2 16
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 站在Tornado的肩膀上 ⾯面向⾼高并发的异步IO Socket开发框架 在FriendFeed,Facebook内久经考验
内置WebSocket实现、定时器等 17
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 她叫Rainbow 18
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 这样写客户端 19 Objective-C
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 这样写客户端 20
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! ⽼老湿,整⼀一聊天Demo吧 21
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! pip install rainbow-server 22
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! rainbow.ini 23
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! rainbow-server -f rainbow.ini 24
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! pip install rainbow-django 25
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 服务端代码 26
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 27
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 28
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 29 主要JS代码
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 服务器集群 零配置,内⺴⽹网⾃自动发现机制 TCP Port:1984
- ~ UDP Port:2014 - ~ ⺴⽹网内⽀支持多个独⽴立集群,cluster_name 30
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! http://rainbow/serverinfo/ 31
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! BenchMark(1G内存单核 ) 32
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 感谢 同事们: 智丰、升爷、亮、理天、Nick 社区伙伴:⽼老潘、邱⽂文武、婷姐@techparty
微信群:⼲⼴广州技术宅饭醉团伙 33
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic!
北京/上海/⼲⼴广州 0xFF Life's pathetic, go Pythonic! 讨论 35