写点什么

解读 5 种软件架构模式

  • 2022-02-07
  • 本文字数:1261 字

    阅读完需:约 4 分钟

解读 5 种软件架构模式

当一些人开始涉足软件工程领域,总有一天他会需要学习软件架构模式的基本知识。在我第一次接触编程的时候,我并不知道如何才能了解到现有的架构模型,这样就不会过于详尽,也不会让人感到混乱,而是非常抽象和简单的理解。


在我发现 Mark RichardsSoftware Architecture Patterns(《软件架构模式》,暂无中译本)一书之前,这个问题就一直存在。在此,我将与你分享这本书的最重要部分和架构模式。(要了解更多信息,我强烈建议你阅读这本书或他的报告

为什么作为软件工程师,至少要学习基本的架构模式?


我肯定有许多文章可以解答这个问题,但是我会告诉你一些原因。首先,如果你了解架构模式,你将更容易遵循架构师的要求。其次,理解这些模式可以帮助你在代码中作出决策:比如,如果你的应用设计是基于事件驱动的微服务,作为一名软件工程师,如果你注意到现有服务中逻辑的复杂性和责任的增加,你就必须把你的代码解耦到一个单独的服务中。(不懂的话,就跟着文中的内容走,这种模式在本文中已经做了一个简要的说明。)


Mark Richards 在他著的书中,描述了 5 种模式:


  • 分层架构

  • 驱动架构

  • 微内核架构(或插件架构)

  • 微服务架构

  • 基于空间的架构(或云架构模式)

1. 分层架构


它是单体应用最常见的架构。该模式的基本思想是将应用程序的逻辑划分为若干层,每层都封装了特定的角色。例如,持久层将负责应用程序与数据库引擎之间的通信。


图 1:分层架构模式

2. 事件驱动架构


这种模式背后的思想是将应用逻辑解耦为单一用途的事件处理组件,以异步方式接收和处理事件。这是一种广受欢迎的分布式异步架构模型,它以高可扩展性和适应性而闻名。


图 2:事件驱动架构代理拓扑

3. 微内核架构


微内核架构,也被称为插件架构,这种设计模式包含两大部分:核心系统插件模块(或扩展)。Web 浏览器就是一个很好的例子,它相当于核心系统,可以让你无限地安装扩展(或者插件)。


图 3:微内核架构

4. 微服务架构


微服务架构由单独部署的服务组成,每个服务最好都有一个单一的责任。这些服务彼此之间是相互独立的,当其中一个服务出现故障时,其他服务不会因此中断。


图 4:微服务架构

5. 基于空间的架构


基于空间的模式背后的主要思想是分布式共享内存,以缓解经常发生在数据库层面的问题。它的假设是,通过使用内存数据处理大部分操作,这样我们就可以避免在数据库中进行额外的操作,从而避免未来可能由此产生的任何问题(例如,如果你的用户活动数据实体发生了变化,你不需要改变一堆代码来持久化和从数据库中检索这些数据)


基本的方法是将应用程序分离成处理单元(可以根据需求自动扩大和缩小),数据将在这些单元之间进行复制和处理,无需持久化到中央数据库(虽然当系统发生故障时,也会有本地存储)。


图 5:基于空间的架构


你可以在我的 GitHub 账户中找到其中一些架构模式的最简单例子。以下是链接:



作者介绍:


Orkhan Huseynli,软件工程师。


原文链接:


https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2

2022-02-07 10:165268

评论

发布
暂无评论
发现更多内容

Linux vi/vim

芯动大师

vim教程 11月月更 Linux指令

完全解析大数据中MapReduce的运行流程

好程序员IT教育

大数据 MapReduce Service

华为云大数据轻量级解决方案,让数据“慧”说话

科技怪授

做电商的看过来,华为云大数据BI方案驱动业务增长

科技怪授

Prometheus 监测 RocketMQ 最佳实践

阿里巴巴云原生

阿里云 RocketMQ 云原生 Prometheus

【SpringBoot】配置文件的加载与属性值的绑定

石臻臻的杂货铺

springboot 11月月更

从传统数据治理转向主动数据治理!

用友BIP

易观千帆 | 2022年10月银行APP月活跃用户规模盘点

易观分析

报告 手机银行

超级自动化行业前景广阔——首个数字化转型国家标准发布:价值体系优化、创新和重构是数字化转型根本任务

九科Ninetech

云视频会议哪家强?华为云会议更专业“会”更好!

i生活i科技

华为云大数据平台,助力企业数字化转型成效明显

爱尚科技

华为云大数据BI解决方案助力“智能智造”

爱尚科技

W3C白皮书之小程序技术标准

FinFish

小程序 W3C 小程序化 miniapps

挖掘数据价值,华为云大数据BI解决方案有绝招

科技怪授

服务全球开发者!灵雀云与Ubuntu推出一体化云原生解决方案

York

容器 云原生 操作系统 开源生态

Kotlin类声明和构造器(constructor)

子不语Any

android kotlin 11月月更

Java通讯录管理系统

我是一个茶壶

Java 11月月更 通讯录管理系统

【web 开发基础】PHP使用自定义函数库 (39)

迷彩

web开发基础 11月月更 自定义函数 函数库引入 函数库

Spring 依赖注入有哪几种方式

千锋IT教育

人人都可以给想象插上翅膀(内含AI绘画教程)

鼎道智联

openai AI绘画 鼎道智联

Pycharm 搭建 Django 项目

千锋IT教育

论文领读|基于 VQVAE 的长文本生成

澜舟孟子开源社区

人工智能

适用场景全新升级!扩展 Dragonfly2 作为分布式缓存系统架构 | 龙蜥技术

OpenAnolis小助手

开源 架构 分布式 龙蜥技术 dragonfly2

Kotlin函数和扩展(extension)

子不语Any

kotlin Andrdoid 11月月更

易观分析:2022年Q3中国跨境进口零售电商市场规模为1124.8亿元

易观分析

报告 跨境电商

龙蜥技术委员会主席杨勇:下一代操作系统展望

云布道师

开源 操作系统

项目管理软件有哪些?

优秀

项目管理软件

2022年10月中国网约车领域月度观察

易观分析

报告 网约车

亚马逊云科技云从业者加速训练营上线啦!

亚马逊云科技 (Amazon Web Services)

培训与认证

华为云大数据BI 解决方案的超高性价比

IT科技苏辞

记一次HBASE的故障分析和排查过程

鲸品堂

大数据 11月月更

解读 5 种软件架构模式_架构_Orkhan Huseynli_InfoQ精选文章