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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 软考实践之分层架构思想的理论和应用实践

前言

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

计算机系统中的存储器通常采用分层的体系 (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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
1月前
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
75 3
|
20天前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
167 69
|
1月前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
195 76
|
2月前
|
资源调度 前端开发 算法
鸿蒙OS架构设计探秘:从分层设计到多端部署
本文深入探讨了鸿蒙OS的架构设计,从独特的“1+8+N”分层架构到模块化设计,再到智慧分发和多端部署能力。分层架构让系统更灵活,模块化设计通过Ability机制实现跨设备一致性,智慧分发优化资源调度,多端部署提升开发效率。作者结合实际代码示例,分享了开发中的实践经验,并指出生态建设是未来的关键挑战。作为国产操作系统的代表,鸿蒙的发展值得每一位开发者关注与支持。
|
1月前
|
人工智能 JavaScript 开发工具
MCP详解:背景、架构与应用
模型上下文协议(MCP)是由Anthropic提出的开源标准,旨在解决大语言模型与外部数据源和工具集成的难题。作为AI领域的“USB-C接口”,MCP通过标准化、双向通信通道连接模型与外部服务,支持资源访问、工具调用及提示模板交互。其架构基于客户端-服务器模型,提供Python、TypeScript等多语言SDK,方便开发者快速构建服务。MCP已广泛应用于文件系统、数据库、网页浏览等领域,并被阿里云百炼平台引入,助力快速搭建智能助手。未来,MCP有望成为连接大模型与现实世界的通用标准,推动AI生态繁荣发展。
1129 65
|
24天前
|
存储 人工智能 开发框架
MCP 实践:基于 MCP 架构实现知识库答疑系统
文章探讨了AI Agent的发展趋势,并通过一个实际案例展示了如何基于MCP(Model Context Protocol)开发一个支持私有知识库的问答系统。
MCP 实践:基于 MCP 架构实现知识库答疑系统
|
1月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
138 12
|
2月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
140 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践