分布式学习笔记---分布式架构网络通信-同步与异步-阻塞和非阻塞

分布式学习笔记—分布式架构网络通信-同步与异步-阻塞和非阻塞

1. 三种IO模型:BIO、NIO、AIO

  1. BIO:同步阻塞
  2. NIO:同步非阻塞
  3. AIO:异步非阻塞

2. 同步和异步简介: 强调的是消息通信机制

2-1.同步
  1. 同步(synchronize)异步(asychronize)是指应用程序和内核(操作系统)的交互而言的.
  2. 同步:指用户进程触发IO操作等待或者轮训的方式查看IO操作是否就绪。
  3. 同步举例: 银行取钱,我自己去取钱,取钱的过程中等待.
2-2.异步
  1. 当一个异步进程调用发出之后,调用者不会立刻得到结果。而是在调用发出之后,被调用者通过状态、通知来通知调用者,或者通过回调函数来处理这个调用。
  2. 使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,OS需要支持异步IO操作
  3. 异步举例:我请朋友帮我取钱,他取到钱后返回给我. (委托给操作系统OS, OS需要支持IO异步API)

3. 阻塞和非阻塞: 强调的是程序在等待调用结果(消息,返回值)时的状态

  1. 阻塞和非阻塞是针对于进程访问数据的时候,根据IO操作的就绪状态来采取不同的方式.
  2. 简单点说就是一种读写操作方法的实现方式. 阻塞方式下读取和写入将一直等待, 而非阻塞方式下,读取和写入方法会立即返回一个状态值.
  3. 举个例子:
    1. 阻塞:ATM机排队取款,你只能等待排队取款(使用阻塞IO的时候,Java调用会一直阻塞到读写完成才返回。)
    2. 非阻塞
      柜台取款,取个号,然后坐在椅子上做其他事,等广播通知,没到你的号你就不能去,但你可以不断的问大堂经理排到了没有。(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)

4. 同步和异步,阻塞和非阻塞的例子

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

5. BIO: 同步阻塞IO,B代表blocking

  1. 服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
  2. 适用场景:Java1.4之前唯一的选择,简单易用但资源开销太高
    在这里插入图片描述

6. NIO介绍: 同步非阻塞IO (non-blocking IO / new io)是指JDK 1.4 及以上版本

  1. 服务器实现模式为一个请求一个通道,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理。
6-1.通道(Channels)
  1. NIO 新引入的最重要的抽象是通道的概念。Channel 数据连接/传输的通道。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中 .
6-2.缓冲区(Buffers)
  1. 通道channel可以向缓冲区Buffer中写数据,也可以像buffer中存数据。
6-3.选择器(Selector)
  1. 使用选择器,借助单一线程,就可对数量庞大的活动 I/O 通道实时监控和维护。
    在这里插入图片描述

7. AIO介绍: 异步非阻塞IO。A代表asynchronize

  1. 当有流可以读时,操作系统会将可以读的流传入read方法的缓冲区,并通知应用程序,对于写操作,OS将write方法的流写入完毕是操作系统会主动通知应用程序。因此read和write都是异步 的,完成后会调用回调函数。
  2. 使用场景:连接数目多且连接比较长(重操作)的架构,比如相册服务器。重点调用了OS参与并发操作,编程比较复杂。Java7开始支持
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值