后端到底是什么零基础入门
后端到底是什么(零基础入门)
任何连接到互联网的计算机(包括你的计算机和我的计算机)都可以通过互联网向另一台也连接到互联网的计算机发送消息。因此,为了简化事情,亚马逊在其办公楼的某个地方有一台计算机,我们的计算机将向该亚马逊计算机发送一条订单的消息。在这种情况下发送消息的计算机称为客户端,接收消息的计算机称为服务器。但在此之前,计算机默认无法接收来自互联网的消息,我们必须对它们进行编程才能接收消息。为此,我们需要一种后端编程语言。
几乎每一种编程语言都具有将计算机变成服务器并允许其接收消息的功能
流行的后端编程语言:
JavaScript(有时称为NodeJS)
python
Ruby
Java
使用后端编程语言实际上非常困难,并且需要大量代码。因此,我们使用两种工具来帮助解决此问题。
后端框架和包管理器
后端框架
backend Framework(帮助我们更容易地创建服务器,并且使用更少的代码,每种后端编程语言都有几种不同的框架可供选择)
最流行的框架有:
ExpressJS
Python Django
Ruby on Rails
Java Spring
包管理器 package manager
我们还使用许多其他人编写的称为包的代码来执行常见任务,例如计算、与数据库通信以及设置用户登录和身份验证。我们通常在后端使用很多包,为了安装和管理这些所有包,我们使用称为包管理器的东西,每种语言都有自己的包管理器
最流行的包管理器
JavaScript的NPM
用于python的PIP
Ruby:bundler
Java:maven
创建后端服务器所需的所有技术
Backend Programming Language
Backend Framework
Package Manager
数据库
下一个问题是我们需要在某个地方来保存我们网站的数据。
回到我们的亚马逊示例,数据可能意味着我们的用户数据,例如登录信息、订单、历史记录以及在亚马逊上销售的所有产品的数据、描述、评级等评论。为此,我们使用数据库。 数据库帮助我们存储和管理数据 。它只是一个通常运行在不同计算机上的软件,我们必须进行一些设置,以便我们的后端可以与数据库进行通信。
最流行的数据库:
MySQL
PostagreSQL
MongoDB
只需一台服务器和一个数据库就可以构建大部分项目。
这些基本上就是后端所需的全部内容。
例如,以下是我们的亚马逊场景的运作方式。当客户在前端下订单时,前端会向后端发送包含订单的消息。然后后端将订单保存到数据库,并向前端发回一条消息确认订单已创建。
前端发送到后端的消息称为请求Request
后端发回的消息称为响应Response
这称为请求响应周期,这通常是web应用程序的工作方式。
另一个例子
假设在亚马逊仓库中,仓库可能有不同的前端,它向后端发送请求,然后后端从数据库中获取我们的订单并将其发送回仓库前端,然后他们继续准备我们的订单
了解了整体流程,将更深入了解请求中的内容
例如:
POST https://amazon.com/orders
{
"order":[
{
"id":"037d0156",
"name":"Adidas Shoes",
"quanticy":1
},
{
"id":"994c97a1",
"name":"Amazon Essentials Socks",
"quanticy":2
}
],
"paymentMethod":"creditCard1",
"deliveryAddress":"address1",
...
}
在这里可以看到订购的商品、数量以及有关亚马逊订单的一些其他信息。在顶部,我们有请求的类型、域名和 URL 路径。这描述了该请求的去向以及该请求的类型。首先是亚马逊,该公司购买了域名 amazon.com,并对其进行了配置,以便任何前往 amazon.com 的请求都将被重定向到其办公楼中的该服务器。这就是我们向 amazon.com 发送此请求的原因。
类型和请求路径
类型
在这个例子中,这是一个削减订单的发布请求。在后端,我们使用编程语言和后端框架来定义允许哪些类型的请求以及我们应该如何处理这些请求。例如,我们可以允许后斜杠订单请求,每当我们收到后斜杠请求时,我们将使用我们的编程语言创建一个订单并将其保存到我们的数据库中。我们还可以允许获取斜线订单请求,在这种情况下,我们将从数据库中检索订单历史记录并将其作为响应发送回来。另一个例子是删除斜线订单请求,我们将取消订单。因此,后端允许的所有不同类型的请求的列表称为 API 应用程序编程接口 。
API 是后端编程中最重要的概念之一。如果您发送 api 不允许的请求,后端将返回错误。所以我们前面提到我们可以使用类型和 URL 路径来识别请求。
请求类型我们可以选择,比如 post、get、put、delete,URL 路径可以是任何我们想要的。
关于斜杠后订单。这只是我们请求的命名约定。这个命名约定称为剩余表征状态转移。
在其余情况下,请求的类型具有特殊含义。所以 post 意味着创建一些东西,在这种情况下,pote 斜杠 orders 意味着创建一个订单,get 意味着获取…
使用 REST 命名约定的 API 称为 REST api .REST 是我们用于 API 的最常见约定,但我们还可以使用其他几种约定。其中一种称为 GraphQL,它使用 post/graphql 来处理我们的所有请求。
另一种称为 rpc,它使用 post 和更详细的 D url 路径。例如后斜杠创建订单或后斜杠获取订单历史记录
基础设施
公司不是购买自己的计算机来运行网站,而是从云计算公司租用计算机。
最大的云计算公司是 AWS、Amazon Web Services、GCP、Google Cloud Platfrom 和 Microsoft Azure。
云计算的基本思想是租用一堆计算机。这也称为 IAS 基础设施即服务。在幕后,AWS 有一个巨大的强大的计算机,在它的软件内部,它运行着许多较小的计算机,我们实际上租用了其中一台较小的计算机,而这些较小的计算机只存在于这些软件中,所以我们称之为虚拟机。因此,为了运行我们的网站,我们从 AWS 租用了一个虚拟机来运行我们的后端,我们还租用了另一个虚拟机来运行我们的数据库。我们必须解决的另一个问题是,如果我们的网站在假期期间非常受欢迎,并且我们开始收到服务器无法处理的大量请求和互联网流量,该怎么办?
通过云计算,我们可以设置多个运行这些相同后端代码的虚拟机,然后在它们前面设置一个特殊的虚拟机,称为负载均衡器,负载均衡器将在我们的虚拟机之间均匀分配请求。
假期结束后,我们可以在不需要虚拟机时关闭它们。这比购买物理计算机要容易的多,如果假期结束,您仍然拥有购买的物理计算机,但我们还有另外一个问题。
我们现在有很多虚拟机需要创建和设置,这需要花费大量的时间和精力。云计算公司提供另一种称为 PA 的服务,作为一种服务,PA 只是让我们上传后端代码。它将设置所有虚拟机,包括负载均衡器,并为我们集成一切。
微服务
以亚马逊为例,假设我们的后端包含将订单保存到数据库、向用户的信用卡收费、并发送电子邮件确认的代码。在现实世界中,这个后端可能有数百万行代码,所以我们将其分为三个代码库。
Saves orders
Charges credit cards
Sends emails
然后,当我们需要发送电子邮件时,我们的订单后端将向电子邮件后端发送请求,电子邮件后端将发送电子邮件。
因此,像这样将我们的后端分成单独的后端称为微服务,它有助于使我们的代码库更小、更集中。每个微服务不必使用相同的编程语言和数据库。一个微服务可以使用 JavaScript 和 MongoDB,而另一个微服务可以使用 Python 和 MySQL。现在,为了让这一切变得更加容易,Twilio 这样的公司已经创建了电子邮件服务。因此 Twilio 提供了一个后端和一个用于发送电子邮件的 API。因此,我们的后端无需创建自己的电子邮件微服务,只需向 Twilio 的后端发送请求即可。当一家公司提供外部应用程序可以使用的后端和 API 时,这称为 SaaS,即软件即服务
云计算的三个基础
laas Paas SaaS
基础设施即服务 平台即服务 软件即服务
大多数公司使用云计算来运行其网站的后端,而不是自己购买和管理物理服务器。