架构模式是捕获经过验证的良好设计结构的方法,以便可以重复使用它们。软件架构师一直在寻找方法来捕获和重用过去证明是成功的架构知识。
更具体地说,架构模式是在实践中反复发现的设计决策包,具有定义明确的属性,可以重复使用并描述一类架构。
开发体系结构可以看作是选择,定制和组合模式的过程。软件架构师必须决定如何实例化模式,如何使其与特定的上下文和问题的约束相适应。稍后我们将对其进行详细讨论。
1.微内核模式
微内核架构模式也称为插件架构模式。通常在软件团队创建具有可互换组件的系统时使用。
它适用于必须能够适应不断变化的系统要求的软件系统。它将最小的功能核心与扩展功能和客户特定零件分开。Itl还用作插入这些扩展并协调其协作的套接字。
微内核架构模式是用于实施基于产品的应用程序的自然模式。基于产品的应用程序是一种打包的应用程序,可以作为典型的第三方产品的版本进行下载。但是,许多公司还开发和发布其内部业务应用程序,例如软件产品,版本,发行说明和可插拔功能。
使用微内核架构模式,您可以将其他应用程序功能作为插件添加到核心应用程序,从而提供可扩展性以及功能分离和隔离。
微内核架构模式由两种类型的架构组件组成:核心系统和插件模块。应用程序逻辑在独立的插件模块和基本核心系统之间划分,提供应用程序功能和自定义处理逻辑的可扩展性,灵活性和隔离性。传统上,微内核架构模式的核心系统仅包含使系统运行所需的最小功能。
也许微内核体系结构的最佳示例是Eclipse IDE。下载基本的Eclipse产品为您提供的只是一个编辑器。但是,一旦开始添加插件,它将成为高度可定制和有用的产品。
优点:
- 极大的灵活性和可扩展性
- 一些实现允许在应用程序运行时添加插件
- 良好的便携性
- 易于部署
- 快速响应不断变化的环境
- 插件模块可以单独进行测试,并且可以由核心系统轻松模拟,以演示或原型化特定功能,而对核心系统的更改很少或没有更改。
- 高性能,因为您可以自定义和简化应用程序以仅包括所需的那些功能。
最适合:
- 从不同来源获取数据,转换数据并将其写入不同目标的应用程序
- 工作流程应用
- 任务和作业计划应用程序
2.微服务模式
当您将应用程序作为一组微服务编写时,实际上是在编写可以协同工作的多个应用程序。每个微服务都有自己的职责,团队可以独立于其他微服务进行开发。它们之间的唯一依赖关系就是沟通。当微服务彼此通信时,您必须确保它们之间发送的消息保持向后兼容。
优点
- 您可以分别编写,维护和部署每个微服务
- 易于扩展,因为您只能扩展需要扩展的微服务
- 重写应用程序的各个部分比较容易,因为它们较小,并且与其他部分的耦合较少
- 新团队成员必须迅速变得富有成效
- 该应用程序必须易于理解和修改
- 高度可维护和可测试–实现快速频繁的开发和部署
- 可独立部署–使团队无需与其他团队协调即可部署其服务
最适合:
- 小型网站
- 边界明确的企业数据中心
- 快速发展新业务和Web应用程序
- 遍布全球的开发团队
3 分层架构模式
最常见的架构模式是分层架构模式。分层体系结构模式是n层模式,其中组件被组织在水平层中。这是设计大多数软件的传统方法,并且具有独立性。这意味着所有组件都是相互连接的,但并不相互依赖。分层体系结构模式的每一层在应用程序中都有特定的角色和职责。例如,表示层将负责处理所有用户界面和浏览器通信逻辑,而业务层将负责执行与请求关联的特定业务规则。
分层体系结构模式的强大功能之一是组件之间关注点的分离。特定层中的组件仅处理与该层有关的逻辑。
优点
- 高可测试性,因为组件属于体系结构中的特定层,其他层可以被模拟或存根,因此这种模式相对易于测试。
- 高度易于开发,因为这种模式众所周知,并且实现起来并不太复杂,而且大多数公司也通过将技能集分层来开发应用程序,因此这种模式成为大多数业务应用程序开发的自然选择。
- 可维护的
- 易于分配单独的“角色”
- 易于分别更新和增强图层
最适合:
- 标准业务线应用程序,其功能不只是CRUD操作
- 需要快速构建的新应用程序
- 具有尚不了解其他架构的经验不足的开发人员的团队
- 需要严格的可维护性和可测试性标准的应用
4,基于事件的模式
这是用于开发高度可扩展的系统的最常见的分布式异步体系结构。该体系结构由用于监听事件并异步处理事件的单一事件处理组件组成。事件驱动的体系结构构建了一个接受所有数据的中央单元,然后将其委托给处理特定类型的单独模块。
优点
- 容易适应复杂,经常混乱的环境
- 轻松扩展
- 当出现新的事件类型时,很容易扩展
最适合:
- 具有异步数据流的异步系统
- 用户界面
5.基于空间的模式
基于空间的体系结构模式专门设计用于解决和解决可伸缩性和并发性问题。对于具有可变且不可预测的并发用户量的应用程序,这也是一种有用的体系结构模式。通过消除中央数据库约束并使用复制的内存中数据网格来实现高可伸缩性。
基于空间的体系结构旨在通过拆分多个服务器之间的处理和存储来避免高负载下的功能崩溃。
优点
- 快速响应不断变化的环境。
- 尽管基于空间的体系结构通常不分离和分布,但是它们是动态的,并且基于云的复杂工具允许将应用程序轻松地“推送”到服务器上,从而简化了部署。
- 通过内存中的数据访问和此模式中内置的缓存机制可实现高性能。
- 高可伸缩性来自于对集中式数据库的依赖很小或根本没有依赖的事实,因此从根本上消除了可伸缩性方程式中的这一限制瓶颈。
最适合:
- 点击数据流和用户日志等海量数据
- 低价值数据可能偶尔丢失而不会造成严重后果
- 社交网络