10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

总结

Geek_36cc7c

熊磊:成功移植OpenHarmony到多套开发板,是最开心的事

OpenHarmony开发者

开发板 OpenHarmony

有数BI大规模报告稳定性保障实践

网易数帆

大数据 BI 网易 稳定性保障

Nebula Graph|如何打造多版本文档中心

NebulaGraph

数据库 图数据库 NebulaGraph

RocketMQ—Producer(五)路由队列选择

IT巅峰技术

架构 RocketMQ java

金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

战“码”先锋直播预告丨如何成为一名优秀的OpenHamrony贡献者?

OpenHarmony开发者

OpenHarmony 贡献代码

javascript 中搜索数组的四种方法

CRMEB

银行RPA趋向主动触发流程,补足营销场景执行末端的渠道协同能力

易观分析

银行 市场营销

前端常用的站点导航

刘帅强

一种经典的客户关系管理系统(CRM)订单模型的设计与实现

汪子熙

CRM SAP 客户关系管理系统 5月月更 订单模型

Linux下玩转nginx系列(五)---nginx实现负载均衡

anyRTC开发者

nginx Linux 负载均衡 音视频

百问百答第38期:关于nginx监控,我们这样做

博睿数据

博睿数据 nginx监控

2022年5月中国数据库排行榜:openGauss 黑马首登顶,AntDB 冲进20强

墨天轮

数据库 opengauss TiDB oceanbase 神通

druid 源码阅读(八)Druid 回收连接

爱晒太阳的大白

5月月更

钱卫宁:开源是培养数据库人才的关键|OceanBase 数据库大赛访谈

OceanBase 数据库

oceanbase 数据库大赛

Hoo研究院 | 币圈后浪—PRISM

区块链前沿News

Hoo

稳扎稳打步步为营 英特尔GPU将在消费市场和数据中心全面开花

科技新消息

互联网出海企业数据库选型问答实录

OceanBase 数据库

云数据库 oceanbase 互联网出海

龙蜥开发者说:我的操作系统之路,坚持从实践中来,到实践中去 | 第6期

OpenAnolis小助手

Linux 开源 操作系统 龙蜥社区 龙蜥开发者说

【云计算】云计算四个必学知识看这里!

行云管家

云计算 云服务 企业上云

OpenHarmony 3.1 Release版本关键特性解析——Enhanced SWAP内存管理

OpenHarmony开发者

内存管理 OpenHarmony

堡垒机4a认证是什么意思?是指哪4a?

行云管家

云计算 网络安全 堡垒机 堡垒机认证

马斯克推崇的柏拉图式元宇宙,PlatoFarm早已验证出答案

股市老人

AIRIOT物联网低代码平台如何配置三菱PLC驱动?

AIRIOT

物联网 PLC 驱动配置

对话ACE第三期有奖调研

OceanBase 数据库

数据库 对话ACE Oracle ACE

爱番番微前端框架落地实践

百度Geek说

前端

CRM系统帮助企业有影响力的营销

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

学Python运维,这知识点你肯定会遇到,【必收藏之】nginx 域名跳转相关配置

梦想橡皮擦

5月月更

前端工程化之FaaS SSR方案​

百度Geek说

前端

CUDA优化之PReLU性能调优

OneFlow

性能优化 cuda PReLU 朴素实现

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