AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

「文本检测与识别白皮书-3.2」第三节:常用的文本识别模型

合合技术团队

人工智能 机器学习 深度学习 模型 文字识别

软件测试面试真题 | 说一下常用的控件定位方法

测试人

软件测试 面试题 web测试 元素定位

扒官方文档学Ts类型编程(二)

GFE

typescript 前端

扒官方文档学Ts类型编程

GFE

typescript 前端

详解 Serverless 架构的 6 大应用场景

阿里巴巴云原生

阿里云 Serverless 云原生

IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

JackJiang

网络编程 即时通讯 IM 开源im

NGINX Sprint 年度线上会议:报名通道已开启,立即预定您的 NGINX 深潜之旅

NGINX开源社区

nginx

图解vue3.0编译器核心原理

GFE

前端 Vue3

详解linux多线程——互斥锁、条件变量、读写锁、自旋锁、信号量

C++后台开发

多线程 后端开发 linux开发 C++开发

Go语言躲坑经验总结

百度Geek说

Go 企业号十月 PK 榜

字节跳动开源数据集成引擎BitSail的演进历程与能力解析

字节跳动数据平台

数据库 开源 数据开发 数据集成 企业号十月 PK 榜

NFTScan 与 Bitizen 钱包达成战略合作,双方将在 NFT 数据层面进行深度合作

NFT Research

NFT 数据基础设施

Go语言入门12—异常

良猿

Go golang 后端 11月月更

7k字,12张图,从零到一带你详解Redis

Java永远的神

数据库 nosql redis 程序员 面试

前端 30 问:愿你能三十而立

GFE

面试 前端

拥抱“大信创”浪潮,优博讯开启成长新曲线

极客天地

详解AQS中的condition源码原理

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

【愚公系列】2022年11月 Go教学课程 040-字符串处理

愚公搬代码

11月月更

图数据 3D 可视化在 Explorer 中的应用

NebulaGraph

可视化 图数据库 3D

Spring Boot「22」使用 Hibernate & JPA 持久化 Java 对象

Samson

Java hibernate Spring Boot 学习笔记 11月月更

【重磅】Serverless Devs 进入 CNCF 沙箱,成首个入选的 Serverless 工具项目!

阿里巴巴云原生

阿里云 Serverless 云原生

量化合约对冲挖矿app软件开发案例(支持测试)

开发微hkkf5566

堡垒机按什么收费?大概多少钱?有一个标准吗?

行云管家

网络安全 堡垒机 IT安全

三位技术大咖的「研发效能」实践干货

万事ONES

研发效能 课程笔记

平均110万个漏洞被积压,企业漏洞管理状况堪忧

SEAL安全

DevSecOps 漏洞修复 软件供应链安全 漏洞管理 漏洞优先级匹配

云转售是什么意思?哪家好?理由是什么?

行云管家

云计算 企业上云 云资源 云转售

python小知识-classmethod类方法

AIWeker

Python 人工智能 python小知识 11月月更

Discount-industrial mini pcie card/Dual Band 2.4GHz 5GHz 2x2 MIMO 802.11ac Mini PCIE WiFi Module//QCA9880 3x3 FCC/CE/IC

Cindy-wallys

QCA9880 802.11ac 3*3 2*2 2.4G&5G

分布式锁实战:基于Zookeeper的实现

小小怪下士

Java zookeeper 分布式

网络爬虫技术及应用

郑州埃文科技

网络安全 IP地址资源 爬虫技术

WEB项目如何通知用户在线更新?

GFE

前端 版本管理

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