写点什么

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

评论

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

OpenYurt 入门 - 在树莓派上玩转 OpenYurt

阿里巴巴云原生

阿里云 开源 容器 云原生 中间件

在线教育的发展

anyRTC开发者

AI 音视频 WebRTC 在线教育

3轮技术面+总监面+HR面轻松砍下阿里口碑Offer!

Java架构追梦

Java 面试 架构师 口碑Offer

大作业2

走走,停停……

区块链加密货币钱包系统APP开发|区块链加密货币钱包软件开发

系统开发

阿里云技术专家解读:2021 年六大容器技术发展趋势

阿里巴巴云原生

云计算 阿里云 容器 云原生 k8s

大作业一

走走,停停……

Selenium高效拍档-HtmlUnit

dothetrick

Java 自动化测试 测试开发

依赖倒置原则与单一接口隔离原则

Andy

京东面试:说说MySQL的架构体系

田维常

MySQL

数仓实时化改造:Hudi on Flink 在顺丰的实践应用

Apache Flink

flink 流计算

Spark 3.0 关键新特性回顾

hanke

大数据 spark 开源

招聘 | 腾讯云大数据,期待您的加入!

腾讯云大数据

大数据

纵观 Excel 演化史,开发者如何通过“表格技术”提升企业生产力

葡萄城技术团队

Excel SpreadJS

原始时代对分布式架构的探索

Dark

真牛!成功跳槽百度工资从15K涨到28K,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

图灵测试已过时,AI 需要新基准测试;别了Flash,Adobe播放器正式停运

京东科技开发者

云计算 AI 量子计算机

七大关于DevOps的误解,你中了几招?

禅道项目管理

DevOps 运维 开发 自动化测试

为PostgreSQL的表自动添加分区

PostgreSQLChina

数据库 postgresql 开源

重学JS | 深入理解Object,必会知识点汇总

梁龙先森

大前端 编程语言

从源码层面理解ArrayList 扩容策略

geekymv

Java 扩容 ArrayList

波场链智能合约DAPP系统开发技术

薇電13242772558

智能合约 dapp

看透Spring MVC源代码分析与实践

田维常

Java

前端异常监控 Sentry 的私有化部署和使用

智联大前端

大前端 监控 异常 sentry 错误

中国用户规模最大教育科技独角兽作业帮再获投资机构青睐

这些面试题你会吗?为什么有人说Android开发不再吃香?最全的BAT大厂面试题整理

欢喜学安卓

android 程序员 面试 移动开发

涨知识!Android面试真题解析火爆全网,搞懂这些直接来阿里入职

欢喜学安卓

android 程序员 面试 移动开发

全球台式机CPU市场二八分定型,英特尔仍旧占据全球最大份额

E科讯

GitHub 的野心,5600 万开发者的新社区

打工人 Coco

GitHub 开源 开源社区

来啦!2020 Java开源项目权威排名解读:Spring Boot排名稳定、Shiro未上榜

JavaGuide

开源 springboot springsecurity shiro

深入讲解拉链表,还怕面试官问?

大数据老哥

大数据 数据模型 数仓项目

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