架构师(2021年8月)

卷首语

作者|杨敏

在日常开发中,经常听到大家说一句话:“任何需求都可以通过增加一个间接的中间层来解决。”

分层设计是什么?将软件划分成若干层,每一层只解决一部分问题,通过所有层的协作来完成整体的目标。一个复杂的问题通过分解成一系统子问题,这样就有效降低了每个子问题的规模与复杂度。

分层设计带来的好处主要有亮点:一是降低了系统软件的复杂度,将一个复杂问题通过分解,分而治之;二是功能的复用和封装。

比如计算机语言的发展,它就是不断地抽象,只有通过抽象,将一个复杂的的系统变成一层层的接口集合,让我们每次只需要考虑关注当前层集合内的逻辑,而不用去考虑当前层次以上或者以下的复杂度,才有可能让我们从复杂系统中解放出来,逐步理解以及构造一个复杂系统。

比如Linux中的内核硬件层设计、MMU、CPU与IO外设通信设计处处体现了分层/中间层的设计思想。其中,MMU抽象层是我认为最经典、最本质、最受启发的中间抽象层的设计。通过在CPU与内存之间加入MMU抽象层,让CPU在运行指令时发出的VA虚拟地址通过MMU转换后变成PA物理地址,然后再去访问物理内存。

再比如TCP/IP网络协议堆栈,从最底层的物理链路层层层向上封装抽象,解决了复杂的网络通信的问题。还有Netty框架发展以及分层私有协议栈分析,微服务分层,应用框架Rails on Rack等等,这些案例都能够充分说明计算机系统本身就是通过一层一层抽象构造出来的。

硬件方面是从一个个小的晶体管,抽象成一个个门电路,再到CPU器件,最后抽象组成计算机。软件设计也是由一个层次一个层次的功能完善叠加的,无论是自顶向下还是自底向上。同样地,任何复杂的问题,通过分层最终总能够回归最本质。

延展阅读:关于软件分层设计的思考

目录

热点 | Hot
B 站崩了:事情不大,影响不小
CentOS 8 退役倒计时,开发者们又吵起来了

观点|Opinion
Kubernetes 7 周年:它为什么如此受欢迎?
PHP 没你想的那么差

推荐文章 | Article
从服务框架到服务网格,网易轻舟双引擎多模式服务治理演进实践
唯品会亿级数据服务平台落地实践

专题|Topic
透过数字化转型再谈数据中台(四):数据中台不是买来的,是干出来的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章