为什么会有需要分层的环境
传统的早期单体架构有如下几种缺点
1、难以分布式部署和扩容
2、一个组件的缺陷导致整个进程崩溃
3、系统升级、Bug修复、故障排查存在风险
4、业务范围扩展后,难以复用原有服务,可能需要重新开发
针对3、4点,而有了分层存在的环境
分层本质是什么
分层的本质是对功能的切分和封装
网络通信需要解决的问题有:
1、比特纠错
2、路由选择
3、拥塞控制
4、比特流传输
5、字节流传输
6、物理寻址
7、逻辑寻址
8、丢包问题
9、等等
这些问题有很多种解法
TCP/IP 四层体系架构的分层逻辑:
1、连接网线两端的机子:数据链路层
2、连接两台需要通信的机子:网络层
3、连接两个需要通信的进程:传输层
4、使得两个进程互相听得懂:应用层
上面的这个解释,显得非常的简单粗暴
但是这个解释,为需要解决的问题,提供了一个承载的平台
所有功能放在这个思考框架上,就能很快找到合适的承载层次
同样的,我们分析一下
OSI七层模型的分层逻辑:
1、网线两端机子物理通信可靠:物理层
2、网线两端机子逻辑通信可靠:数据链路层
3、连接两台需要通信的机子:网络层
4、连接两个需要通信的进程:传输层
5、两个进程有节奏的通信:会话层
6、约定一种通用语言,消除歧义:表示层
7、提供明确特定的服务(如电子邮件服务):应用层
可以看到:
TCP/IP 中的数据链路层等同于 OSI中的物理层+数据链路层
明显TCP/IP中的划分不太合理,物理层和数据链路层中的逻辑区分很明显
OSI中的会话层虽然在我们最终的通用五层模型中不出现
只是因为它的内容太少了,不足以划分一层,所以并入了应用层
但是提供的功能还在,例如HTTP中的三次握手和四次挥手
怎么来对一个系统进行分层
按照上面的逻辑,可以按照如下步骤分层系统
1、将系统分为不同的使用场景和层次
2、对每个场景中的逻辑进行区分,将明显不同逻辑部分的分层
3、将过于细小的分层合并
网络传输划分尝试
第一次划分:不同应用通信→进程通信→主机通信→相邻主机通信
第二次划分:不同应用通信→进程通信→主机通信→相邻主机通信→物理硬件传输比特
第三次划分:干啥→意图传达→协同→进程通信→主机通信→相邻主机通信→物理硬件传输比特
第四次划分:干啥→进程通信→主机通信→相邻主机通信→物理硬件传输比特