1.2.3 大型网站技术和java中间件-分布式系统的基础知识-网络通信基础知识

本文介绍了分布式系统中网络通信的重要性,并详细对比了BIO、NIO及AIO三种网络IO模型的特点与工作原理。其中,BIO采用阻塞方式,每个连接需单独线程处理;NIO基于事件驱动,一个线程可处理多个Socket;而AIO则是异步IO,通知发生在动作之后。

在分布式系统,组件发布在网络的多个节点中。通过消息的传递来进行动作的协调;因此,网络通信在分布式系统中非常重要


 

1.2.3.1 OSI与TCP/IP网络模型

下图为OSI与TCP/IP网络模型的对应

 

 


 

1.2.3.2 网络IO的实现

实践中接触的比较多的网络模型。当我们用Socket进行网络通信开发时,常用的BIO,NIO,AIO

1.BIO(Blocking IO)

1.采用阻塞的方式 -> 一个Socket套接字需要使用一个线程来进行处理

2.发生建立连接,读数据,写数据的时候都可能阻塞

3.问题:一个线程只处理一个Socket,Server处理并发就需要多线程

 

 

2.NIO(NonBlocking IO)

1.基于事件驱动思想,采用Reactor(反应堆)模式

2.好处:server一个Thread处理多个Socket

3.原理:

   3.1 所有的Socket客户端连接到Reactor,由Reactor来分配到不同的线程中

   3.2 一个线程就可以处理多个socket 

 

3.AIO(Asynchronous IO)

1.AIO即异步IO

2.采用的也是Reactor(反应堆)模式

3.AIO和NIO的区别是(NIO通知发生在动作之前,AIO通知发生在动作之后)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值