首页 > 编程知识 正文

it前端和后端是做什么的(前端和后端哪个好找工作)

时间:2023-05-05 19:01:47 阅读:92762 作者:654

如果是想更熟悉后端的前端开发人员和程序员,学习的概念种类和数量可能会很庞大。 您可能只是想体验端到端生产APP的强大功能,而不需要其他人的帮助,或者更好地与后端团队进行沟通。 不管你的初衷是什么,多了解后端对你大有好处!

本文将介绍在web APP应用中使用的主要组件。 例如,每个组件的中心目的和好处与其他组件交互。实现这些目的的常见技术示例。

Web应用服务器

web APP服务器是执行自定义代码的地方,它处理来自客户端的请求(HTML页面或对API调用的请求)。 你的自定义代码调用其他组件发送或获取数据并将响应发送到客户端。

可以使用服务器端语言(如Node.js、Python、PHP、Java、C#和Ruby )创建此定制代码。 每种语言都有自己的Web框架。 例如,Ruby on Rails、ASP.NET MVC为c #或express为节点. js。 这些框架可以帮助开发人员减少用于处理请求的模板代码。

除了托管自定义APP代码外,还有使用Web服务器进程(如Apache http服务器和nginx )的web APP体系结构。 这些服务器进程在到达自定义代码之前阻止客户端的请求。 使用这些有几个理由。

不需要用自定义代码运行,可以快速重定向某些请求。 提供存储在Web服务器(如图像、CSS和JS )的文件系统中的静态内容要比使用自定义代码快。 某些服务器端语言(如PHP )没有内置生产级Web服务器,因此必须从专用的Web服务器进程启动。 安装了这些工具和自定义代码的Web服务器计算机本身可以采用以下格式:

一台物理机虚拟专用服务器托管的虚拟机实例(例如AWS EC2、谷歌GCE ) PaaS )主机)例如Heroku )

负载均衡

通信量的轻快的闩锁和高正常运行时间是很重要的在这种情况下,必须使用负载平衡。

负载平衡是一种从客户端接收请求并将请求传输到web APP服务器的服务器。

需要告诉传送来自客户端请求的web APP服务器的位置(IP地址或域名)。 然后,将常规的ping消息(称为“运行状况检查”)发送到每个APP服务器,以便服务器做出响应。 当负载平衡收到客户端请求时,它会使用算法(如循环法)将请求传输到下一个健康的APP服务。

在web APP应用中使用负载平衡有两个主要优点。

为了防止单个Web服务器被所有请求淹没,保持一致的响应时间,每个请求的处理速度都会变慢。 保持着高可用性。 如果服务器崩溃,所有后续的客户端请求都将路由到普通服务器,最终用户不会发现任何问题,因此将继续。 以下是负载平衡的实施示例。

HAProxy :可安装在自己虚拟机上的开源软件

域名系统(DNS)

当用户在地址栏中输入URL时,浏览器将检索URL的域部分(如www.google.com),然后调用DNS名称服务器。 名称服务器返回到站点服务器的IP地址的位置。 例如,172.217.23.4 )。 拥有IP地址后,可以向网页发送实际请求。

如果web APP应用程序使用负载平衡,则必须将域名配置为指向负载平衡的域名或IP地址。 如果不使用负载平衡,可以直接将域名指定为APP应用服务器的域名/IP地址。

大多数互联网域名注册服务提供DNS管理控制台。 可以使用它们将域名(和子域)设置为指向APP位置。

如果正在构建

HTTPS/SSL证书

web APP (或静态站点),则为了确保用户与服务器之间的安全通信,需要通过HTTPS提供服务。 现在使用HTTPS也有SEO的好处,所以没有理由不使用它。

这意味着必须在后端安装SSL证书。 具体来说,必须安装在客户端请求的第一个联系人,即服务器上。 这通常意味着负载均衡和CDN服务,但如果未使用负载均衡,则也可能是APP服务。

可以使用LetsEncrypt免费生成证书。 或者,如果您使用的是云基础架构,则可以使用托管服务。 这样,您就可以创建并自动更新SSL证书,并将其分发到APP服务器、负载平衡和CDN服务器。

数据库

大多数web APP应用程序都需要在某个地方保存数据。 大多数情况下,某个地方有某种形式的数据库。 的主要工作是确保将数据存储在永久存储器中,并允许从查询中检索数据。 也可以围绕存储的数据结构应用规则。

有许多不同的数据库实现。 但是,最多有两个高级类别。 关系数据库(基于SQL )和“无SQL”数据库。 关系数据库(如MySql、Postgres、SQL服务器、Oracle和SQLite )已经存在了40多年,并且是大多数web APP的支柱。 在过去十年左右的时间里,NoSQL数据库,如MongoDB、Cassandra、CouchDB、DynamoDB

Web应用中变得越来越普遍,主要是因为它们具有可扩展性优势和数据结构灵活性。

你可以在一台服务器上托管数据库,但在生产方案中更常见的是将其托管在某种形式的集群中的2台或更多服务器上。这可确保数据库具有高可用性并降低数据丢失的风险,例如,如果一台服务器的存储损坏。

近年来,少数云托管的“无服务器数据库”已经可用。这些是你可以通过API调用的数据库,但你无需担心设置服务器来托管它们。除了处理诸如自动备份之类的事情之外,云供应商还为你无形地执行此操作。如亚马逊DynamoDB(NoSQL),Firebase实时数据库(NoSQL)和Aurora无服务器(关系型数据库)等等。

Blob/文件存储

虽然数据库通常用于存储动态数据(例如,由最终用户或API客户端生成),但是存在某些类别的数据,这些数据不能由用户改变或者基于文件而不适合数据库存储。这方面的例子是:

前端网站资产,如图像,Javascript,CSS,字体,音频,视频文件用户通过表单上传的文件

云供应商不是将这些存储在数据库中,而是提供专用服务来存储这些服务,例如AWS Simple Storage Service(S3),Google Cloud Storage和Azure Storage等等。

这样做的好处是云供应商可以安全地存储文件,并可以为其制作冗余副本,以最大限度地降低数据丢失的风险。

“Blob”是用于表示Web应用程序用于存储其静态内容的顶级存储文件夹的术语。

内容分发网络(CDN)

Blob/文件存储服务允许客户端通过HTTP端点访问文件。例如,你的Web应用程序的HTML标记可以简单地链接到云中存储的图像和CSS文件的URL。但是,假设你的用户位于欧欧洲,而购买的云存储位于美国,数据传输距离很远,因此用户会有延迟。

CDN是云供应商提供的服务,它们在全球范围内分布有“边缘服务器”。这些边缘服务器从“原点”(例如,blob /文件存储位置)获取文件的副本。你的前端Web应用程序将指向其CDN URL,而不是指向静态资产的Blob存储URL。现在,客户端和“边缘”之间的距离更近,因此文件的获取速度更快。

常用CDN的,比如CloudFlare。

缓存服务

虽然CDN是静态文件的一种缓存形式,但Web应用可能需要临时缓存动态数据。

例如,假设存在一个数据库查询,该查询对昨天的数据进行计算,其结果每天经常被成千上万的用户访问。那么,每次用户请求此数据时都联系数据库则没有太大意义。

对此的解决方案是使用高速缓存服务在第一个用户请求之后将结果存储一段时间。通过缓存可以更快地提供对该数据的后续请求。

缓存服务本质上是一种特殊类型的数据库。上面数据库部分中基于服务器的集群注释都适用于此处。缓存采用键值存储的形式,其中键是应用程序代码用于查询数据的字符串(例如DailySiteStats_2018-12-3),值是缓存的实际数据。缓存的数据通常完全保存在内存中,这使得从缓存中检索数据的速度非常快。

常见的缓存服务如Redis和Memcached。

消息队列

有时,你需要执行的任务与响应用户请求没有直接关系。

例如,假设用户上传了你现在需要编码和水印的视频。但这是一个长期运行的任务,因此让用户在完成时等待是没有意义的。更好的方法是异步执行此操作。你网络应用程序代码会在队列中创建一条作业消息,并通知你的用户,当水印视频准备就绪时,他们将收到一封电子邮件。

然后,你将拥有一个可以执行以下操作的工作任务:

从队列中读取消息开始处理视频完成后,保存视频的编码副本向用户发送通知电子邮件从队列中删除消息

这里有2个架构组件:

应用程序将作业写入的消息队列本身从队列中读取并执行处理的工作任务常用消息队列服务的示例是ActiveMQ,RabbitMQ。

可以通过以下几种方式实现任务:

调度计划任务以触​​发应用程序服务器上安装的某些自定义代码,以便按特定计划从队列中读取每当将消息添加到队列时,使用功能即服务平台(FaaS)来调用你的工作程序代码。

功能即服务(FaaS)

功能即服务是一种可以在云基础架构上运行自定义代码的方式,无需担心配置和维护运行该代码的服务器。你可能还会听到这种称为“无服务器”计算(尽管严格来说FaaS是无服务器的一个子集)。

FaaS有很多用例:

数据处理工作后端服务集成自动化服务器维护和编排任务构建Web API服务器端HTML呈现

FaaS提供程序的示例包括AWS Lambda,Google Cloud Functions和Azure Functions等。

全栈开发的未来将更加轻松

随着无服务器技术的成熟及其局限性的降低,我相信FaaS和其他完全托管的云服务将在未来几年内在Web应用程序架构中变得更加普遍。

有抱负的全栈开发人员的好消息是,这意味着许多上述架构概念(例如应用服务器,负载平衡)将变得多余。它们的复杂性正被吸收到将使用的云服务中。成为一名成熟的全栈工程师的障碍正在降低。

这使你可以更专注于真正的商业价值所在:为用户设计和编写应用程序代码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。