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

mac2022-06-30  19

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


 

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通知发生在动作之后)

 

 

最新回复(0)