分布式理论、架构设计学习:BIO、NIO、AIO

阅读: 评论:0

分布式理论、架构设计学习:BIO、NIO、AIO

分布式理论、架构设计学习:BIO、NIO、AIO

1. 同步和异步

同步(synchronize)、异步(asychronize)是指应用程序和内核的交互而言的

  • 同步
    指用户进程触发IO操作等待或者轮训的方式查看IO操作是否就绪。

同步举例:银行取钱,我自己去取钱,取钱的过程中等待

  • 异步
    当一个异步进程调用发出之后,调用者不会立刻得到结果。而是在调用发出之后,被调用者通过状态、通知来通知调用者,或者通过回调函数来处理这个调用。

说明: 使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,OS需要支持异步IO操作

异步举例:我请朋友帮我取钱,他取到钱后返回给我(委托给操作系统OS,OS需要支持IO异步API)

2. 阻塞和非阻塞

阻塞和非阻塞是针对于进程访问数据的时候,根据IO操作的就绪状态来采取不同的方式

简单点说就是一种读写操作方法的实现方式。 阻塞方式下读取和写入将一直等待, 而非阻塞方式下,读取和写入方法会理解返回一个状态值

  • 阻塞
    ATM机排队取款,你只能等待排队取款(使用阻塞IO的时候,Java调用会一直阻塞到读写完成才返回。)

  • 非阻塞
    柜台取款,取个号,然后坐在椅子上做其他事,等广播通知,没到你的号你就不能去,但你可以不断的问大堂经理排到了没有。(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)

老张煮开水。 老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。

  1. 老张把水壶放到火上,站立着等水开。(同步阻塞)
  2. 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
  3. 老张把响水壶放到火上,立等水开。(异步阻塞)
  4. 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)

3. BIO

同步阻塞IO。B代表blocking
服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

适用场景:Java1.4之前唯一的选择,简单易用但资源开销太高

  • 服务端代码
package com.study;import java.io.IOException;
import java.InetSocketAddress;
import java.ServerSocket;
import java.Socket;public class IOServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket();serverSocket.bind(new InetSocketAddress("127.0.0.1",9999));while (true){final Socket socket = serverSocket.accept(); // 同步阻塞new Thread(() -> {byte[] bytes = new byte[1024];try {int len = InputStream().read(bytes); // 同步阻塞System.out.println(new String(bytes,0,len));OutputStream().write(bytes,0,len);OutputStream().flush();} catch (IOException e) {e.printStackTrace();}}).start();}}
}
  • 客户端代码
package com.study;import java.io.IOException;
import java.Socket;public class IOClient {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1",9999);OutputStream().write("hello".getBytes());OutputStream().flush();System.out.println("server send back data &

本文发布于:2024-01-29 03:59:15,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647196012539.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分布式   架构   理论   AIO   BIO
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23