系统架构设计2---架构风格
为什么要有架构风格?
1、数据流体系风格
2、调用/返回风格(显示调用)
优点:有较好的重用性、可维护性好、可扩展性较好。
缺点:不是每个系统都适合分层,很难找到一个正确层次的抽象方法,不同层次的耦合很难实现。
特点:各个层次的组件形成不同功能级别的虚拟机,多层相互协同工作,而且实现透明。
典型示例:ISO的OSI参考模型,物联网设计模型。
(1)主程序/子程序:面向过程
(2)面向对象:对象之间的方法调用
(3)层次风格:层与层之间的方法调用。
(4)客户端/服务器:2层C/S,3层C/S,3层B/S,混合架构,富互联
◇ 2层C/S
◇ 3层C/S
◇ 3层B/S
◇ 富互联
◇ 混合结构
3、以数据为中心的风格
特点:以数据为中心
(1)仓库风格:仓 库 (Repository) 是存储和维护数据的中心场所。在仓库风格下图中,有两种不同的构件:中央数据结构说明当前数据的状态以及一组对中央数据进行操作的独立构件,仓库与独立构件间的相互作用在系统中会有大的变化。这种风格的连接件即为仓库与独立构件之间的交互。(数据库)
(2)黑板风格:黑板体系结构风格下图适用于解决复杂的非结构化的问题,能在求解过程中综合运用多种不同知识源,使得问题的表达、组织和求解变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架。它将问题的解空间组织成一个或多个应用相关的分级结构。分级结构的每一层信息由一个唯一的词汇来描述,它代表了问题的部分解。领域相关的知识被分成独立的知识模块,它将某一层次中的信息转换成同层或相邻层的信息。各种应用通过不同知识表达方法、推理框架和控制机制的组合来实现。影响黑板系统设计的最大因素是应用问题本身的特性,但是支撑应用程序的黑板体系结构有许多相似的特征和构件。
对比:
4、虚拟机风格
(2)规则系统体系结构风格:基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
对比:
5、独立构件风格
主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。
(1)进程通信:在进程通信结构体系结构风格中,构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程过程调用等。
(2)事件系统体系结构风格:基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
对比:
五大架构风格(数据流风格(批处理、管道-过滤器)、调用/返回风格(主程序/子程序、面向对象、层次结构)、独立构件风格(进程通信、事件驱动系统)、虚拟机风格(解释器、规则系统)、仓库风格(数据库系统、黑板系统、超文本系统))。
架构描述性语言(ADL)是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
三、其他架构风格
1、闭环控制风格(过程控制)
特点:闭环控制系统适合于嵌入式系统,用于解决简单闭合控制问题,不适合解决复杂的问题。
经典应用:空调温控、定速巡航。
2、C2风格
C2架构的基本规则:
构件和连接件都有一个顶部和一个底部。
构件的顶部不要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。
一个连接件可以和任意数目的其他构件和连接件连接,
当两个连接件进行直接连接时,必须由其中一个底部到另一个的顶部。
3、基于服务的架构风格(SOA)
服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为了实现用户目标提供支持。实现SOA的两种方式Web service、ESB。
(1)Web Service
Web Service中使用到的一些协议:
(2)ESB
4、微服务
微服务架构是面向的对象服务的一种(SOA可以分为单块架构和微服务)。
单块架构:很多服务放在一起,微服务会将一部分服务分开。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、相互配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制相互沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境,类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构造。
特点:
小,且专注做一件事情、轻量级通信机制、松耦合、独立部署
微服务是一系列技术支持的产出物:互联网、持续交付、虚拟化、DevOPS、传统架构
优势:
技术异构性(可以使用不同的技术解决相同的问题)、弹性、扩展、简化部署(可以使用自动化部署)、与组织结构相匹配、可组合性、对可替代性的优化
微服务面临的挑战
分布式系统的复杂度、运维成本、部署自动化、DevOPS与组织结构、服务间依赖测试、服务间依赖管理
5、MDA(模型驱动架构)
MDA的3种核心模型:→形式化方法下得产物
平台独立模型(PIM)
平台相关模型(PSM)
代码Code:用源代码对系统的描述(规约)。每个PSM都将变换成代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)