首页 > 其他分享 >我敢打赌,这个架构你一定知道!

我敢打赌,这个架构你一定知道!

时间:2023-11-10 18:32:52浏览次数:22  
标签:架构 请求 项目 业务 分层 我敢 打赌 比如

大家好,我是鱼皮。开发后端项目时,我们最常见的一种架构模式就是 分层架构

所谓的分层架构,就是把系统自上而下分为多个不同的层,每一层都有特定的功能和职责,且只和自己的直接上层与直接下层 “打交道”。

分层架构的优点是:每一层都有明确定义的职责,易于理解和维护;而且各层可以独立扩展,以适应不同的需求。

所以分层架构也是最适合新手入门学习、并且实际开发中应用最多的架构。

分层架构

下面给大家一种 Java 企业级后端项目开发时常用的分层架构,一般从前端界面(表示层)发送的请求出发,需要经历接入层、控制层、业务逻辑层、通用业务层、数据访问层、系统资源层等。

表示层 通常是指让用户交互和查看信息的前端界面,比如用户点击按钮后能够发送一个请求,也可以叫用户层、界面层等。

发送请求后,会经过 接入层 ,比如 Nginx 网关、或者其他中间件,对请求做一个预处理或转发,比如实现负载均衡。这一层不是必须存在的,通常更适用于中大型项目,前端也可以直接请求后端。

接入层会将请求转发到 控制层(Controller),负责接受请求、调用业务逻辑层(Service)的代码实现功能、然后响应结果。控制层一般不建议写复杂的业务逻辑,尽量保持精简。

接下来是 业务逻辑层(Service),负责处理复杂的业务逻辑,比如对请求数据进行校验、处理、调用数据访问层以将结果存到数据库中等,也是我们做系统时主要开发编码的部分。

通用业务层(Manager、Module)是一种特殊的业务逻辑层,主要的作用是抽取了一些需要被多个业务调用的公共代码,比如上传文件到对象存储、鉴权等,从而实现复用。

数据访问层(Dao / Mapper)负责操作底层的数据源,比如对数据库、文件、缓存等进行增删改查。

最后是 系统资源层 ,也可以叫基础设施层,包括各种基础服务、系统环境等,比如数据库、消息队列、Redis、文件存储、Linux 系统、Docker 等。复杂的基础设施可能还包括 K8S 容器资源编排、资源调度平台等。


需要注意的是,并不是所有的分层架构都需要这么划分,不同业务和团队可能有自己的分层选择与规范。

比如我带大家开发的 OJ 在线判题系统 ,分层架构如下:

我敢打赌,这个架构你一定知道!_网页

示例项目结构

基于分层架构,我们可以将项目按照特定的目录名(包名)来组织代码,比如:

  • controller:控制层
  • service:业务逻辑层
  • mapper:数据访问层
  • model:数据模型

还可以按照业务或文件的类型来划分目录,比如:

  • constant:常量
  • annotation:注解类
  • common:公共类
  • config:配置类
  • job:任务
  • exception:异常处理相关
  • utils:工具类

以之前带大家做过的 寻爱网项目 为例,项目的目录结构如图:

我敢打赌,这个架构你一定知道!_计算机_02

其他知识

1)计算机网络也是采用了经典的分层架构,OSI 七层参考模型中,把计算机网络自底向上分为了物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每个层只处理特定的功能,比如数据传输、数据的路由;层与层之间通过接口(或者叫协议)进行通信。

2)需要注意的是,我们常用的后端开发框架 Spring MVC 是基于 MVC(Model-View-Controller)设计模式构建的,而不能算是传统的分层架构。而且一般现在的项目中只使用 Spring MVC 作为整个项目的控制层,不过大多数用了 Spring MVC 框架的项目基本都使用了分层架构。

实践

想了解更多常见的后端架构设计,推荐阅读这篇文章:架构设计,让网站支棱起来!

编程导航星球的所有后端项目基本都使用了经典分层架构,随便实践一个项目都能学会这种架构方式。

标签:架构,请求,项目,业务,分层,我敢,打赌,比如
From: https://blog.51cto.com/u_15016006/8306298

相关文章

  • 如何理解服务器架构
    服务器架构指的是服务器系统中不同组件和层级的布局、设计和互连方式。它包括硬件、软件和网络结构,确保服务器能够高效、可靠地运行,并适应不同类型的工作负载。1.硬件层面:在服务器架构中,硬件涉及到物理设备,包括处理器、存储、内存、网络接口、主板等。服务器硬件架构需要优化,以适......
  • 【虹科干货】Lambda数据架构和Kappa数据架构——构建现代数据架构
    如何更好地构建我们的数据处理架构,如何对IT系统中的遗留问题进行现代化改造并将其转变为现代数据架构?该怎么为你的需求匹配最适合的架构设计呢,本文将分析两种最流行的基于速度的数据架构,为你提供一些思路。文章速览:什么是数据架构?基于速度的数据架构结语 一、什么是数据......
  • 技术体系结构——架构&框架
    一、总体技术体系单一架构一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫allinone。单一架构,项目主要应用技术框架为:Spring、SpringMVC、Mybatis分布式架构一个项目(对应IDEA中的一个project),拆分成很多个模块,每个模块是一个IDEA中的一个module。每一个工......
  • 【Qt初入江湖】Qt QSqlTableModel 底层架构、原理详细描述
    鱼弦:内容合伙人、新星导师、全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) QtQSqlTableModel是Qt中用于实现基于数据库表格的模型类,它继承自QAbstractTableModel。QSqlTableModel封装了对......
  • 雷电模拟器改arm架构教程,具体如何实现出来?详细
    模拟器,比如雷电模拟器(LDPlayer),通常是在PC上模拟Android操作系统环境,使得用户可以在PC上运行Android应用。雷电模拟器本身就是设计来模拟ARM架构的,因为大部分Android应用都是为ARM架构编译的。然而,由于大多数PC使用的是x86架构的CPU,模拟器需要通过某种方式来翻译或模拟ARM指令集以......
  • 架构中的“大象”
    西方有句谚语叫做:"anelephantintheroom"。用以指代那些显而易见又容易被忽视的东西。这些东西是什么呢?"anelephant":我们可以解释为那些重要的,困难的或者棘手的。这里我们要讨论的则是架构中的"大象":业务价值。通常我们做架构评估的时候,一般会对关联系统的性能,容错弹性,业......
  • 【Qt初入江湖】Qt QSqlRelationalTableModel 底层架构、原理详细描述
    鱼弦:内容合伙人、新星导师、全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) QtQSqlRelationalTableModel是Qt中用于实现具有关联表格的模型类,它继承自QSqlTableModel。QSqlRelationalTable......
  • 微服务架构:软件开发的革命还是短暂潮流?
    引言从今天开始,我们将深入探讨服务网格(ServiceMesh)这个领域的知识。尽管在我们的工作中可能还没有广泛应用,但服务网格确实是一种趋势。如果你还没有听说过这个概念,我希望你能够跟随我的步伐,一起了解这个特殊而重要的技术。首先,我将为大家介绍微服务的发展历程,从过去到现在,逐渐引......
  • MySQL 学习笔记--架构
    1、MySQL服务器逻辑架构图:第一层:该服务并不是MySQL所独有的,大多数基于网络的客户端/服务器的工具或者服务都有的类似的架构。比如连接处理、授权认证、安全等等。第二层:MySQL的核心服务功能,包括查询解析、分析、优化、缓存以及所有的内置函数(日期、时间、加密),所有跨存引擎的功能都......
  • Docker引擎架构
    Docker引擎架构1.Docker引擎的发展1.1Docker引擎首次发布时Docker首次发布时,Docker引擎由两个核心组件组成:LXC和DockerdaemonDockerdaemon是单一的二进制文件,包含诸如Docker客户端、DockerAPI、容器运行时、镜像构建等。LXC提供对诸如命名空间(Namespace)和控制组(CGroup)......