zoukankan      html  css  js  c++  java
  • 【图灵学院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

    二、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问题

  • 相关阅读:
    Linux 启动过程详解
    ASM实例原始磁盘搜索路径
    RMAN命令总结
    使用DUPLICATE 方式创建ORACLE 11G DG备库环境
    Dataguard中日志传输服务
    Material design之Material Theme
    创建一个Material Design应用过程
    android Material design是什么
    Android 最新L版本,都更新什么东西了
    AndroidHttpClient和HttpEntity详解
  • 原文地址:https://www.cnblogs.com/yeahwell/p/7632816.html
Copyright © 2011-2022 走看看