什么是Tornado
全稱Tornado Web Server豆同,是一種Web服務器的開源版本埃疫。
特點
作為Web框架剂买,是一個輕量級的Web框架气笙,類似于另一個Python Web框架Web.py得哆,其擁有異步非阻塞IO處理方式梁剔。
作為Web服務器虽画,Tornado有較為出色的抗負載能力,官方用ngnix反向代理的方式部署Tornado和其他Python Web框進行對比荣病,結(jié)果最大瀏覽量超過第二名近40%码撰。
使用場景
- 用戶量大,高并發(fā)个盆。(12306脖岛、網(wǎng)絡游戲)
- 大量的HTTP持久連接
- 使用同一個TCP連接來發(fā)送和接收多個HTTP請求/響應,而不是為每一個新的請求/響應打開新的連接
- 對于HTTP1.0砾省,可以在請求頭中添加
Connection:Keep-alive=
- 對于HTTP1.1鸡岗,所有的連接默認都是持久連接
C10K
上面的高并發(fā)問題,通常用C10K這一概念來描述编兄。C10K:concurrently handling ten thousand connections轩性,即并發(fā)10000個連接。對于單臺服務器而言狠鸳,根本無法承擔揣苏,而采用多臺服務器分布式又意味著高昂的成本。
性能
Tornado在設計之初就考慮到了性能因素件舵,旨在解決C10K問題卸察,這樣的設計使得其成為一個擁有非常高性能的解決方案(服務器與框架的集合體)。
Tornado與Django對比
Django
Django是走大而全的方向铅祸,注重的是開發(fā)效率坑质,它最出名的是其全自動化的管理后臺:只需要使用ORM合武,做簡單的對象定義,它就能自動生成數(shù)據(jù)庫結(jié)構(gòu)涡扼、以及全功能的管理后臺稼跳。
Django提供的方便,也意味著Django內(nèi)置的ORM跟框架內(nèi)的其他模塊耦合度非常高吃沪,應用程序必須使用Django內(nèi)置的ORM汤善,否則就不能享受到框架內(nèi)提供的種種基于其ORM的便利。
特點:
- session功能
- 后臺管理
- ORM
Tornado
Tornado走的是少而精的方向票彪,注重的是性能優(yōu)越红淡,它最出名的是異步非阻塞的設計方式。
特點:
- HTTP服務器
- 異步編程
- WebSockets