系统架构设计2---架构风格

为什么要有架构风格?

软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。也就是说,在不同的软件系统中,使用同一体系结构。基于这个目标,主要任务是研究和实践软件体系结构风格和类型问题。
一、架构风格的定义
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。
二、架构风格的分类

1、数据流体系风格

数据流体系结构是一种计算机体系结构,直接与传统的冯·诺依曼体系结构或控制流体系结构进行了对比。数据流体系结构没有概念上的程序计数器:指令的可执行性和执行仅基于指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,即行为是不确定的。数据流体系结构风格主要包括批处理风格和管道-过滤器风格
典型的特点:(数据驱动)前一步处理的结果是后一步的输入。
优点:松耦合,有良好的重用性、可维护性,扩展性较好,隐蔽性好、支持并行。
缺点:交互性差、复杂度高、性能较差
典型的示例:传统的编译器、网络报文处理

  (1)批处理风格:对数据整体处理,无用户交互。  
  (2)管道-过滤器:采用流式数据,弱用户交互。

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、虚拟机风格

虚拟机体系结构风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。虚拟机体系结构风格主要包括解释器风格和规则系统风格。 
  (1)解释器风格:一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。

                         

  (2)规则系统体系结构风格:基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。

                   

对比:

               

5、独立构件风格

主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。 

   (1)进程通信:在进程通信结构体系结构风格中,构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程过程调用等。

  (2)事件系统体系结构风格:基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。

对比:

          

五大架构风格(数据流风格(批处理、管道-过滤器)、调用/返回风格(主程序/子程序、面向对象、层次结构)、独立构件风格(进程通信、事件驱动系统)、虚拟机风格(解释器、规则系统)、仓库风格(数据库系统、黑板系统、超文本系统))。

架构描述性语言(ADL)是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。

三、其他架构风格

1、闭环控制风格(过程控制)

特点:闭环控制系统适合于嵌入式系统,用于解决简单闭合控制问题,不适合解决复杂的问题。

经典应用:空调温控、定速巡航。

2、C2风格

C2架构的基本规则:

构件和连接件都有一个顶部和一个底部。

构件的顶部不要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。

一个连接件可以和任意数目的其他构件和连接件连接,

当两个连接件进行直接连接时,必须由其中一个底部到另一个的顶部。

3、基于服务的架构风格(SOA)

服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为了实现用户目标提供支持。实现SOA的两种方式Web serviceESB。

 

 

  (1)Web Service

               

   Web Service中使用到的一些协议:

         

   (2)ESB

            

4、微服务

微服务架构是面向的对象服务的一种(SOA可以分为单块架构和微服务)。

单块架构:很多服务放在一起,微服务会将一部分服务分开。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、相互配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制相互沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境,类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构造。

特点:

小,且专注做一件事情、轻量级通信机制、松耦合、独立部署

微服务是一系列技术支持的产出物:互联网、持续交付、虚拟化、DevOPS、传统架构

优势:

  技术异构性(可以使用不同的技术解决相同的问题)、弹性、扩展、简化部署(可以使用自动化部署)、与组织结构相匹配、可组合性、对可替代性的优化

微服务面临的挑战

  分布式系统的复杂度、运维成本、部署自动化、DevOPS与组织结构、服务间依赖测试、服务间依赖管理

5、MDA(模型驱动架构)

  MDA3种核心模型:→形式化方法下得产物

  平台独立模型(PIM

  平台相关模型(PSM

  代码Code:用源代码对系统的描述(规约)。每个PSM都将变换成代码。

       

 

posted @   谵语芥末  阅读(904)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示