前言
分布式架构的特点是: 服务的分布性(分布在不同的计算机节点)、以及远程通信实现数据的交换。那么就意味着,原本在一个war包下的:用户、订单、商品、库存等业务模块,按照业务纬度拆分成用户服务、订单服务、商品服务、库存服务等独立的进程,部署在不同的计算机节点上。
而拆分之后的服务,必然会涉及到远程通信的需求,比如用户服务,需要查询订单列表,则会调用订单服务的远程接口,获得订单信息。在这个过程中,会涉及到远程通信,所以远程通信的技术是整个分布式架构的一个基础,如果没有远程通信,那么分布式架构也就不存在了。
所以这一周的两次课,会先去了解底层通信的细节,加深大家对于通信这一块的了解。
本文重点:
- select /poll / epoll的区别
- 什么是BIO和NIO
一、网络分层
业内普遍的分层方式有两种。OSI七层模型 和TCP/IP四层模型。
OSI七层模型:物、数、网、传、会、表、应
TCP/IP四层模型:链、网、传、应
1.1 OSI七层模型
模型过于理想化,未能在因特网上进行广泛推广。
- 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
- 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
- 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
- 会话层:通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
- 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
- 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
1.2 TCP/IP 四层模型
事实上的国际标准。
其中链路层有的地方也叫网络接口层。
1.3 TCP/IP模型对于的协议
二、TCP传输的可靠性
- 三次握手
- 流量控制
- 断开机制
![三次握手](https://i-blog.csdnimg.cn/blog_migrate/603d23cf0de68fdd0d907332595c3295.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7a0f19131c465a90f12fa182d37e6170.png)
三次握手和四次挥手详解:https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
三、相关流程图
socket提供tcp、udp等协议。
短链接:每次连接的建立都需要三次握手。
长连接一直是存活的
socket通信流程图:
tcp请求不同的层的数据变化:
四、阻塞和非阻塞
相关内容其实在我另一篇博客有讲解:https://blog.csdn.net/moneywenxue/article/details/113621321
这里贴一下该博客没有讲到的点。
简单过程:不一定准确,后续深入理解再修改
- 每个client都有对应的SocketChannel
- 它会在selector上注册
- SocketChannel会产生对应的缓存区
- selector会通过select机制,轮询selector中的就绪channel
多路复用:
多路——多个SocketChannel
复用——一个线程监控所有SocketChannel
select/poll——轮询去查哪个buffer就绪,返回给客户端。
epoll——事件机制,哪个buffer准备好了,推送给selector。
epoll也叫伪异步。
select/poll和epoll的区别:https://blog.csdn.net/nanxiaotao/article/details/90612404
五、零拷贝
不是重点,下次再研究