大家好!在本手册中,您将了解软件架构这一广阔而复杂的领域 。
当我第一次开始编码之旅时,我发现这是一个既令人困惑又令人生畏的领域 。所以我会尽量避免你的困惑 。
在这本手册中,我将尝试为您提供一个简单、浅显、易于理解的软件架构介绍 。
我们将讨论软件世界中的架构是什么,您应该了解的一些主要概念,以及当今使用最广泛的一些架构模式 。
对于每个主题,我都会给出一个简短的理论介绍 。然后我将分享一些代码示例,让您更清楚地了解它们是如何工作的 。让我们开始吧!
目录
- 什么是软件架构?
- 要了解的重要软件架构概念什么是客户端-服务器模型?什么是 API?什么是模块化?
- 你的基础设施是什么样的?单体架构微服务架构什么是前端(BFF)的后端?如何使用负载均衡器和水平扩展
- 您的基础设施所在的位置本地托管传统服务器提供商托管在云端传统的松紧带无服务器许多其他服务
- 要了解的不同文件夹结构一站式文件夹结构图层文件夹结构MVC 文件夹结构
- 结论
根据这个来源:
系统的软件架构代表与整个系统结构和行为相关的设计决策 。
这很笼统,对吧?绝对地 。在研究软件架构时,这正是让我非常困惑的地方 。这是一个包含很多内容的主题,该术语用于谈论许多不同的事物 。
我可以说的最简单的方式是,软件架构是指您在创建软件的过程中如何组织东西 。而这里的“东西”可以指:
- 实现细节(即你的 repo 的文件夹结构)
- 实施设计决策(您使用服务器端还是客户端渲染?关系型数据库还是非关系型数据库?)
- 您选择的技术(您的 API 使用 REST 还是 GraphQl?Python/ target=_blank class=infotextkey>Python 和 Django 还是 Node 和 Express 作为后端?)
- 系统设计决策(比如你的系统是单体还是被划分为微服务?)
- 基础架构决策(您是在本地还是在云提供商上托管您的软件?)
这是很多不同的选择和可能性 。更复杂一点的是,在这 5 个部门中,可以组合不同的模式 。这意味着,我可以拥有一个使用 REST 或 GraphQL 的单体 API,一个托管在本地或云上的基于微服务的应用程序,等等 。
为了更好地解释这个混乱,首先我们要解释一些基本的通用概念 。然后我们将介绍其中的一些部门,解释当今用于构建应用程序的最常见的架构模式或选择 。
需要了解的重要软件架构概念什么是客户端-服务器模型?
客户端-服务器是一种在资源或服务提供者(服务器)与服务或资源请求者(客户端)之间构建应用程序任务或工作负载的模型 。
简而言之,客户端是请求某种信息或执行动作的应用程序,而服务器是根据客户端所做的事情发送信息或执行动作的程序 。
客户端通常由运行在 Web 或移动应用程序上的前端应用程序表示(尽管也存在其他平台,并且后端应用程序也可以充当客户端) 。服务器通常是后端应用程序 。
为了举例说明这一点,假设您正在进入您最喜欢的社交网络 。当您在浏览器上输入 URL 并按 Enter 键时,您的浏览器将充当客户端应用程序并向社交网络服务器发送请求,该服务器通过向您发送网站内容来响应 。
现在大多数应用程序都使用客户端-服务器模型 。需要记住的最重要的概念是客户端请求服务器执行的资源或服务 。
另一个需要了解的重要概念是客户端和服务器是同一系统的一部分,但每个都是独立的应用程序/程序 。这意味着它们可以单独开发、托管和执行 。
如果你不熟悉前端和后端的区别,这里有一篇很酷的文章来解释它 。这是另一篇扩展客户端-服务器概念的文章 。
什么是 API?
我们刚刚提到客户端和服务器是相互通信以请求事物和响应事物的实体 。这两个部分通常通信的方式是通过 API(应用程序编程接口) 。
API 只不过是一组定义的规则,用于确定应用程序如何与另一个应用程序通信 。这就像两部?分之间的合同,上面写着“如果您发送 A,我将始终响应 B 。如果您发送 C,我将始终响应 D……”等等 。
有了这组规则,客户端就可以准确地知道完成某项任务需要什么,而服务器也可以准确地知道客户端在必须执行某个操作时需要什么 。
推荐阅读
- 事件驱动架构的优点和面临的挑战
- 在云端使用 Redis? 以下是你应该知道的十件事
- 20 个 Python 面试题来挑战你的知识
- 嵌入式开发如何入门?
- Spring Cloud Alibaba-全局配置自定义和支持的配置项
- MinIO OSS服务器的搭建和应用
- 陈萌|陈萌开车接朱小伟回家,介怀陈亚男的存在?称不愿做2婚妻子
- 小叶紫檀|盘点那些招财的翡翠!你有几件?
- 黄山最值得去的五个景点 黄山市旅游景点
- 职场中有效的抱怨是你晋升的阶梯
