在分布式系统,组件发布在网络的多个节点中。通过消息的传递来进行动作的协调;因此,网络通信在分布式系统中非常重要
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通知发生在动作之后)