50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

解读 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:165473

评论

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

人工智能|RAG 检索增强生成

测吧(北京)科技有限公司

远程控制软件怎么选?向日葵功能齐全还不限制免费使用

编程猫

【IT小知识】什么是工单?什么是工单中心?

行云管家

堡垒机 工单 IT 运维 工单中心

【论文速读】| 关于构建基于检索增强生成的聊天机器人的事实

云起无垠

fasterWhisper和MoneyPrinterPlus无缝集成

程序那些事

工具 AIGC

京东百万级调度系统(Buffalo)架构解密

京东科技开发者

企业选择IT外包服务的好处

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT外包服务商

中国AI长卷(二):框架立基

脑极体

AI

数业智能心大陆,你的专属AI心理专家

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

AI写PPT的软件有哪些?这5款备受推崇的AIPPT工具值得推荐!

彭宏豪95

人工智能 PPT 在线白板 办公软件 AI生成PPT

豆瓣评分8.6!破晓大牛仅用一份手册就把Web安全讲明白了!

我再BUG界嘎嘎乱杀

网络安全 WEB安全 网安

【实战分享】从新手到专家,六大神器加速你的代码人生

敏捷调度TASKCTL

vscode jenkins Postman TASKCTL #docker

探索网络安全:浅析文件上传漏洞

我再BUG界嘎嘎乱杀

网络安全 漏洞 文件上传

巧用 API 接口,尽览京东商品详情

Noah

2024-07-24:用go语言,给定一个整数数组 nums,其中至少包含两个元素。 可以根据以下规则执行操作:选择最前面两个元素删除、选择最后两个元素删除,或选择第一个和最后一个元素删除。 每次操作

福大大架构师每日一题

福大大架构师每日一题

论文图谱当如是:Awesome-Graphs用200篇图系统论文打个样

TuGraphAnalytics

系统整容纪:慢SQL之独家秘籍,离不可替代型人才更近一步

京东科技开发者

Shutterstock完成对Envato的收购

财见

医院采购堡垒机厂商重点推荐-行云管家

行云管家

网络安全 医院 堡垒机 等保合规

以小见大-B端图标设计沉思

inBuilder低代码平台

设计 图标制作

Mac应用快速启动器:Alfred 5 for Mac 激活版

你的猪会飞吗

mac软件下载 Mac破解软件

【YashanDB知识库】数据库使用shutdown immediate无响应导致coredump

YashanDB

yashandb 崖山数据库 崖山DB

基于Java+SpringBoot+Vue前后端分离毕业生实习与就业管理系统设计和实现

hunter_coder

后端开发

MySQL 8.0 字符集与比较规则介绍

Simon

MySQL

【YashanDB知识库】filter or改写问题

YashanDB

yashandb 崖山数据库 崖山DB

【论文解读】让我们逐步验证

合合技术团队

#科技 LLM模型

【漏洞复现】Nodebb 被爆未授权拒绝服务攻击

我再BUG界嘎嘎乱杀

网络安全 漏洞 网安 漏洞复现

异构智算,打赢智算时代「牧野之战」

脑极体

AI

微前端父子应用及兄弟应用间组件或方法共享方案

京东科技开发者

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