SlideShare a Scribd company logo
1 of 45
在现在大规模高并发的 WEB
应用中,由于硬件及网络的限
制, I/O 处理速度相当较慢,
往往成为 WEB 系统的性能瓶
颈。
步异 程编 模型
PersiaCai
2014-08-22
初衷:避免阻塞 -> 提升吞吐量
TCP
HTTP
Servelt
OS/IO
JAVA IO
Http Server
范及规 实现
Client-Server
HTTP1.0 -> HTTP1.1
Web 技术的发展
1 、 http 短连接
2 、 http 长连接
轮询 ->Comet
3 、 http1.1 持久连接
->WebSocket
Connection: keep-alive
轮询 ->Comet->WebSocket
1 、轮询:客户端定时发请求,询问数据准备
好了没有
2 、 Comet :像彗星滑落天空一样
( 1 ) Long Polling ,等待服务端响应后继续
发起下一个请求
( 2 ) Streaming ,客户端在 timeout 后发起
下一次请求
3 、 WebSocket : http1.1 , persistent
connection
轮询: polling
Comet 实现 1 : long polling
( 1 )由客户端发起 http 请求,服务器收到
这个请求后,进入一个 while(ture) 的循环
,当有数据需要告知客户端时,将数据响
应给客户端,并断开连接。
( 2 )客户端收到信息后进行处理,处理完
成后再次发起新的请求,这就是长轮询的
长连接实现。当然,客户端一般都采用
ajax 方式发起请求。
Comet 实现 2: streaming
在流方式中,服务器推数据返回客户端,但
不关闭连接,连接始终保持,
直到超时,超时后通知客户端重新建立连接
,并关闭原来的连接。
Comet-> 长连接
基于 Http 长连接的服务端推送技术
WebSocket-> 持久连接
http1.1 persistent connection
持久连接
The Http Server Side
目录
1 、 底 求的 步对 层请 异
java nio/ nio2
2 、 上 求的 步对 层请 异
Servlet3 Async Context
3 、中 的 步间层 异
Future/Promise, AKKA
底层 IO 请求
与处理的异步
Old IO
Classic Service Designs
BIO 通信模型
同步阻塞 IO 服务模型(一客户端一线程)
 Non-scalable
 当客户端并发访问量增加后,服务端的线程个数和客户端并发访问数呈现
1:1 的关系;
 线程数膨胀,系统性能急剧下降,线程堆栈溢出,创建新线程失败,进程
僵死 / 系统宕机 / 对外服务不可用
伪异步 IO
 通过线程池来处理多个客户端的请求接入,形成客户端数 M :线程池最大线
程数 N 的比例关系,通过线程池缓冲,避免海量并发导致线程耗尽
 避免了为每个请求都创建一个独立线程,但是底层通信仍然采用的是 BIO 模
型,这种称为伪异步 IO
 当队列积满之后,后续入列操作被阻塞,新的客户端请求被被拒绝,客户端
发生大量的连接超时
NIO
经典 NIO 异步模型—多线程版
传统: CPU 等待 IO 完成
零拷贝技术
CPU 只是发出写操作这样的指令, DMA 具体执行,从内存中读取数据,然后写到磁盘,
当完成写后发出一个中断事件给 CPU ,这段时间 CPU 是空闲的
接收请求
与处理请求的异步
Servlet3 AsyncContext
Spring MVC 3.2
Callable,DefferedResult,WebAsyncT
ask
Async in app
Future-Promise
1 、 Guava
Like js?
Q
A
Async programming-2014-08-22-pub

More Related Content

Viewers also liked

Big Data Analytics Infrastructure
Big Data Analytics InfrastructureBig Data Analytics Infrastructure
Big Data Analytics InfrastructureMin Zhou
 
常见编程问题及对策
常见编程问题及对策常见编程问题及对策
常见编程问题及对策hoopchina
 
前端静态文件部署
前端静态文件部署前端静态文件部署
前端静态文件部署Charles Wu
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践Min Zhou
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介Xu Wang
 
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014Fantix King 王川
 
并发需求下Scala和Erlang的比较-QConBeijing2010
并发需求下Scala和Erlang的比较-QConBeijing2010并发需求下Scala和Erlang的比较-QConBeijing2010
并发需求下Scala和Erlang的比较-QConBeijing2010Caoyuan Deng
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shootingMin Zhou
 
Java程序员也需要了解CPU
Java程序员也需要了解CPUJava程序员也需要了解CPU
Java程序员也需要了解CPUMin Zhou
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
Java Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent QueueJava Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent QueueMin Zhou
 
Java并发编程实践
Java并发编程实践Java并发编程实践
Java并发编程实践sharewind
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享bluedavy lin
 
realtime-twitter-search
realtime-twitter-searchrealtime-twitter-search
realtime-twitter-search亚军 汪
 
Anthill: A Distributed DBMS Based On MapReduce
Anthill: A Distributed DBMS Based On MapReduceAnthill: A Distributed DBMS Based On MapReduce
Anthill: A Distributed DBMS Based On MapReduceMin Zhou
 
并发编程交流
并发编程交流并发编程交流
并发编程交流bluedavy lin
 
Chrome插件开发
Chrome插件开发Chrome插件开发
Chrome插件开发wangeguo
 
准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究Min Zhou
 

Viewers also liked (20)

Big Data Analytics Infrastructure
Big Data Analytics InfrastructureBig Data Analytics Infrastructure
Big Data Analytics Infrastructure
 
常见编程问题及对策
常见编程问题及对策常见编程问题及对策
常见编程问题及对策
 
前端静态文件部署
前端静态文件部署前端静态文件部署
前端静态文件部署
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介
 
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014
About Those Python Async Concurrent Frameworks - Fantix @ OSTC 2014
 
并发需求下Scala和Erlang的比较-QConBeijing2010
并发需求下Scala和Erlang的比较-QConBeijing2010并发需求下Scala和Erlang的比较-QConBeijing2010
并发需求下Scala和Erlang的比较-QConBeijing2010
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shooting
 
Java程序员也需要了解CPU
Java程序员也需要了解CPUJava程序员也需要了解CPU
Java程序员也需要了解CPU
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Java Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent QueueJava Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent Queue
 
Java并发编程实践
Java并发编程实践Java并发编程实践
Java并发编程实践
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享
 
Hive
HiveHive
Hive
 
Redpoll
RedpollRedpoll
Redpoll
 
realtime-twitter-search
realtime-twitter-searchrealtime-twitter-search
realtime-twitter-search
 
Anthill: A Distributed DBMS Based On MapReduce
Anthill: A Distributed DBMS Based On MapReduceAnthill: A Distributed DBMS Based On MapReduce
Anthill: A Distributed DBMS Based On MapReduce
 
并发编程交流
并发编程交流并发编程交流
并发编程交流
 
Chrome插件开发
Chrome插件开发Chrome插件开发
Chrome插件开发
 
准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究
 

Similar to Async programming-2014-08-22-pub

A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0Wen-Tien Chang
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来RolfZhang
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送yongboy
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础xki
 
Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹My own sweet home!
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5lovingprince58
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见CFC4N CHEN
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见mysqlops
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hackpnig0s pnig0s
 
PHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB ServerPHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB Server志賢 黃
 
Http协议介绍
Http协议介绍Http协议介绍
Http协议介绍Sanji Zhang
 
高性能网站建设
高性能网站建设高性能网站建设
高性能网站建设feifeipan
 
Http in development
Http in developmentHttp in development
Http in development仲伟 李
 

Similar to Async programming-2014-08-22-pub (20)

A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0
 
network2
network2network2
network2
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础
 
Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见
 
TA Lesson Web-109
TA Lesson Web-109TA Lesson Web-109
TA Lesson Web-109
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack
 
Intro to REST
Intro to RESTIntro to REST
Intro to REST
 
Intro to rest
Intro to restIntro to rest
Intro to rest
 
PHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB ServerPHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB Server
 
Session1.pdf
Session1.pdfSession1.pdf
Session1.pdf
 
Http协议介绍
Http协议介绍Http协议介绍
Http协议介绍
 
高性能网站建设
高性能网站建设高性能网站建设
高性能网站建设
 
Http in development
Http in developmentHttp in development
Http in development
 

Async programming-2014-08-22-pub