论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
为什么复杂的架构一定要做分层设计?
为什么复杂的架构一定要做分层设计?
怀念夏天
金牌会员
|
2025-1-12 02:18:14
|
显示全部楼层
|
阅读模式
楼主
主题
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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
怀念夏天
金牌会员
这个人很懒什么都没写!
楼主热帖
CVE-2017-12635 Couchdb 垂直权限绕过 ...
Redis 原理 - Set
IOS手机Charles抓包
WEB安全基础入门—操作系统命令注入(s ...
恭喜,成功入坑 GitHub 。。。 ...
数据库(Oracle 11g)使用expdp每周进 ...
【牛客】8 企业真题
程序员不撰写代码注释和文档的十大理由 ...
HarmonyOS实战—影视类卡片应用 ...
KubeSphere3.3 私有云部署,在linux上 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表