我是靠谱客的博主 激昂龙猫,最近开发中收集的这篇文章主要介绍分布式通信框架,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、JAVAIO演进之路

java BIO、NIO、AIO

(1)阻塞与非阻塞

阻塞与非阻塞是针对进程访问数据的时候,数据是否准备就绪的处理方式。

阻塞:需要等待缓冲区的数据准备就绪,将数据返回之后再去处理其他事情,否则一直等待数据;

非阻塞:当进程访问缓冲区时,不管数据是否准备完毕,都立刻返回;

(2)同步、异步

同步和异步是基于应用程序和操作系统针对IO处理的一种方式;比如同步:是应用程序要直接参与IO读写的操作;异步是将所有的IO读写操作都交给操作系统处理,自己只用等待通知;

同步方式在处理IO事件的时候,会阻塞在某个方法上面,等待IO事件处理完成(阻塞IO事件或者通过轮询IO事件的方式);对异步来说,所有的IO操作都交给了操作系统,此时我们可以去做其他的事情,不需要

完成IO操作,当操作系统完成IO之后,会给应用程序通知。

 

BIO:同步阻塞IO

javaio流:InputStream、Outputstream、FileInputStream、FileOutputStream。。。。。。

NIO:同步非阻塞IO(线程池)

AIO:异步非阻塞IO(事件驱动、回调)

IO模型BIONIO
通信方式面向流面向缓冲
处理阻塞IO(多线程0)非阻塞IO(反应堆Reactor)
触发选择机制(轮询方式)

 

分布式通信框架-Netty

javaNIO三件套:

(1)Buffer  缓冲区  实现是特殊的数组

通过position 、limit、capacity对数组的操作进行控制。

(2)Selector 选择器

NIO中非阻塞IO采用了基于Reactor的模式,I/O调用不会被阻塞,而是注册感兴趣的I/O事件,发生特定事件时,系统再通知我们。

NIO中实现非阻塞I/O的核心对象就是Selector,Selector就是注册各种事件的地方,当有事件发生时,Selector再通知我们。

使用NIO中非阻塞I/O处理服务器程序,主要有三个步骤:

1)向Selector注册感兴趣的事件;

2)从Selector中获取感兴趣的事件;

3)根据不同的事件进行相应的处理;

(3)Channel 通道

通过它可以读取和写入数据,所有的数据都是通过Buffer来处理。使用NIO读取数据的步骤:

1)从FileInputStream中获取Channel

2) 创建Buffer

3)将数据从Channel读取到Buffer

 

 

 

 

 

最后

以上就是激昂龙猫为你收集整理的分布式通信框架的全部内容,希望文章能够帮你解决分布式通信框架所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部