本文最后更新于 2024-03-27,文章内容可能已经过时。

软件体系结构

1.定义:

Software Architecture.

程序或计算系统的软件软件体系结构(架构)是系统的结构,包括软件组件(软件构件),这些组件的外部可见性质,以及各个组件之间的关系。

2.MVC架构:

模型-视图-控制器(MVC)是一种架构模式,它将用户和应用程序之间的交互分为三个角色:

Model (负责业务逻辑),

View (代表用户界面),

Controller (处理用户输入)。

image-20240103225202081

3. 分层架构:

层次(分层)系统是按层次组织的。每层都为其上面的层提供服务,并充当下面层的客户。

image-20240103225259955

3.1 三层架构:

三层架构是经常使用的软件体系结构。该体系结构可以分为通用的3层架构与运行在互联网上的三层架构软件。

image-20240103225416719

表示层(Presentation layer): 表示层通常包括用户图形界面,用于用户输入、用户请求与显示用户请求的返回结果等。表示层调用应用层组件的过程,函数或者方法。但是应用层从来不会调用表示层的功能。避免将业务逻辑写入用户图形界面

应用层(Application layer):或称为业务逻辑(Business Logic)层。主要包括应用的业务逻辑,实现了应用的业务功能。该层的组件封装了应用的核心数据与功能。在该层中,如果要访问数据库或者要将程序运行中产生的数据存储到数据库,必须调用永久数据存储层的相应的数据库访问方法,而不能直接访问数据库。

永久数据存储层(Permanent Data Storage layer):该层包含数据库的访问与将永久数据存储到数据库中的功能。在Java实现中,该层包含了利用JDBC写的数据库访问代码。该层不能调用应用层与显示层,而只能将执行应用层的请求对数据库的访问结果返回给应用层。而应用层有可能将该数据返回给显示层。

4.调用-返回架构:

image-20240103225620502

系统由一个主程序和一些分层组织的子程序组成;

主程序调用高层子程序;

高层子程序调用低层子程序.

一个子例程的正确性通常取决于它调用的子程序是否正确.

5.批处理架构:

image-20240103225845582

6.管道-过滤器架构:

管道-过滤器模式的体系结构是面向数据流的软件体系结构,主要用于实现复杂的数据多步转换处理。每个处理步骤封装在一个过滤器组件中。数据通过相邻过滤器之间的管道传输。

image-20240103230041229

7.事件体系结构:

计算机中,消息是具有特定含义的数据 事件:能够激活对象功能的动作。当发生这种动作后将给所涉及对象发送一个消息,对象便可执行相应的功能

基于事件的软件体系结构(Event-Driven Architecture,EDA)是一种将系统设计为通过事件进行通信和协调的体系结构。在这种体系结构中,系统的各个组件通过发布和订阅事件的方式进行交互,以实现松耦合、可扩展和可维护的系统设计。

image-20240103231106396

8.客户端-服务端架构:

客户服务器模式Client–server model简称C/S结构,是一种网络架构,它把客户端 (Client) 与服务器 (Server) 区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。客户服务器模式通过不同的途径应用于很多不同类型的应用程序,最常见就是目前在因特网上用的网页。

两层和三层架构:

有两种类型的客户端服务器架构:

  • 两层构架: 在这种架构中,客户端直接与服务器进行交互。这种类型的架构可能有一些安全漏洞和性能问题。 IE浏览器和Web服务器的两层架构。这里的安全问题都解决了使用安全套接字层(SSL)。

  • 三层架构:在这个架构中,多了一个软件位于客户端和服务器之间。这中间的软件被称为中间件。中间件被用来执行所有的安全检查和重负载情况下的负载平衡。中间件需要从客户端的所有请求,并做必要的验证后,通过向服务器发出请求。然后,服务器没有所需的处理和发送响应回中间件,中间件终于通过这个响应返回给客户端。如果想实现一个3层架构,那么可以使用如Web Logic或WebSphere软件在Web服务器和Web浏览器之间的任何中间件。

image-20240103231313131

9.P2P架构:

P2P,英文全称:Peer To Peer,点对点技术,是一种区别于C/S的网络模型,没有统一的中心服务器结点,各个Client也是提供服务的Server。

9.1. 根据中央化程度

一般型P2P

节点同时作为客户端和服务器端 没有中心服务器 没有中心路由器 典型代表:Gnutella,一种文件共享网络,泛滥式查询搜索所有节点 特殊型P2P

一个中心服务器保存节点信息 节点负责发布这些信息,让中心服务器知道它们想共享什么文件 路由终端使用地址,被一组索引引用来获取绝对地址 典型代表:Napster,一种音乐共享网络,依赖中央服务器协调网络中的查询 混合型P2P

同时含有一般型和特殊型的特点 典型代表:Skype

9.2. 根据网络拓扑结构

结构P2P

点对点之间互有链接咨询,彼此形成特定规则拓扑结构 需要请求资源时,依该拓扑结构规则寻找,若存在则一定找得到 典型代表:Chord、YaCy(分布式开源免费网页搜索引擎系统,保护用户隐私,无中央服务器搜索,保证内容不被审查)、Kademlia(一种协议算法,规定网络的结构同时,规定通过节点查询进行信息交换的方式,快速定位期望的节点) 无结构P2P

点对点之间互有链接咨询,彼此形成无规则拓扑结构 需要请求资源时,以广播方式寻找,通常会设TTL,即使存在也不一定找得到 典型代表:Gnutella 松散结构P2P

点对点之间互有链接咨询,彼此形成无规则拓扑结构 需要请求资源时,依现有咨询推测寻找,介于P2P结构和无结构型之间 典型代表:Freenet(一个软件,匿名互联网领域)

10.网格计算架构:

网格计算的定义 (Definition of grid computing)Ian Foster将计算网格定义为:

协调不受集中控制的资源.

使用标准、开放、通用协议和接口.

提供非平凡的服务质量.

网格计算是一种分布式架构,它利用多台计算机通过网络连接在一起,共同完成一个共同的任务。这些任务通常需要大量计算资源,单台计算机难以处理。多台计算机在共同的协议下协作,形成一个虚拟的超级计算机,以完成复杂的任务。网格计算通过创建一个单一的系统镜像,使用户和应用程序能够无缝访问计算资源,从而提供强大的虚拟化能力。

网格计算网络通常由三种类型的计算机组成:

  1. 控制节点/服务器:控制节点是管理整个网络并维护网络资源记录的服务器或一组服务器。

  2. 提供者/网格节点:提供者或网格节点是向网络资源池贡献其资源的计算机。

  3. 用户:用户是指使用网络资源完成任务的计算机。

网格计算通过在参与网格网络的每台计算机上运行专门的软件来运行。该软件协调和管理网格的所有任务,将主要任务分解为子任务,并将子任务分配给每台计算机。这使得所有计算机能够同时处理各自的子任务。完成子任务后,所有计算机的输出被汇总以完成更大的主任务。

网格计算可以被视为分布式计算的一个子集,其中虚拟超级计算机整合了分布在不同地理位置的多台独立计算机的资源。参与网格计算的计算机贡献资源,如处理能力、网络带宽和存储容量,以执行需要高计算能力的操作。整体网格架构看起来像一个单一的计算实体。在网格计算中,每个计算任务被分解成小片段,并分布到计算节点上以进行高效执行。每个片段并行处理,因此复杂的任务可以在较短的时间内完成。

网格计算的关键组件包括用户界面、安全性、调度程序、数据管理和工作负载与资源管理。用户界面提供了一个界面,允许用户使用网格提供的资源启动应用程序。安全性是网格计算环境的一个重要组成部分,包括身份验证、授权和数据加密。调度程序用于安排任务在网格上运行,数据管理是网格环境中的关键组件,用于移动数据或使应用程序模块在网格内的各个节点之间可访问。工作负载与资源管理组件用于在特定资源上启动作业,并检查其状态和检索结果。

11.云计算架构:

云计算架构是指用于存储信息并通过互联网连接随时随地访问的技术。云计算架构由前端和后端两部分组成。

前端包括客户端接口和应用程序,用于访问云计算平台。它包括网页服务器、轻客户端、厚客户端、平板电脑和移动设备。

后端由服务提供商使用,用于管理提供云计算服务所需的所有资源。它包括大量的数据存储、安全机制、虚拟机、部署模型、服务器、流量控制机制等。

云计算架构的组件包括客户端基础设施、应用程序、云服务、运行时云、存储、基础设施、管理、安全和互联网。

云服务包括软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。运行时云提供虚拟机的执行和运行环境。存储提供了大量的云端存储容量。基础设施包括主机级别、应用级别和网络级别的服务。管理用于管理后端的组件和解决安全问题。安全在后端实施安全机制。互联网是前端和后端之间相互连接和通信的媒介。

总的来说,云计算架构是一个复杂的系统,它通过前端和后端的协作,为用户提供了便捷的云计算服务。

image-20240103232010571

12.SOA架构:

SOA架构(面向服务的架构)是一种软件开发模型,它将服务设计为可重用的单元,并允许它们跨不同平台和语言进行通信,以构建新的应用程序。在SOA中,服务是一种自包含的软件单元,旨在完成特定的任务。应用程序使用SOA和简单的接口标准来访问服务,以构建新的应用程序。SOA创建了应用程序和服务之间的互操作性,确保现有应用程序可以轻松扩展,同时减少与开发业务服务解决方案相关的成本。企业还使用SOA来构建需要多个系统之间高效交互的应用程序。

SOA的定义概念包括以下内容:

  • 商业价值比技术策略更重要。

  • 战略目标比特定项目的利益更重要。

  • 基本互操作性比定制集成更重要。

  • 共享服务比特定目的的实现更重要。

  • 持续改进比即时完美更重要。

SOA的工作原理是将复杂的软件系统简化为可重用的服务,其他应用程序和用户(称为服务消费者)可以访问这些服务。这些服务可以用作构建新应用程序的构建块。每个SOA服务都有一个特定的任务和一个接口,包括服务的输入和输出参数,以及访问它所需的通信协议。SOA让服务使用松散耦合的系统进行通信,以传递数据或协调活动。松散耦合是指服务的客户端保持独立于其所需的服务。此外,客户端(也可以是服务)可以与其他服务进行通信,即使它们没有关联。通过这个过程,各种服务可以组合在一起,创建更复杂的软件,其他应用程序可以将其用作单个单元使用。

服务提供者、服务消费者、服务注册表和主要SOA组件的主要目标是服务、发布和安全性。SOA的实施是独立于供应商和技术的。这意味着可以使用各种产品来实现架构。决定使用什么取决于系统的目标。通常使用Web服务(如简单对象访问协议(SOAP)和Web服务描述语言(WSDL))来实现SOA。其他可用的实现选项包括Windows Communication Foundation、gRPC和消息传递(例如Java消息服务ActiveMQ)。

image-20240103232254951

在 SOA 模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。

一个独立的服务基本结构如图 :