软件架构分层方法论(上)

简介: 软件架构分层方法论

一般初创软件,为快速上线,几乎不考虑分层。但随业务越发复杂,就会导致逻辑复杂、模块相互依赖、代码扩展性差等各种问题。


架构分层迫在眉睫。


1 什么是架构分层?


软件工程中常见的设计方式,将整体系统拆分成N个层次,每个层次有独立的职责,多个层次协同提供完整的功能。

初学 JavaWeb 时一般要求设计成 MVC 架构。另外一种常见的分层方式是将整体架构分为



  • 表现层(Web)
    展示数据结果和接受用户指令的,是最靠近用户的一层;
  • 逻辑层(Service)
    复杂业务的具体实现;
  • 数据访问层(Dao)
    主要处理和存储之间的交互。


这就可以隔离关注点,让不同的层专注做不同的事情。其它分层案例,比如OSI网络七层模型,TCP/IP协议网络四层模型。



2 分层有什么好处?

简化设计


各司专职,而不必将自己活成全才。



高复用

比如在设计某系统时,发现某层具有通用性,就可把它抽取独立出来,在设计其它系统时使用。



横向扩展


可以让我们更容易做横向扩展。如果系统没有分层,当流量增加时我们需要针对整体系统来做扩展。但是,如果我们按照上面提到的三层架构将系统分层后,就可以针对具体的问题来做细致的扩展。


比如业务逻辑里面包含有比较复杂的计算,导致CPU成为性能的瓶颈,那这样就可以把逻辑层单独抽取出来独立部署,然后只对逻辑层来做扩展,这相比于针对整体系统扩展所付出的代价就要小的多了。


架构分层究竟和高并发设计的关系是怎样的?我们知道横向扩展是高并发设计思想之一,既然架构分层可方便横向扩展, 那么高并发系统一定是分层的。


目录
相关文章
|
17天前
|
人工智能 前端开发 JavaScript
前端架构思考 :专注于多框架的并存可能并不是唯一的方向 — 探讨大模型时代前端的分层式微前端架构
随着前端技术的发展,微前端架构成为应对复杂大型应用的流行方案,允许多个团队使用不同技术栈并将其模块化集成。然而,这种设计在高交互性需求的应用中存在局限,如音视频处理、AI集成等。本文探讨了传统微前端架构的不足,并提出了一种新的分层式微前端架构,通过展示层与业务层的分离及基于功能的横向拆分,以更好地适应现代前端需求。
|
1月前
|
JSON 前端开发 Java
Spring Boot框架中的响应与分层解耦架构
在Spring Boot框架中,响应与分层解耦架构是两个核心概念,它们共同促进了应用程序的高效性、可维护性和可扩展性。
46 3
|
1月前
|
存储 前端开发 API
DDD领域驱动设计实战-分层架构
DDD分层架构通过明确各层职责及交互规则,有效降低了层间依赖。其基本原则是每层仅与下方层耦合,分为严格和松散两种形式。架构演进包括传统四层架构与改良版四层架构,后者采用依赖反转设计原则优化基础设施层位置。各层职责分明:用户接口层处理显示与请求;应用层负责服务编排与组合;领域层实现业务逻辑;基础层提供技术基础服务。通过合理设计聚合与依赖关系,DDD支持微服务架构灵活演进,提升系统适应性和可维护性。
|
3月前
|
存储 消息中间件 JSON
|
4月前
业务系统架构实践问题之进行领域设计的方法论步骤问题如何解决
业务系统架构实践问题之进行领域设计的方法论步骤问题如何解决
|
4月前
|
运维 Java Docker
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
|
4月前
|
存储 搜索推荐 API
业务系统架构实践问题之分层架构中的四层定位是什么
业务系统架构实践问题之分层架构中的四层定位是什么
114 0
|
4月前
|
缓存 项目管理
项目管理定义问题之DDD架构的分层架构中基础层作用是什么
项目管理定义问题之DDD架构的分层架构中基础层作用是什么
|
4月前
|
存储 消息中间件 Kafka
细说数据仓库分层架构
【7月更文挑战第20天】数据仓库分层架构包括缓冲层、操作数据层、明细数据层、汇总数据层和数据集市层。
|
4月前
|
前端开发 Java 关系型数据库
「架构」分层架构
**分层架构**是软件设计的关键模式,它将应用划分为独立层,如表示层、业务逻辑层和数据访问层,强调**单一职责**和**松耦合**。优点包括**代码组织**、**技术多样性**、**团队协作**和**可扩展性**,但可能带来**性能影响**和**设计复杂性**。通过定义清晰接口和合理划分层次来管理。常用技术栈涉及Web前端、后端框架、数据库、ORM和通信协议等。
78 0
下一篇
无影云桌面