怀念夏天 发表于 7 天前

为什么复杂的架构一定要做分层设计?

为什么复杂的架构一定要做分层设计?

软件架构中的分层设计,是一种经典的设计模式。通过将系统分别为多个独立职责的层次,分层设计能够更好地实现模块化、简化开发、提拔复用性和可维护性。本文将从基本概念、分层架构的好处、实践要点及其不足展开讨论,资助你全面理解分层设计的重要性。
一、什么是分层设计?

1.1 分层设计的定义

分层设计是将系统拆分为多个层级,各层负责不同的职责。最经典的例子莫过于 MVC(Model-View-Controller)架构:


[*]Model:负责业务逻辑和数据存储。
[*]View:用于展示数据和接收用户交互。
[*]Controller:毗连用户请求与业务逻辑。
图1:MVC架构示意图
https://i-blog.csdnimg.cn/direct/71634b2059e841e890dc35f108bad948.png
1.2 三层架构

另一种常见的分层方式是“三层架构”:

[*]体现层:展示数据并与用户交互。
[*]逻辑层:负责业务逻辑的处理。
[*]数据访问层:与数据库交互。
图2:三层架构示意图
https://i-blog.csdnimg.cn/direct/0fecffedd4f447ebaac0dc0074704ade.png
二、分层架构的典范案例

2.1 OSI 网络模型

OSI 模型将网络通讯分为七层,从底层的 物理层 到顶层的 应用层,每层实现特定功能,层与层之间通过接口交互。
图3:OSI 网络模型
https://i-blog.csdnimg.cn/direct/ff1f58b31555453ba96f55d2a2d85cec.png
2.2 Linux 文件系统

Linux 文件系统分层结构清晰:最上层的 VFS(捏造文件系统) 提供同一接口,对下层 Ext3/Ext4 文件系统 和 通用块装备层 屏蔽细节,简化了扩展和维护。
图4:Linux 文件系统分层示意图
https://i-blog.csdnimg.cn/direct/6970f268ed134fc79586d1b35630d538.png
三、分层架构的优势

3.1 简化设计与开发

通过分层,开发者可以专注于某一层的实现,无需关心其他层的细节。比方,在网络程序开发中,应用层的开发者只需专注于业务逻辑,而无需相识底层的传输协议。
3.2 提高复用性

通用的逻辑可以抽取为独立模块,在不同系统间复用。比方,将付出服务独立为一个模块后,多个系统可以共享利用。
3.3 支持高并发的扩展

分层架构让横向扩展更加灵活。比方,当逻辑层成为性能瓶颈时,可以单独扩展逻辑层,而无需对整个系统举行扩容。
四、如何设计分层架构?

4.1 明白层次界限

分层的关键在于理清每一层的职责界限。业务简单时,界限清晰;但随着需求复杂化,界限容易变暗昧。
示例问题

假设有一个用户系统,原始逻辑如下:


[*]体现层:调用逻辑层的 GetUser 方法。
[*]逻辑层:处理用户数据,调用 数据访问层 与数据库交互。
当新增需求要求用户不存在时自动创建用户,而 HTML5 页面不须要这一逻辑,体现层的职责开始变得杂乱。
图5:复杂业务导致界限暗昧
https://i-blog.csdnimg.cn/direct/5a20c4c1621e449badafa08d6c8d4ebb.png
4.2 更细致的分层

为了办理界限暗昧的问题,可以参考 阿里巴巴 Java 开发手册 中的分层设计,将传统三层架构细化为以下六层:


[*]终端显示层:处理页面渲染。
[*]开放接口层:提供 API,并举行安全与流量控制。
[*]Web 层:处理请求路由和简单逻辑。
[*]Service 层:编排业务逻辑。
[*]Manager 层:封装通用业务逻辑和中间件调用。
[*]DAO 层:负责数据存储和访问。
图6:阿里分层架构示意图
https://i-blog.csdnimg.cn/direct/42534b5a4cea465d9c094fe0ecf29309.png
五、分层架构的不足

5.1 增加复杂度

分层增加了系统的代码量和开发本钱。比方,一个简单的需求可能须要在多层实现,调试和维护也变得更加困难。
5.2 性能损耗

如果层与层之间通过网络交互,会产生“多一跳”性能损耗。但这种性能损失在现代硬件和优化手段的支持下通常可以接受。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 为什么复杂的架构一定要做分层设计?