网易首页 > 网易号 > 正文 申请入驻

架构师必须了解的 5 种最佳软件架构模式

0
分享至

作者 | Terasol Technologies

译者 | 平川

策划 | 闫园园

本文最初发布于 Terasol Technologies。

世界变得越来越依赖软件,软件系统已经渗透到了人类生活的方方面面,并带来了很多便利。从移动应用(用于和人联系),到医疗应用和深度学习模型,到金融技术系统,再到智能建筑(利用技术来自动化许多功能)。

为了提供所需的解决方案并获得最佳效果,必须使用恰当的架构来开发这些软件系统。

模式是特定于问题上下文的解决方案。

架构模式是针对特定环境中常见软件架构问题的通用且可重用的解决方案。

软件缺陷对组织业务有很大的影响。所有软件失败的主要原因都是选择了不恰当的软件架构模式,企业经常在没有正式架构的情况下启动应用程序开发。

然而,经常被忽视的一个事实是:缺少架构设计会迫使开发团队选择一个没有指导原则的典型模式。最终的方案将缺乏明确的角色、职责以及相互之间的依赖关系。

让我们看个简单的例子。

网上银行应用不需要像微服务范式那样复杂的设计。对于检索请求,创建一个客户端 - 服务器架构就够了。然而,如果没有这样的规划,应用程序就可能会变得复杂,而且没有办法回头,或者有可能在重构过程中损失大量的投资。

在本文中,我们将看看什么是软件架构模式,并对其中一些模式进行详细介绍。请记住,可以在单个系统中使用许多模式,用最好的设计来优化每一部分代码。

尽管我们称之为计算机科学,但它时常是一门艺术。

让我们来看看到底什么是软件架构模式。

什么是应用架构模式?

考虑一个涉及营销 App 开发的软件项目。

要创建这个应用,必须首先确定其设计与架构,因为这是核心,应用的其余部分将以此为基础进行创建。例如,服务间将如何通信或支付集成将如何运转?如何用一个算法来推荐供应商的服务?诸如此类,不胜枚举。

几十年前,可以应对这些挑战的模式还很有限。然而,软件开发发展到现在,我们已经拥有了大量的架构模式,可以为不同类型的应用提供特定的好处。

软件架构模式是一般软件工程问题的重复性解决方案。在之前介绍的杂货店应用设想中,我们可以重用已经指定的产品建议算法,并对它们进行修改,以满足应用的需要。

用来实现推荐模块的软件架构只是整个架构模式的一部分。

现在,我们已经知道了什么是软件架构模式,让我们再看看为什么要使用它们。

为什么要使用软件架构模式?

以下是软件开发公司在创建应用程序或软件时必须应用软件架构设计模式的三大原因:

1. 构建更优的系统

使用架构模式,我们可以创建具有可转移性的模型。这些模型可以重复使用,这有利于形成一个可伸缩、可扩展的最优结构。

2. 简化设计修改

取决于所使用的模式,大多数架构模式能够在开发的早期阶段进行修改,从而形成一个灵活、鲁棒、无错误的核心架构模式。

3. 便于利益相关者沟通

软件架构模式是系统的基本抽象,利益相关者可以基于它进行沟通、协商,从而相互理解并达成共识。

现在,软件架构模式的意义已经明确,让我们来看 5 种流行的软件架构设计模式,以及可能应用在开发的什么地方。

5 种最佳软件架构模式

让我们看几种流行的软件架构模式,许多软件公司用它们开发应用和软件。

分层软件架构

顾名思义,这种设计中的组件(代码)被划分为子任务层,多个层叠加在一起。这可能是最常见的策略。因为它通常是围绕数据库构建的,所以许多商业应用程序自然都将信息存储在表中。

这几乎是一个自我应验的预言。许多最流行、最好的软件框架,如 Java EE、Drupal 和 Express,在设计时都考虑到了这种结构。因此,用这些框架构建的许多应用程序自然具有了分层结构。

有时候,这被称为“N 层架构”。下面的设计总共包含 4 层。

  1. 展现层:这是用户界面层,我们可以在这里查看以及向应用程序输入数据。

  2. 业务层:这一层按照服务器请求执行业务逻辑。

  3. 应用层:这一层是作为“展现层”和“数据层”之间桥梁。

  4. 数据层:这一层使用数据库来管理数据集。

什么时候应该使用分层软件架构模式?

分层架构流行的原因有很多。我们可以从以下场景 / 需求来考虑:

  • 当开发人员较少而又要快速创建一个应用程序时。

  • 以可维护性和关注点分离作为架构基石的应用程序。

  • 必须遵守传统 IT 结构和流程的企业级应用程序。

分层架构模式适用于:

  • 亚马逊式的电商 Web 应用开发。

  • 一般桌面应用程序。

微内核软件架构

微内核软件架构模式的另一个名称是插件式软件架构模式。通常,软件团队会在开发具有可替换组件的系统时使用。微内核模式由两个基本组件组成:

  1. 核心系统处理应用程序最基本、最简单的操作。

  2. 插件模块处理其他的功能以及做专门处理。

假如你已经成功开发了一个聊天应用程序。该应用程序的核心功能是,你可以与世界各地的人互发文本,而且不需要连接到互联网。一段时间后,你想在应用程序中添加语音信息功能,并实现了预期的功能。因为微内核模式允许以插件的形式添加功能,所以你才能够将这个功能添加到一个已经投入使用的程序中。

什么时候应该使用微内核架构模式?

  • 应用程序的基本例程和高阶规则之间有明确的边界。

  • 应用程序有一套固定的核心例程和一个必须定期更新的动态规则集。

  • 它非常适合分布式开发团队。

微内核架构模式适用于:

  • 基于产品的应用及调度应用。

  • 企业级应用,因为其所追求的适应性、可扩展性和可移植性。

事件驱动软件架构

事件驱动架构是一种很灵活的方法。在这种架构中,软件服务或操作是由事件触发的。

那么,究竟什么是事件?

当用户在采用 EDA 构建的应用程序中执行一个动作时,会发生状态变化并产生一个反应,这个动作被称为事件。

在分层模式中,数据按照预定的顺序从一层传递到下一层。相比之下,事件驱动架构模式使应用程序模块能够在特定事件发生时做出反应。事件驱动模式分为两种类型:调停者拓扑(mediator topology)和代理者拓扑。

什么时候应该使用事件驱动架构模式?

  • 事件驱动模式最适合应用程序中的异步数据流系统。

  • 事件驱动模式可伸缩又可扩展。我们可以在不改变现有系统的情况下增加新的模块。

  • 开发人员可以使用此模式创建需要完美数据流的复杂应用程序或将逐渐增大的应用程序。

事件驱动架构模式适用于:

  • 构建 JavaScript 网站和电子商务网站。

微服务软件架构

微服务软件架构模式构建相互独立但可以彼此通信的小型程序,以实现整个系统(应用程序)的正常运行。每个微服务都有自己特定的职责,每个团队可以独立地处理自己的微服务。

它们唯一的共同点就是通信。由于微服务相互通信,所以必须确保它们之间传递的消息向后兼容。

当应用程序采用微服务风格创建时,添加新特性和更新当前微服务,都不会影响其他微服务。使用微服务模式创建的模块是松耦合的。因此,它们易于理解、修改和扩展。

什么时候应该使用微服务架构模式?

  • 毫无疑问,微服务最适合那些希望以一种更可持续的方式重写其单体系统的团队。

  • 微服务最适合数据系统规模大且快速扩张的应用程序。

  • 开发团队分散在全球各地。

微服务架构模式适用于:

  • 组件数量不多的网站和边界明确的企业数据中心,比如 Netflix。

基于空间的架构

创建基于空间的软件架构模式主要是为了解决和克服可扩展性和并发性的难题。对于并发用户数不断变化且不可预测的应用程序,它也是一种很好的设计模式。通过消除中央数据库限制,利用复制到内存中的数据网格获得高可扩展性。

基于空间的架构通过将处理和存储分布在多台服务器上,最大限度地减少高负载情况下的功能崩溃。

什么时候应该使用基于空间的架构模式?

  • 用于处理大量并发数据库访问或写入的应用程序和软件系统。

  • 必须处理可扩展性和并发性难题的应用程序。

基于空间的架构模式适用于:

适合开发电子商务或社交网站,如 YouTube。

选择最适合自己的架构模式

其他架构模式,如模型 - 视图 - 控制器模式、黑板模式、代理模式和事件 - 总线设计,在软件开发的不同方面也很有用。

对所有人来说,基本理念是一致的:定义应用程序的基本质量指标,改进产品功能,提高应用程序构建过程的速度和生产力。

希望这篇博文能帮助你了解软件架构模式的基础知识,以及它们最适合哪些应用程序,以便你可以选出最符合自己软件需求的应用程序。

查看英文原文:

https://www.infoq.cn/link?target=https%3A%2F%2Fterasol.medium.com%2F5-best-software-architectural-patterns-you-must-know-about-20ba9c54c9cd

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
为何净水器“突然没人买了”?原因有4个,看完你就明白了

为何净水器“突然没人买了”?原因有4个,看完你就明白了

小兔子发现大事情
2024-11-17 17:50:32
当不成总统了?拜登或提前下台,美有望迎来女总统,特朗普失算了

当不成总统了?拜登或提前下台,美有望迎来女总统,特朗普失算了

老白观天下
2024-11-18 12:31:21
46岁滨崎步在成都被粉丝要签名,穿深V显傲人上围,性感不减当年

46岁滨崎步在成都被粉丝要签名,穿深V显傲人上围,性感不减当年

南城无双
2024-11-18 01:11:22
华为MateX6即将官宣,11月20日,全面启动!

华为MateX6即将官宣,11月20日,全面启动!

搞机小帝
2024-11-19 00:04:36
晚上8点,国足复仇战!取胜=冲上第二,首发浮现,仅1个平台直播

晚上8点,国足复仇战!取胜=冲上第二,首发浮现,仅1个平台直播

侃球熊弟
2024-11-18 06:02:44
久保建英:我不太喜欢白鹭体育场的草坪,有点像人造草

久保建英:我不太喜欢白鹭体育场的草坪,有点像人造草

懂球帝
2024-11-18 21:08:12
成都龙泉驿区发生持械伤人案致1死,犯罪嫌疑人已被刑拘

成都龙泉驿区发生持械伤人案致1死,犯罪嫌疑人已被刑拘

新京报
2024-11-18 19:54:26
笑不活了,女生分享在上海租了个门槛极高的房子,中介都看沉默了

笑不活了,女生分享在上海租了个门槛极高的房子,中介都看沉默了

奇特短尾矮袋鼠
2024-11-18 07:32:41
马斯克与女议员开会照火了!一个转身一个趴桌上,热聊画面引热议

马斯克与女议员开会照火了!一个转身一个趴桌上,热聊画面引热议

有趣的火烈鸟
2024-11-18 21:30:19
如果不差钱,退休后首选这3座城市久居,物价低,还舒服

如果不差钱,退休后首选这3座城市久居,物价低,还舒服

枫叶的枫1516
2024-11-18 09:21:11
亮剑!中方强硬表态时,美国总统拜登的表情亮了,直接惊呆了!

亮剑!中方强硬表态时,美国总统拜登的表情亮了,直接惊呆了!

阿离家居
2024-11-17 23:36:39
巨头被曝裁员20%

巨头被曝裁员20%

鲁中晨报
2024-11-18 07:12:16
吃素的也能长成这样?

吃素的也能长成这样?

人情皆文史
2024-09-10 00:06:04
直击/Lisa高雄见面会「80分钟结束」 粉丝追星破产:户头剩1元

直击/Lisa高雄见面会「80分钟结束」 粉丝追星破产:户头剩1元

ETtoday星光云
2024-11-18 12:26:03
又一次拖累了全队的进攻!克莱已经成为了独行侠的巨大累赘?

又一次拖累了全队的进攻!克莱已经成为了独行侠的巨大累赘?

稻谷与小麦
2024-11-18 14:17:00
卢海鹏的言论再次成为全国热搜,广东网友:侄子已经不算家人了

卢海鹏的言论再次成为全国热搜,广东网友:侄子已经不算家人了

娱乐的小灶
2024-11-18 18:59:27
大墩风云后续!怂仔家被偷了,招牌被拆店铺关门,梁主任平安落地

大墩风云后续!怂仔家被偷了,招牌被拆店铺关门,梁主任平安落地

大头博士记
2024-11-18 15:26:26
11月:银行存款利率标准大改!存一万元,一年能领多少钱?

11月:银行存款利率标准大改!存一万元,一年能领多少钱?

巢客HOME
2024-11-18 09:00:03
那个冲上主席台的孩子,很勇敢

那个冲上主席台的孩子,很勇敢

燕梳楼频道
2024-11-17 13:04:55
闹大了!这究竟是福利还是负担?村民不缴医保都把基层急成啥样了

闹大了!这究竟是福利还是负担?村民不缴医保都把基层急成啥样了

奇思妙想草叶君
2024-11-17 01:18:07
2024-11-19 03:42:44
InfoQ
InfoQ
有内容的技术社区媒体
10397文章数 50897关注度
往期回顾 全部

科技要闻

小米第三季营收925亿 智能电动汽车占97亿

头条要闻

美英法授权乌使用远程武器对俄领土进行打击 中方表态

头条要闻

美英法授权乌使用远程武器对俄领土进行打击 中方表态

体育要闻

那些偷偷厉害着的家伙 杰罗姆回来了

娱乐要闻

这一夜,王骁保全了金鸡奖的体面

财经要闻

张瑜:年底可能会“突击花钱”近1万亿

汽车要闻

全新燃油MINI正式上市 20.88-30.58万元

态度原创

本地
房产
游戏
公开课
军事航空

本地新闻

重庆记忆|山城特色“过山车”上天入地穿花海

房产要闻

7.25亿!中粮拿下三亚最强商改住地块!

10款史上销量最高的GBA游戏!每一款都是童年回忆

公开课

一块玻璃,如何改变人类世界?

军事要闻

乌首次获准用美制武器打击俄纵深 攻击或在几天内

无障碍浏览 进入关怀版