高并发学习笔记--架构分层

高并发学习笔记系列

高并发学习笔记--通用设计方法

高并发学习笔记--架构分层


 

 

什么是分层架构?

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

我们在刚刚成为程序员的时候,会被“教育”说系统的设计要是“MVC”(Model-View-Controller)架构。它将整体的系统分成了 Model(模型),View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。

高并发学习笔记--架构分层

另外一种常见的分层方式是将整体架构分为表现层、逻辑层和数据访问层:

  • 表现层,顾名思义嘛,就是展示数据结果和接受用户指令的,是最靠近用户的一层;
  • 逻辑层里面有复杂业务的具体实现;
  • 数据访问层则是主要处理和存储之间的交互。

这是在架构上最简单的一种分层方式。其实,我们在不经意间已经按照三层架构来做系统分层设计了,比如在构建项目的时候,我们通常会建立三个目录:Web、Service 和 Dao,它们分别对应了表现层、逻辑层还有数据访问层。

高并发学习笔记--架构分层

架构分层的好处

随着业务越来越复杂,大量的代码纠缠在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。

分层的设计可以简化系统设计,让不同的人专注做某一层次的事情。

一般的项目分工是比较明确的,前端工程师负责前端页面的搭建,后端工程师负责业务逻辑的代码编写。运维及DBA提供数据库方面支持。如果项目部分层的话,前端逻辑、后台逻辑、数据库操作都在一层甚至一个文件内。那样势必会造成各种代码冲突和混乱不堪。

分层之后可以提高复用

比如,我们有多个不同的地方使用到了同样的逻辑或者数据,虽然View是分开的,但是他们可以调用同一个Service中的逻辑代码。这样一来即使再多页面引用,只要业务逻辑相同,就不必重复操作。

分层架构可以让系统更容易横向扩展

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

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