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

打印 上一主题 下一主题

主题 870|帖子 870|积分 2610

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

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

一、什么是分层设计?

1.1 分层设计的定义

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


  • Model:负责业务逻辑和数据存储。
  • View:用于展示数据和接收用户交互。
  • Controller:毗连用户请求与业务逻辑。
图1:MVC架构示意图

1.2 三层架构

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

  • 体现层:展示数据并与用户交互。
  • 逻辑层:负责业务逻辑的处理。
  • 数据访问层:与数据库交互。
图2:三层架构示意图


二、分层架构的典范案例

2.1 OSI 网络模型

OSI 模型将网络通讯分为七层,从底层的 物理层 到顶层的 应用层,每层实现特定功能,层与层之间通过接口交互。
图3:OSI 网络模型

2.2 Linux 文件系统

Linux 文件系统分层结构清晰:最上层的 VFS(捏造文件系统) 提供同一接口,对下层 Ext3/Ext4 文件系统通用块装备层 屏蔽细节,简化了扩展和维护。
图4:Linux 文件系统分层示意图


三、分层架构的优势

3.1 简化设计与开发

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

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

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

四、如何设计分层架构?

4.1 明白层次界限

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

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


  • 体现层:调用逻辑层的 GetUser 方法。
  • 逻辑层:处理用户数据,调用 数据访问层 与数据库交互。
当新增需求要求用户不存在时自动创建用户,而 HTML5 页面不须要这一逻辑,体现层的职责开始变得杂乱。
图5:复杂业务导致界限暗昧

4.2 更细致的分层

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


  • 终端显示层:处理页面渲染。
  • 开放接口层:提供 API,并举行安全与流量控制。
  • Web 层:处理请求路由和简单逻辑。
  • Service 层:编排业务逻辑。
  • Manager 层:封装通用业务逻辑和中间件调用。
  • DAO 层:负责数据存储和访问。
图6:阿里分层架构示意图


五、分层架构的不足

5.1 增加复杂度

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

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表