系统架构设计师-02-软件架构分类、建模方法、应用场景和未来发展

1. 软件架构的常用分类

比较典型的架构模型包括分层架构、事件驱动架构、微核架构、微服务架构和云架构等五类。

1.1. 分层架构(Layered Architecture)

最常见的软件架构,也是事实上的标准架构。将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口进行通信

最常见的是四层结构:

分层架构

1.2. 事件(Event)驱动架构

事件是状态发生变化时软件发出的通知。

事件驱动架构(Event-driven Architecture)是通过事件进行通信的软件架构。

事件驱动架构

对于简单的项目,事件队列、分发器和事件通道可以合为一体,整个软件就分成事件代理和事件处理器两部分。

1.3. 微核架构(Micro-kernel Architecture)

微核架构是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核(Core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信应该减少的最低,避免出现互相依赖的问题。

微核架构

1.4. 微服务架构(Micro-services Architecture)

微服务架构服务导向架构(Service-Oriented Architecture,SOA)的升级。每一个服务就是一个独立的部署单元(Separately Deployed Unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(如REST、SOAP)联系。

微服务架构

微服务架构分成三种实现模式

  • RESTful API模式:服务通过API提供,云服务就属于这一类;
  • RESTful 应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部;
  • 集中消息模式:采用消息代理 (Message Broker) 可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群。

1.5. 云架构

云架构主要分成两部分:处理单元(Processing Unit)和虚拟中间件(Virturalized Middleware)

  1. 处理单元实现业务逻辑
  2. 虚拟中间件负责通信、保持会话控制、数据复制、分布式处理和处理单元的部署。

虚拟中间件包括:▲

  • 消息中间件(Messaging Grid):管理用户请求和会话控制,当一个请求进来以后,它决定分配给哪一个处理单元;
  • 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据;
  • 处理中间件(Processing Grid):如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元;
  • 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

2. 系统架构的常用建模方法

根据模型的侧重点不同,可以将软件架构的模型分成:结构模型、框架模型、动态模型和过程模型

  1. 结构模型:最直观、最普遍。以架构的构件、连接件和其他概念来刻画。力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格和性质。核心是架构描述语言。
  2. 框架模型:不太侧重描述结构的细节,而更侧重整体的结构。主要以一些特殊的问题为目标建立只针对和适应问题的结构。
  3. 动态模型:是对结构或框架模型的补充,主要研究系统的“大颗粒”行为的性质。这里的动态可以指系统总体结构的配置、建立或拆除通信或计算的过程。
  4. 过程模型:是研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。

3. 软件架构的应用场景

不同的架构风格具有各自的优缺点和应用场景,比如:

  • 管道-过滤器风格,适用于将系统分成若干个独立的步骤;
  • 主程序/子程序面向对象的架构风格,可用于对组件内部进行设计;
  • 虚拟机风格经常用于构造解释器或专家系统;
  • C/S和B/S风格适合子数据和处理分布在一定范围,通过网络连接构成系统;
  • 平台/插件风格适用于具有插件扩展功能的应用程序;
  • MVC风格被广泛地应用于用户交互程序的设计;
  • SOA风格应用在企业集成等方面;
  • C2风格用于GUI软件开发,用以构建灵活的和可扩展的应用系统等。

4. 软件架构的发展未来

--------------本文结束 感谢您的阅读--------------