参考文章:
【1】五分钟理解软件架构模式 注意:该文章为英文,可能访问不了。
本篇文章翻译至 参考文章【1】,一为加深记忆,二为提高英语水平。
作为软件工程师为什么要学习软件架构模式?
首先,了解软架构模式能够帮助你更有效的了解架构师的要求;
其次,知道这些模式能够帮助更好的管理你的代码。例如:如果你的应用设计是基于事件驱动的微服务,作为一个软件工程师,如果现有服务中逻辑的复杂性和责任不断增加,你必须把你的代码解耦到一个单独的服务中。
在Mark Richards《Software Architecture Patterns》书中分了以下五种架构模式:
- 分层架构
- 事件驱动架构
- 微内核(插件式架构)
- 微服务架构
- 基于空间架构(云架构模式)
分层架构
这种架构在单体应用中最为常见。
基本思想就是将应用程序的逻辑划分为若干层,每一层都封装了特定的角色。例如,持久层就是负责应用程序与数据库引擎的通信。
事件驱动架构
中心思想是将应用逻辑解耦为单一用途的事件处理组件,这些组件异步的接受和处理事件。
这种架构模式流行的分布式异步架构之一,具有高扩展性和适应性。
微内核式架构
也被称做插件式架构。主要有两大核心组件:核心系统 和 插件模块 。
例如:浏览器,可以安装很多插件。还有就是 JDK9 重构之后的垃圾回收器,都是模块化。
微服务架构
微服务架构是由单独部署的服务组成,每个服务都有单独的一个职责,并且这些服务相互独立,如果其中一个服务出现异常,其他的服务并不会停止运行。
基于空间的架构模式
主要想法是分布式共享内存,以缓解经常发生在数据库层面的问题。
其假设是:通过使用内存数据处理大部分操作,这样可以避免在数据库中进行额外的操作,从而规避未来可能由此产生的任何问题(例如:你的用户活动数据实体发生了变化,并不需要改变一堆代码来持久化和从数据库中检索这些数据)。
最基本的方法就是将应用程序分离成处理单元(可以根据需求自动扩展和缩小),数据将在单元之间复制和处理,而不需要持久化到中央仓库(在系统出现故障的时候有本地缓存)。