在服务中使用分层实现

本文涉及的产品
函数计算FC,每月15万CU 3个月
可观测监控 Prometheus 版,每月50GB免费额度
性能测试 PTS,5000VUM额度
简介: 【6月更文挑战第24天】 分层架构是企业应用的常见设计,通常包括表示层、业务层、持久层和数据层。分层模式适用于多数情况,但在某些场景下,如微服务架构,可能需要更灵活的方式。

0 简介:分层模式

分层架构被广泛应用于企业应用软件架构设计,这种架构强调逻辑层的独立性,促进关注点分离,简化测试和开发。TCP/IP协议,互联网的核心,也采用分层模型。然而,层间依赖可能导致程序脆弱性和通信效率降低。

大多数分层架构将由四个封闭层组成:

表示层
业务层
持久层
数据层

分层架构将应用系统正交地划分为若干层,每一层只解决问题的一部分,通过各层的协作提供整体解决方案。

Toroid托瑞德符号.png

1 逻辑上的独立:非严格分层

分层体系结构模式(也称为 N 层体系结构模式)是大多数(特别是Java) 企业应用程序使用的标准体系结构。分层体系结构样式将组件(或应用程序)划分为水平的逻辑层。

每一层在系统中都有不同的角色。一层可能负责处理业务逻辑,而另一层负责处理表示逻辑。这演示了一个称为关注点分离 (SoC) 的概念。

层的组件将只处理该层内的逻辑。像这样分离层也使测试和开发软件更容易,因为模式本身并不太复杂。
缺点是这不是最有效的模式,并且可能难以扩展。

有时,业务层和持久性层会组合成一个层,特别是当持久性逻辑(例如 SQL)包含在业务层的组件中时。

较小的应用程序可以只有三层,更复杂的应用程序可以包含五层或更多层。

闭合层要求请求通过目标层之前的层。例如,如果您尝试向数据库发送请求,则该请求必须首先通过表示层,业务层和持久层。

有时,每一个请求都遍历每一层是没有实际意义的。
对于此类情况,可以让某些请求跳过一些层次直接到达下层。

image.png

2 分层的典型:internet

internet的核心架构就是分层,TCP/IP(Transmission Control Protocol /Internet Protocol)作为Internet的核心协议被广泛应用于局域网和广域网中,TCP/IP的主要特性为逻辑编址、路由选择、域名解析、错误检测和流量控制以及对应用程序的支持等。

TCP/IP协议族主要包括因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、虚拟终端协议(TELNET)、文件传输协议(FTP)、电子邮件传输协议(SMTP)、网上新闻传输协议(NNTP)和超文本传送协议(HTTP)等。

TCP/IP网络协议模型共分为网络接口层、网际层、传输层和应用层4层。

对于网络访问层,在参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。

传输层使源端和目的端机器上的对等实体可以进行会话。这一层定义了两个端到端的协议:传输控制协议(TCP)和用户数据报协议(UDP)。

而现行的互联网架构实际上就是分为四层网络架构,对应的ISO网络的架构则是分为了七层如下:

image.png

3 小结

分层架构的弱点主要表现在两个方面:

(1)层间的脆弱性。

一旦某个底层发生错误,那么整个程序将会无法正常运行,
如产生一些数据溢出,空指针、空对象的安全性问题,也有可能会得出错误的结果。

(2)层间通信的脆弱性。

将系统隔离为多个相对独立的层,这就要求在层与层之间引入通信机制,

在使用面向对象方法设计的系统中,通常会存在大量细粒度的对象。

以及它们只见大量的消息交互——对象成员方法的调用。本来“直来直去”的操作现在要层层传递,势必造成性能下降。

对于大多数程序,分层模式是很好的通用模式,尤其是当您不确定哪种结构模式时。

需要注意的是,层和层都是指软件系统的功能划分,但是层是指与其他功能分开的基础结构运行的软件。
因此,如果所有层都在同一设备运行,则有多个层的应用程序只能有一个层。

目录
相关文章
|
前端开发 Java Spring
架构设计的分层架构
架构设计的分层架构
|
25天前
|
数据库
分层架构
表现层(Presentation Layer):处理用户界面和用户交互逻辑。 业务逻辑层(Business Logic Layer):处理业务相关的逻辑和规则。 数据访问层(Data Access Layer):负责与数据库或其他数据源进行 [Something went wrong, please try again later.]。
|
6月前
|
Java 持续交付 数据库
避免服务分层污水池反模式
【6月更文挑战第30天】本文介绍污水池反模式,分层架构在敏捷性、部署性和性能方面得分较低,但具有高测试性和易开发性。关键在于合理分层以降低耦合和提高解耦效果。
284 1
避免服务分层污水池反模式
|
5月前
|
前端开发 Java 关系型数据库
「架构」分层架构
**分层架构**是软件设计的关键模式,它将应用划分为独立层,如表示层、业务逻辑层和数据访问层,强调**单一职责**和**松耦合**。优点包括**代码组织**、**技术多样性**、**团队协作**和**可扩展性**,但可能带来**性能影响**和**设计复杂性**。通过定义清晰接口和合理划分层次来管理。常用技术栈涉及Web前端、后端框架、数据库、ORM和通信协议等。
109 0
|
5月前
|
缓存 前端开发 安全
DDD中的分层架构
领域驱动设计(DDD)的分层架构演进为依赖倒置的四层模型,强调关注点分离。表现层(UI)展示信息并处理用户指令,应用程序层负责用例编排,与领域层交互但不含业务逻辑。领域层承载核心业务逻辑,包含领域模型和服务,确保业务正确性。基础设施层提供技术支撑,如数据库和缓存,服务于其他层。各层解耦,实现灵活的系统架构。
109 0
|
7月前
|
消息中间件 前端开发 测试技术
DDD - 分层架构:有效降低层与层之间的依赖
DDD - 分层架构:有效降低层与层之间的依赖
402 0
|
7月前
|
存储 分布式计算 数据挖掘
数仓分层架构
数仓分层架构
295 0
|
消息中间件 缓存 前端开发
新项目,不妨采用这种架构分层,很优雅!
新项目,不妨采用这种架构分层,很优雅!
244 0
|
存储 缓存 前端开发
漫谈分层架构:为什么要进行架构分层?
为什么要分层 高内聚:分层的设计可以简化系统设计,让不同的层专注做某一模块的事 低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节 复用:分层之后可以做到很高的复用 扩展性:分层架构可以让我们更容易做横向扩展 如果系统没有分层,当业务规模增加或流量增大时我们只能针对整体系统来做扩展。分层之后可以很方便的把一些模块抽离出来,独立成一个系统。
|
缓存 Oracle 安全
优秀的代码都是这样分层的?
优秀的代码都是这样分层的?
163 0
优秀的代码都是这样分层的?