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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务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 
目录
相关文章
|
3天前
|
存储 SQL 监控
转转平台IM系统架构设计与实践(二):详细设计与实现
以转转IM架构为起点,介绍IM相关组件以及组件间的关系;以IM登陆和发消息的数据流转为跑道,介绍IM静态数据结构、登陆和发消息时的动态数据变化;以IM常见问题为风景,介绍保证IM实时性、可靠性、一致性的一般方案;以高可用、高并发为终点,介绍保证IM系统稳定及性能的小技巧。
17 6
|
23天前
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
62 18
|
1月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
94 16
|
1月前
|
存储 消息中间件 小程序
转转平台IM系统架构设计与实践(一):整体架构设计
本文描述了转转IM为整个平台提供的支撑能力,给出了系统的整体架构设计,分析了系统架构的特性。
72 10
|
2月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
1月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
1月前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
57 10
|
1月前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
2月前
|
运维 监控 安全
天财商龙:云上卓越架构治理实践
天财商龙成立于1998年,专注于为餐饮企业提供信息化解决方案,涵盖点餐、收银、供应链和会员系统等。自2013年起逐步实现业务上云,与阿里云合作至今已十年。通过采用阿里云的WA体系,公司在账号管理、安全保障、监控体系和成本管控等方面进行了全面优化,提升了业务稳定性与安全性,并实现了显著的成本节约。未来,公司将持续探索智能化和全球化发展,进一步提升餐饮行业的数字化水平。
|
2月前
|
运维 安全 架构师
架构师工具箱:Well-Architected云治理提效实践
本次分享基于阿里云Well-Architected Framework的最佳实践案例,涵盖企业从上云到优化的全过程。安畅作为国内领先的云管理服务提供商(Cloud MSP),拥有800多名员工,其中70%为技术工程师,为企业提供架构安全、数据智能等技术服务。内容包括Landing Zone与Well-Architected的关系、企业云治理现状及需求分析,重点探讨了安全合规、成本优化、资源稳定性和效率提升等方面的最佳实践,并通过具体客户案例展示了如何通过自动化工具和定制化解决方案帮助企业提升云上业务价值。

热门文章

最新文章