查看原文
其他

5种主要的软件架构模式

良许Linux Linux云计算网络 2021-12-21


译者:王延飞
译文链接:https://dzone.com/articles/5-major-software-architecture-patterns


在全球软件架构峰会上,我们讨论了很多软件架构模式,因此我决定写一篇有关它的文章,重点介绍知名的软件架构师的见解。

什么是软件架构模式?

软件架构模式是经过验证的,具有良好设计结构的方法。更具体地说,架构模式是在实践中归纳总结的一组设计决策,具有明确定义的属性,并可以重复使用。

软件开发有时可以看作是选择,定制和组合架构模式的过程。软件架构师必须决定如何采用哪几种架构模式,如何使这些架构模式与软件系统特定的上下文相适应。

Mark Richards他写了一本书,名为《软件架构模式》,其中主要介绍了5种软件架构模式:微内核模式(Microkernel Pattern),微服务模式 (Microservices Pattern ),分层架构模式( Layered Architecture Pattern),基于事件的模式(Event-based Pattern),基于空间的架构模式(Space-based Pattern)。

5种主要的软件架构模式

1.微内核模式(Microkernel Pattern)

微内核架构模式也称为插件模式。这种模式允许你将其他应用程序功能作为插件添加到核心应用程序,从而提供可扩展性以及功能分离。

微内核架构模式由两种类型的架构组件组成:核心系统和插件模块。

  • 插件模块,提供应用程序功能和自定义处理逻辑的可扩展性,灵活性和隔离性。

  • 传统上,微内核架构模式的核心系统仅包含使系统运行所需的最小功能。

微内核架构模式的最佳示例是Eclipse IDE。下载基本的Eclipse产品为你提供的只是一个编辑器功能。但是,一旦开始添加插件,它就会成为高度可定制和有用的产品。

优点:

  • 极大的灵活性和可扩展性

  • 一些插件允许在应用程序运行时添加

  • 良好的便携性

  • 易于部署

  • 能够快速响应不断变化的环境

  • 插件模块可以单独进行测试。

  • 高性能,因为你可以自定义和简化应用程序以仅包括所需的那些功能。

  • 应用场景

  1. 从不同来源获取数据,转换数据并将其输出到不同地方的应用程序

  2. 工作流应用程序

  3. 任务类应用程序

2.微服务模式 (Microservices Pattern )

当你将应用程序作为一组微服务编写时,实际上就是在编写可以协同工作的多个应用程序。其中每个微服务都有自己的职责,团队可以独立于其他微服务进行开发。这些微服务之间唯一的依赖就是通信。当微服务彼此通信时,你必须确保它们之间发送的消息能够向后兼容。

优点:

  • 可以分别编写,维护和部署每个微服务

  • 易于扩展,因为你可以仅扩展需要扩展的微服务

  • 更新迭代应用程序的各个部分比较容易,因为它们较小,并且与其他部分的耦合较少

  • 团队成员能快速响应且富有成效

  • 高度可维护和可测试–微服务模式满足快速频繁的开发和部署

  • 可独立部署–无需与其他团队协调即可部署其服务

应用场景:

  • 小型网站

  • 边界明确的企业数据中心

  • 快速发展的业务

  • 多部门协作的开发团队

3.分层架构模式( Layered Architecture Pattern)

最常见的架构模式是分层架构模式。分层体系架构模式是n层模式,其中软件系统组件根据职责被设计在不同的层中。

这是大多数软件的传统设计方法,并且具有独立性。这意味着所有组件都是互连的,但彼此之间不依赖。分层体系架构模式的每一层在应用程序中都有特定的角色和职责。例如,显示层将负责处理用户界面交互逻辑,而业务层将负责执行与请求关联的特定业务规则。

分层体系架构模式的强大功能之一是,组件之间职责分离。特定层中的组件仅处理与该层有关的逻辑。

优点:

  • 高可测试性,每一层都可以单独测试。

  • 高度易于开发,因为这种模式众所周知,并且实现起来并不太复杂,而且大多数公司都通过逐层分离技能来开发应用程序,这种模式已经成为大多数业务应用程序开发的自然选择。

  • 可维护

  • 易于单独更新某一层

应用场景:

  • 标准业务线应用程序,其功能不只是CRUD操作

  • 需要快速构建的新应用程序

  • 适用于经验不足的开发团队

  • 需要严格的可维护性和可测试性的应用

4.基于事件的模式(Event-based Pattern)

这是用于开发高度可扩展系统、最常见的分布式异步架构模式。该架构模式由用于监听并异步处理事件的一系列组件组成。事件驱动的架构模式构建了一个接收所有数据的中央单元,然后将其委托给处理特定类型的单独模块。

优点:

  • 容易适应复杂,经常混乱的环境

  • 弹性伸缩

  • 当出现新的事件类型时,很容易扩展

应用场景:

  • 具有异步数据流的异步系统

  • 用户界面交互

5.基于空间的架构模式(Space-based Pattern)

基于空间的架构模式,可以专门用于解决软件系统的伸缩性和并发性问题。

对于用户访问量经常发生变化、偶尔出现高并发的应用程序,这是一种有用的软件架构模式。这种模式,通过消除中央数据库约束,并使用复制基于内存的数据网格来实现伸缩性。

基于空间的架构模式旨在通过在多个服务器之间拆分处理和存储数据,来避免高负载下的软件系统功能崩溃。

优点:

  • 能够快速响应不断变化的环境。

  • 尽管基于空间的架构模式通常不是分布式,但它们是动态的,并且基于云的复杂工具允许将应用程序轻松“推送”到服务器,从而简化了部署。

  • 通过内存中的数据访问和此模式中内置的缓存机制可实现高性能。

  • 高可伸缩性来自于对集中式数据库的依赖很小或根本没有依赖的事实,因此提高了可伸缩性。

应用场景

  • 数据量大的应用程序,例如用户日志

  • 低价值数据,偶尔可能丢失而不会造成严重后果

  • 社交类的应用程序



后台回复“加群”,带你进入高手如云交流群


推荐阅读:

5个基本Linux命令行工具的现代化替代品

齐全了!Linux开发运维常用调试排障工具

几款实时查看网卡流量的工具

从零认识 iptables

Linux常用命令 &  实用命令万字总结

容易被遗忘的10个Linux命令,很实用!

阿里云出品的《深入浅出k8s》手册下载

用动图展示 10 大 Git 命令

经典!服务端TCP连接的TIME_WAIT过多

Linux萌新和老司机都必备命令查询工具

8 个问题彻底搞透 DNS 协议

三张图彻底搞懂iptables和netfilter

别再说你不懂Linux内存管理了

强烈安利的几款画图工具

故障排查:K8s中Pod无法正常解析域名

网络排错大讲解~

HTTP/3 原理实战

Linux 下10个帮助你调试的命令

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载



喜欢,就给我一个“在看”



10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024」,即可免费获取!!

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存