原文: dzone.com/articles/5-…
可以结合鸟窝大哥的文章软件架构模式阅读。
在全球软件架构峰会上,我们讨论了很多软件架构模式,我决定写一篇关于它的文章,重点介绍领先的软件架构师的见解。
架构模式是经过验证的良好架构设计,以便我们继续重用。软件架构师一直在获取和重用被证明是成功的架构模式。
更具体地说,架构模式是在实践中反复发现的设计决策,具有良好的可重用属性,并描述了一类架构。
开发架构可以看作是选择、裁剪和组合模式的过程。软件架构师必须决定如何实例化模式,如何使其符合特定的上下文和问题的约束。稍后我们会更详细地讨论。
Mark Richards 写了一本名为Software Architecture Patterns的书。根据他的说法,有 5 种主要的软件架构模式:微内核、微服务、分层架构、基于事件和基于空间。
微内核架构模式也称为插件架构模式。它通常在创建具有可更换组件的系统时使用。
它能够适应系统需求不断变化的软件系统。将最低限度的核心功能与扩展功能和特定于客户的部件分开。还能以插座的方式插入这些扩展功能并协调运行。
微内核架构模式是实现基于产品的应用程序的自然模式。基于产品的应用程序是作为第三方产品打包并以不同版本供下载的应用程序。然而,许多公司也开发和发布其内部业务应用程序,如软件产品、完整的版本、发行说明和可插拔功能。
微内核架构模式可以使附加的应用程序作为插件添加到核心应用程序中,从而提供可扩展性以及特性分离和隔离。
微内核架构模式由两种类型的体系结构组件组成:核心系统和插件模块。应用程序逻辑在独立的插件模块和核心系统之间进行划分,提供了应用程序功能和自定义处理逻辑的可扩展性、灵活性和隔离性。并且微内核架构模式的核心系统传统上只包含使系统运行所需的最低限度的功能。
也许最好的微内核架构例子是 Eclipse IDE。下载基本的 Eclipse 产品只会提供一个编辑器。但是,你可以添加各种插件,它就会成为一个高度可定制和有用的产品。
当你将应用程序编写为一组微服务时,实际上是在编写协同工作的多个应用程序。每个微服务都有自己不同的职责,团队可以独立于其他微服务进行开发。他们之间唯一的依赖就是通信。当微服务相互通信时,你必须确保它们之间发送的消息保持向后兼容。
最常见的架构模式是分层架构模式。分层架构模式是 n 层架构模式,其中的组件分布在其中,而且每一层都是独立的。大多数软件都是用的这种架构模式。这意味着所有组件都是互连的,且不相互依赖。分层架构模式的每一层在应用程序中都有特定的角色和职责。例如,表示层将负责处理所有用户界面和浏览器通信的逻辑,而业务层将负责执行与请求相关联的特定业务规则。
分层架构模式的一个强大功能是组件之间的关注分离。特定层中的组件只处理与该层相关的逻辑。
这是用于开发高可伸缩性系统的最常见的分布式异步架构。该架构由单一用途的事件处理组件组成,这些组件监听事件并异步处理它们。事件驱动的架构构建了一个接受所有数据的中央单元,然后将其委托给处理特定类型的单独模块。
基于空间的架构模式是专门为解决可伸缩性和并发性问题而设计的。对于并发用户量可变且不可预测的应用程序,它也是一种有用的架构模式。通过去除中央数据库的限制,使用可复制的内存网格,可以实现高可伸缩性。
基于空间的架构旨在通过在多个服务器之间拆分逻辑处理和存储来避免高负载下的功能崩溃。