系统架构设计师笔记第2期:架构风格

news/2025/2/2 2:00:15/

架构风格是在软件系统设计和开发中使用的一种指导原则或模式集合。它描述了系统的整体结构和组织方式,以及各个组件之间的交互方式。架构风格可以帮助开发人员在设计和实现软件系统时做出一些重要的决策,包括如何划分系统的不同模块、如何组织和管理数据、如何处理系统的并发性等。

不同的架构风格强调不同的设计原则和目标。以下是一些常见的架构风格:

  1. 数据流风格(Dataflow Style): 数据流风格关注的是数据在系统中的流动和转换。系统被建模为一系列的数据处理单元(也称为处理器或过滤器),每个单元接收输入数据,执行某种操作,并将结果传递给下一个单元。数据流风格强调数据的独立处理和并行执行,适用于需要处理大量数据和并发执行的系统,例如流式处理系统和图像处理系统。
  2. 调用/返回风格(Call/Return Style): 调用/返回风格是一种基于过程调用的架构风格。系统被组织成一组相互调用的过程或函数,每个过程执行特定的任务,并可以返回结果给调用者。这种风格非常常见于传统的面向对象编程语言中,其中对象之间通过方法调用进行交互。调用/返回风格适用于需要按照特定的控制流程执行任务的系统。
  3. 独立构件风格(Component-based Style): 独立构件风格将系统划分为一组独立的、可重用的构件或模块,每个构件都具有明确定义的接口和功能。这些构件可以独立开发、测试和部署,并可以通过定义的接口进行交互。独立构件风格鼓励代码的重用和模块化,并提供了一种灵活的方式来构建复杂系统。
  4. 虚拟机风格(Virtual Machine Style): 虚拟机风格是一种基于虚拟机的架构风格。系统被组织为一组虚拟机实例,每个虚拟机提供了一个隔离的运行环境,其中可以执行特定的应用程序或任务。虚拟机风格可以提供安全隔离、资源管理和多租户支持,常见的应用包括虚拟化技术和云计算平台。
  5. 仓库风格(Repository Style): 仓库风格将系统的数据存储和访问抽象为一个中央的数据仓库或数据库。其他组件可以通过查询或更新仓库来获取或修改数据。仓库风格强调数据的一致性和集中管理,适用于需要共享和协调数据的系统,例如企业级应用程序和数据管理系统。

这些架构风格并不是互相排斥的,实际上,在设计复杂的软件系统时,可以结合多种架构风格来满足系统需求。选择适合的架构风格取决于系统的需求、可用技术和开发团队的经验等因素。

数据流风格

数据流风格的一个例子是图像处理系统。在图像处理系统中,图像被视为数据流,系统中的不同处理单元(过滤器)按照一定的顺序对图像进行处理。

例如,考虑一个简单的图像滤波器系统,该系统接收输入图像并对其进行一系列的滤波操作,最后生成输出图像。系统可以被建模为一个数据流图,其中每个过滤器表示一个处理单元,输入图像作为数据流进入系统,经过一系列的过滤器处理后,最终生成输出图像。

在这个系统中,每个过滤器负责执行特定的图像处理操作,例如边缘检测、模糊化、锐化等。过滤器之间通过数据流连接起来,即一个过滤器的输出作为下一个过滤器的输入。数据在系统中以流的形式传递,每个过滤器根据其输入数据进行计算,并将结果传递给下一个过滤器。

数据流风格的好处是可以实现并行处理和流式处理,这对于处理大型图像或实时图像数据非常有用。系统可以将图像分成多个块,并将不同的处理任务分配给不同的处理单元并行执行,从而加快处理速度。此外,由于数据流的特性,系统可以在图像输入的同时进行处理和输出,使得实时处理成为可能。

总之,数据流风格在图像处理系统中提供了一种有效的架构,它强调数据的流动和并行处理,使得系统能够高效地处理大量图像数据。

调用/返回风格

调用/返回风格在许多编程语言和系统中都非常常见,其中一个典型的例子是Web应用程序的后端开发。
考虑一个简单的在线商城应用程序,使用调用/返回风格来实现后端的逻辑。在这种架构下,应用程序的功能被划分为不同的服务或模块,每个模块负责特定的功能。
例如,应用程序可能包括以下模块:

  1. 用户管理模块:负责处理用户注册、登录、个人信息管理等功能。
  2. 商品管理模块:负责处理商品的添加、编辑、删除等功能。
  3. 订单管理模块:负责处理订单的创建、支付、发货等功能。

这些模块可以通过调用/返回的方式进行交互。当前端或其他模块需要执行某个功能时,它会调用相应的后端接口,并传递所需的参数。后端模块接收到请求后,执行相应的操作,并将结果返回给调用者。
例如,当用户在前端注册新账户时,前端会调用用户管理模块的注册接口,传递用户名、密码等参数。用户管理模块接收到请求后,会执行用户注册的逻辑,创建新用户,并返回注册成功的响应给前端。
类似地,当用户在前端下单购买商品时,前端会调用订单管理模块的创建订单接口,传递所选商品和付款信息。订单管理模块接收到请求后,会执行订单创建的逻辑,生成订单并返回订单号给前端。
调用/返回风格的优势在于它简化了系统的组织和交互方式。每个模块专注于特定的功能,并通过接口暴露给其他模块。这种松耦合的设计使得系统更易于扩展和维护,不同模块之间可以独立开发和测试。
总结起来,调用/返回风格在Web应用程序的后端开发中是一种常见的架构风格,它通过模块化和接口调用来实现系统的功能划分和交互。它提供了一种清晰的方式来组织和管理系统的逻辑。

独立构件风格

独立构件风格(Component-based Style)在软件开发中非常常见,以下是一个例子来说明该架构风格的应用。

考虑一个电子商务平台,该平台由多个独立构件组成。每个构件都代表着特定的功能或服务,并具有明确定义的接口。

例如,这个电子商务平台可能包括以下独立构件:

  1. 用户认证构件:负责处理用户的身份验证和授权功能。
  2. 商品管理构件:负责管理商品的添加、编辑和删除。
  3. 订单处理构件:负责处理订单的创建、支付和发货。
  4. 财务计算构件:负责计算和管理财务数据,如订单总额、销售额等。
  5. 邮件通知构件:负责发送电子邮件通知给用户,如订单确认、发货通知等。

每个构件都是相对独立的,它们可以独立开发、测试和部署。它们之间通过定义的接口进行交互,例如订单处理构件可以调用用户认证构件来验证用户的身份,商品管理构件可以调用财务计算构件来计算订单总额。

通过独立构件风格,这个电子商务平台的开发团队可以将系统的功能划分为可重用和相互独立的构件,每个构件都专注于特定的任务。这样的架构风格有助于提高开发效率、代码的重用性和可维护性。此外,如果需要增加新的功能,可以通过添加新的构件来扩展系统,而不需要修改现有构件。

总结一下,独立构件风格是一种通过将系统划分为独立的、可重用的构件来组织和设计软件系统的架构风格。它提供了一种模块化和可扩展的方式来构建复杂的应用程序。

虚拟机风格


虚拟机风格(Virtual Machine Style)的一个例子是虚拟化技术和云计算平台。

在虚拟机风格中,系统被组织为一组虚拟机实例,每个虚拟机提供了一个隔离的运行环境,其中可以执行特定的应用程序或任务。

例如,考虑一个云计算平台,该平台提供基于虚拟化的资源管理和应用程序部署。在这个平台中,物理服务器被划分为多个虚拟机,每个虚拟机都运行着一个独立的操作系统和应用程序栈。

在这种架构下,每个虚拟机可以被视为一个独立的计算机,它具有自己的虚拟处理器、内存、磁盘和网络接口。应用程序和服务可以在虚拟机中部署和运行,就像它们在物理服务器上运行一样。

虚拟机风格的优势之一是提供了安全隔离和资源管理的能力。每个虚拟机都在自己的隔离环境中运行,不会相互干扰。这使得不同的应用程序和服务可以在同一物理服务器上同时运行,而不会互相影响。

另一个优势是提供了灵活的扩展和资源分配。通过虚拟化技术,可以根据需要创建、删除和调整虚拟机的数量和配置。这使得云计算平台能够根据实际需求动态分配计算资源,并提供弹性和可伸缩性。

总结起来,虚拟机风格是一种通过将系统划分为多个虚拟机实例来实现资源隔离和应用程序部署的架构风格。它在云计算和虚拟化技术中得到广泛应用,为应用程序提供了隔离性、灵活性和资源管理的好处。

仓库风格

仓库风格(Repository Style)是一种架构风格,将系统的数据存储和访问抽象为一个中央的数据仓库或数据库。以下是一个例子来说明仓库风格的应用。

考虑一个企业级客户关系管理(CRM)系统,该系统用于管理客户信息、交易记录等。在仓库风格下,系统的数据存储和访问被抽象为一个中央的数据仓库,各个模块或服务可以通过查询或更新仓库来获取或修改数据。

在这个CRM系统中,数据仓库可以包含客户信息、订单信息、销售数据等。不同的模块或服务可以通过查询仓库来获取特定客户的信息,如客户名称、联系方式等。它们也可以将新的客户信息或订单数据存储到仓库中。

例如,销售团队可以通过查询仓库获取特定客户的交易记录和购买历史,以帮助他们更好地了解客户需求并提供个性化的服务。市场营销团队可以从仓库中获取潜在客户的联系信息,以进行针对性的市场推广活动。客户服务团队可以通过查询仓库获取客户的投诉记录和解决方案,以提供高质量的客户支持。

通过仓库风格,系统的数据被集中管理,确保了数据的一致性和可靠性。数据仓库提供了一个统一的接口和数据模型,使得不同模块或服务可以共享和协调数据。这样的架构风格有助于避免数据冗余和数据不一致的问题,同时提供了更好的数据访问和管理控制。

总结起来,仓库风格是一种将系统的数据存储和访问抽象为一个中央数据仓库的架构风格。它适用于需要共享和协调数据的系统,例如企业级应用程序和数据管理系统。仓库风格通过提供统一的数据接口和集中的数据管理,促进了数据的一致性和可靠性。


http://www.ppmy.cn/news/160330.html

相关文章

thinkpad e320 不能直接装 XP问题

新本本 thinkpad e320 不能直接装 XP ,而且用 compatibillity 硬盘模式装完也是性能很慢的。解决办法有两个,分别都验证试过。 方法一: 使用 nlite 工具将相应的sata硬盘驱动合并到安装盘里,刻出来后再装. 方法二: (转)ThinkPad E40 0578A59。…

联想Thinkpad E40电脑经常性重启问题的解决办法

E系列电脑普遍存在散热性能差的问题,即便对散热扇等进行了清理,问题依然存在。 上个月,E40电脑出现无法开机的问题,拿到维修店修理后,电脑可正常运行;可是老问题依然存在,即CPU运行压力只要提高…

Jenkins概念及安装配置教程(二)

如何安装Jenkins? Jenkins 安装程序也可以作为通用 Java 包 (.war) 使用。如果您将 Jenkins 与 Selenium 一起用于执行跨浏览器测试,我们建议使用 .war 文件,因为您可以通过在非无头模式下在浏览器上执行的自动化测试来见证测试场景的执行。…

@SentinelResource和openFeign+sentinel 对远程调用熔断降级加规则持久化的具体实 现

SentinelResource 自定义全局限流处理类 需求分析/图解 先看前面的一段代码 这个就是上面的Sentinel 热点规则 注意看我们的限制处理方法在本类中代码的耦合度高 阅读性差 不利于程序的扩展 SentinelResource的作用就是解决这个需求将处理方法放到一个类中 GetMapping("…

【Linux】序列化和反序列化

目录 🌈前言🌸1、应用层🌺2、重谈协议🍁3、网络计算器🍡3.1、定制协议🍢3.2、样例代码 🌈前言 这篇文章给大家带来序列化和反序列化的学习!!! 🌸…

MacPro无法正常识别电池解决方案

MacPro无法正常识别电池解决方案 症状: 1、MacPro突然无法识别电池,开机后,像空调风扇一样呼呼响,且右上角电源图标上有黑色的X,提示无法识别电池 2、将充电器连接MacPro后,充电器灯不亮 解决方案&#x…

2021容量最大的充电宝是多少?大容量充电宝排行榜

近几年来,随着智能手机越来越普遍了,人们使用的手机广泛性也非常大了,当手机没有电的时候,这时好多人都想到充电宝的重要性。但是现在有人问2021年容量最大的充电宝是多少呢?那么,下面就让我为大家介绍大容…

无线充电宝哪家好?耐用的无线充电宝盘点

对于经常要出外工作或者旅游的人来说,充电宝可以说是出门必备的单品之一了。虽然在前不久,新闻播报了某品牌出现的充电宝爆炸事故,让不少消费者对充电宝产生了一定的阴影。但其实这只是一个偶尔的事故而已,如果品牌方对充电宝的质…