软考实践之分层架构思想的理论和应用实践

简介: 软考实践之分层架构思想的理论和应用实践

前言

分层架构遍布生活中的方方面面,无论是我们的计算机网络里面的七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,还是网络规划里面的接入层、汇聚层、核心层

计算机系统中的存储器通常采用分层的体系 (Memory Hierarchy) 结构:片上缓存、片外缓存、主存和外存

在小编从事过的工作中,大数据领域的数据治理也包含了分层思想,将数据分为接口层、整合层、中间层、汇总层和应用层。每一层占的维度和高度不一样,数据的展现形式也不一样。

分层思想是一种将复杂问题分解为多个层次,然后逐层解决的方法。这种方法通常用于在设计和开发复杂的系统时,将大型系统分解为多个较小的、更容易管理的子系统,然后逐层解决子系统的问题。

为什么说分层架构非常普遍而且基础呢?因为它比较符合思考问题和解决问题的过程。这体现了逐步解决问题的思维方式。分层次抽象的方式可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。

理论基础

在软件架构中,也包含一种架构叫分层架构的项目组织方式,最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口进行通信。分层架构通常明确约定软件一定要分成多少层。

最常见的分层结构是四层结构,包含表现层、业务层、持久层和数据层,它们的作用分别是:

  • 表现层 (Presentation Layer)
  • 用户界面,负责视觉和用户互动
  • 业务层 (Business Layer)
  • 实现业务逻辑
  • 持久层 (Persistence Layer)
  • 提供数据, SQL语句就放在这一层
  • 数据库 (Database Layer)
  • 保存数据

下面这幅图展示了常见的四层架构的关系

处于最顶层的是表现层,主要是前端交互部分;然后是业务层,应该就是根据业务需求将数据加工成前端需要格式的接口层,在Java中就是编写Controller接口或者Service到Controller这整个部分;再往下是持久层,这一层主要负责与数据库进行交互;最后一层就是数据库了,用于存储数据。

分层思想的理论思想有点像面向对象设计原则里面的单一职责原则,这里的单一职责就是指的某一层只负责自己做的事儿,明确自己的输入输出是什么,按照预定的格式进行编写即可。

层次式体系结构

分层式体系结构是一种最常见的架构设计方法,能有效地使设计简化,使设计的系统机构 清晰,便于提高复用能力和产品维护能力。

层次式体系结构设计是将系统组成一个层次结构,每一层为上层服务,并作为下层客户。

在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。

连接 件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。由于每一层最 多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件 重用提供了强大的支持。

软件层次式体系结构是最通用的架构,也被叫作N 层架构模式 (n-tier architecture pattern)。

这也是 Java EE (也称为J2EE) 应用经常采用的标准模式。

这种架构模式非常适合传统的IT 通 信和组织结构,很自然地成为大部分应用的第一架构选择。在分层次体系结构中的组件被划分 成几个层,每个层代表应用的一个功能,都有自己特定的角色和职能。

分层架构本身没有规定 要分成多少层,大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、数据 访问层(或称为持久层)和数据层。

分层架构的一个特性就是关注分离 (separation of concerns)。该层中的组件只负责本层的逻 辑,组件的划分很容易明确组件的角色和职责,也比较容易开发、测试、管理和维护。

缺陷和注意事项

层次式体系结构是一个可靠的通用的架构,对很多应用来说,如果不确定哪种架构适合, 可以用它作为一个初始架构。

但是,设计时要注意以下两点:

要注意的是污水池反模式

所谓污水池反模式 (architecture sinkhole anti-pattern), 就是请求流简单地穿过几个层,每 层里面基本没有做任何业务逻辑,或者做了很少的业务逻辑。

比如一些 Java EE例子,业务逻 辑层只是简单的调用了持久层的接口,本身没有什么业务逻辑。每一层或多或少都有可能遇到这样的场景,关键是分析这样的请求的百分比是多少。

二八 原则可以帮助你决定是否正在遇到污水池反模式。如果请求超过20%,则应该考虑让一些层变 成开放的。

需要考虑的是分层架构可能会让你的应用变得庞大

即使你的表现层和中间层可以独立发布,但它的确会带来一些潜在的问题,比如:分布模 式复杂、健壮性下降、可靠性和性能的不足,以及代码规模的膨胀等。

应用实践

在大数据开发工作中,我们常常需要对多源数据进行处理,这些多源数据具备来源不同、结构不同、性质不同的特点。这个时候我们应该如何进行处理呢?

首先,我们需要对整个数据的利用过程进行分层,这里暂时分为数据采集和存储层,数据清洗和归一化层,数据聚合使用层。对于数据采集和存储层来说,需要做的事儿便是从各个数据源获取到结构化或者非结构化的数据并存储起来;

然后就是数据清洗和归一化层,首先需要利用图像识别和音频识别等技术将非结构化数据转换成结构化数据,然后对这些结构化数据进行领域投影,进而归一化,并将归一化后的原始数据进行入库,入到数据仓库或者大数据平台。

在大数据平台中,我们采用接口层、整合层、中间层、汇总层和应用层的分层架构的思想,对数据进行逐层治理,接口层是存储的原始数据,整合层会对数据进行初步清理,与接口层的关系近乎是一对一的关系;中间层会按照同主属性进行初步聚合,然后汇总层会构建各种画像层面的内容。最终拿给应用层使用。

NoSql中的分层架构

NoSQL整体框架分为4层,由下至上分为数据持久层 (Data Persistence)数据分布层(Data Distribution Model)数据逻辑模型层 (Data Logical Model)接口层 (Interface), 层次之间相辅相成,协调工作。

数据持久层

定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、订制可插拔4种形式。基于内存形式的数据存取速度最快,但可能会造成数据丢失;

基于硬盘的数据存储可能保存很久,但存取速度慢于基于内存形式的数据;内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失;

订制可插拔则保证了数据存取具有较高的灵活性。

数据分布层

定义了数据是如何分布的,相对于关系型数据库, NoSQL可选的机制比较多,主要有3种形式:一是CAP支持,可用于水平扩展;二是多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行;三是动态部署支持,可以在运行着的集群中动态地添加或删除结点。

数据逻辑层

表述了数据的逻辑表现形式。

接口层

为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。接口层提供了5种选择:Rest、Thrift、Map/Reduce、Get/Put、 特定语言API, 使得应用程序和数据库的交互更加方便。

NoSQL 分层架构并不代表每个产品在每一层只有一种选择。相反,这种分层设计提供了很 大的灵活性和兼容性,每种数据库在不同层面可以支持多种特性。

MVC 分层体系结构

MVC(Model-View-Controller) 的概念在目前信息系统设计中非常流行,严格来讲, MVC 实际上是上述多层 C/S 结构的一种常用的标准化模式,或者可以说是从另一个角度去抽象这种 多层C/S结构。

在J2EE架构中, View 表示层指浏览器层,用 于图形化展示请求结果;Controller控制器指Web服 务器层, Model 模型层指应用逻辑实现及数据持久 化的部分。

目前流行的J2EE开发框架,如JSF、 Struts、Spring、Hibernate等及它们之间的组合,如 Struts+Spring+Hibernate(SSH) JSP+Spring+Hibernate 等都是面向 MVC架构的。另外, PHP、Perl、MFC等 语言都有MVC 的实现模式。

鸿蒙操作系统架构案例分析

鸿蒙操作系统 (HarmonyOS) 是华为公司研制的一款自主版权的操作系统,是一款“面向 未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。

在传 统的单设备系统能力的基础上, HarmonyOS提出了基于同一套系统能力、适配多种终端形态的 分布式理念,能够支持多种终端设备的能力。

鸿蒙 (HarmonyOS) 整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层

系统功能按照“系统”→“子系统”→“功能/模块”逐级展开,在 多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块

内核层

内核层主要由内核子系统和驱动子系统组成。

  • 内核子系统
  • HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的O S 内 核。
  • 内核抽象层 (Kernel Abstract Layer,KAL) 通过屏蔽多内核差异,对上层提供基础的内核 能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
  • 驱动子系统
  • HarmonyOS 驱动框架 (HDF) 是HarmonyOS硬件生态开放的基础,提供统一 外设访问能力和驱动开发、管理框架。

系统服务层

系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。

该层包含4 个部分:系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集和硬件服务 子系统集。

  • 系统基本能力子系统集
  • 由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、 公共基础库、多模输入、图形、安全、 A I等子系统组成。
  • 为分布式应用在 HarmonyOS多设备上的运行、调度、迁移等操 作提供了基础能力,
  • 方舟运行时提供了 C/C++/JS 多语言运行时和基础的系统类库,也为使用方舟编译器静态化的 Java程序(即应用程序或框架 层中使用 Java语言开发的部分)提供运行时。
  • 基础软件服务子系统集
  • 为HarmonyOS提供公共的、通用的软件服务,由事件通知、电 话、多媒体、 DFX、MSDP&DV 等子系统组成。
  • 增强软件服务子系统集
  • 为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服 务,由智慧屏专有业务、穿戴专有业务、 IoT专有业务等子系统组成。
  • 硬件服务子系统集
  • 为HarmonyOS 提供硬件服务,由位置服务、生物特征识别、穿戴专有 硬件服务、 loT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服 务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

框架层

框架层为HarmonyOS的应用程序提供了Java/C/C++/JS等多语言的用户程序框架和Ability 框架,以及各种软硬件服务对外开放的多语言框架API; 同时为采用HarmonyOS 的设备提供了 C/C++/JS 等多语言的框架API, 不同设备支持的 API与系统的组件化裁剪程度相关。

应用层

应用层包括系统应用和第三方非系统应用。

HarmonyOS 的应用由一个或多个 FA(Feature Ability) 或PA(Particle Ability) 组成。

其中, FA有 UI 界面,提供与用户交互的能力;而PA 无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

基于FA/PA开发的应用,能 够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

SDN 分层网络架构

软件定义网络 (Software Defined Network,SDN) 是由美国斯坦福大学CLean State课题 研究组提出的一种新型网络创新架构。

其核心思想是通过对网络设备的控制面与数据面进行分 离,控制面集中化管控,同时对外提供开放的可编程接口,为网络应用创新提供极佳的能力开 放平台;而数据面则通用化、轻量化,高效转发,以提升网络的整体运行效能。

具体来说, SDN利用分层的思想,将网络分为控制层和数据层

  • 控制层
  • 可编程控制器, 具有网络控制逻辑的中心
  • 掌握网络的全局信息,方便运营商或网络管理人员配置网络和部署 新协议等。
  • 数据层
  • 哑交换机(与传统的二层交换机不同,专指用于转发数据的设备)
  • 仅提 供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。

两层之间采 用开放的统一接口(如 OpenFlow等)进行交互。

通过此接口控制器向转发设备(如交换机等) 下发统一标准的转发规则,转发设备仅需按照这些规则执行相应动作即可。

相比传统网络设备, SDN技术能够更有效降低转发设备复杂度及卸载不必要的运行负载, 协助网络运营商更好地控制基础设施,降低整体运营成本,同时打破了传统网络设备的封闭性, 因此, SDN是极具前途的网络技术之一。


软考的科目

小编之前发过 计算机软考科目、时间、辅导书汇总

一年一度的双十一活动来临了,对于计算机人来说,除了买电子产品,买书也是一个值得关注的事儿。小编在今年也有好几本心心念念的书,比如李明哲的《网络空间安全体系》、知道创宇出的《网络空间测绘技术与实践》和最新版的《系统架构设计师教程第二版》等等

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
7月前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
420 62
|
7月前
|
存储 运维 分布式计算
零售数据湖的进化之路:滔搏从Lambda架构到阿里云Flink+Paimon统一架构的实战实践
在数字化浪潮席卷全球的今天,传统零售企业面临着前所未有的技术挑战和转型压力。本文整理自 Flink Forward Asia 2025 城市巡回上海站,滔搏技术负责人分享了滔搏从传统 Lambda 架构向阿里云实时计算 Flink 版+Paimon 统一架构转型的完整实战历程。这不仅是一次技术架构的重大升级,更是中国零售企业拥抱实时数据湖仓一体化的典型案例。
526 0
|
8月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
7月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
7月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
598 6
|
8月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
8月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
7月前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
359 0
|
边缘计算 Kubernetes 物联网
Kubernetes 赋能边缘计算:架构解析、挑战突破与实践方案
在物联网和工业互联网快速发展的背景下,边缘计算凭借就近处理数据的优势,成为解决云计算延迟高、带宽成本高的关键技术。而 Kubernetes 凭借统一管理、容器化适配和强大生态扩展性,正逐步成为边缘计算的核心编排平台。本文系统解析 Kubernetes 适配边缘环境的架构分层、核心挑战与新兴解决方案,为企业落地边缘项目提供实践参考。
720 0