【图灵学院15】极致优化-高性能网络编程之BIO与NIO区别

一、Java IO概念

1.  一个http请求节点

  数据传输

1)网络传输

  TCP、UDP

2)通信模型

  BIO、NIO、AIO

  数据处理

3)应用协议

  HTTP、RMI、WEBSERVICE、Redis、JMS

4)序列化协议

  JSON、javaobject、Hession

5)业务处理

  servlet

t 

二、BIO、NIO性能上的差异

在同样的请求下,BIO与NIO不同线程数来支撑。

  推断 请求数 线程数
BIO 请求越多,支持的线程也越多?错误  300  400
NIO  支持的线程不会随着请求的增加而暴增  300  163

 

BIO:

NIO:同步非阻塞,协调员(多路复用器)

 

Tomcat同步阻塞式BIO通信模型:

http-bio-Acceptor

ServerSocket.accept()

读取写入,导致阻塞。

阻塞:表示在网络传输或者业务处理过程中的阻塞,指创建新线程、网络传输过程、业务处理过程中的阻塞。

 建立连接、写入、读取 ----->同一个线程 

 

Tomcat伪异步阻塞式IO通信模型:

管理线程生命周期、重复利用线程、任务队列管理

Acceptor->封装提交Task->线程池->分配Work线程

 建立连接----->同一个线程

写入----->同一个线程

读取 ----->同一个线程 

 

三、通信模型

 

四、BIO、NIO具体的示例

C10K问题

 

posted @ 2017-10-06 20:36  沙漏哟  阅读(631)  评论(0)    收藏  举报