前端指令后端开发系统入门知识总结
1. Web / 应用程序服务器
Web 服务器
服务器:使用http
协议向 Web 提供内容的 Web 服务器。应用程序服务器
:托管和公开业务逻辑和流程的应用程序服务器。
1.1 服务器端语言
代码可以用不同的服务器端语言编写:
- 例如
Node.js、Python、PHP、Java、C# Ruby 。
- 每种语言都有自己的“Web 框架”(例如基于 Java 的 Spring、基于 Ruby 的 Rails、基于 C# 的 ASP.NET MVC 或基于 Node.js 的 Express)。
- 这些框架允许开发人员编写更少的代码来处理数据请求。
1.2 选择后端语言
其实,每种后端语言都有不同的特点,也有各自的拥护者。哪种语言最适合介绍后端语言一直是一个悬而未决的问题。不过,为了对每种语言有一个非常简单的概念,下面列出了每种语言比较常提到的特性、开发过程中比较被诟病的点以及使用该语言开发的网站。作者:
PHP
:
- 它是最受众多用户欢迎的后端语言。
- 易于学习,但因一些旧设计而受到批评。
- 网站示例:
Facebook
、WordPress
、新浪微博。
Java
:
- 古老的语言,发展的统治者。国内外工作需求稳定,应用层次广泛。
- 开发比较慢,不太适合新手。
- 网站示例:
Linkedin
、亚马逊
、淘宝。
Ruby
:
- 发展迅速,国内外许多训练营都用这种语言教授后端。
- 是否适合初学者学习还有待商榷。
- 网站示例:
Airbnb
、Twitter
。
Python
:
- 语法简单易学,有很多与数据分析和数据探索相关的应用。
- 与单独使用Python相比,运行性能较差。
- 网站示例:
Instagram
、Reddit
、知乎。
JavaScript(Node.js)
:
- 前端和后端都可以使用JS,在高并发情况下执行效率极高
- 不适合CPU应用初学者首选公司
- 网站示例:
Yahoo
,Walmart :Google
强烈推荐,它有一个非常标准库齐全,性能强悍C系列。- V目前学习资源很少(感谢Bilibili的好帖子,真的很棒)
- 示例网站:
Google❙ 、哔哩哔哩里程、今日头条、腾讯云
1.2 Web 服务器
即
Web 服务器
,除了托管您自己的应用程序代码之外,一些 Web 应用程序架构还使用“Web 服务器进程”,例如 ‽Ap‷❝‽ 或Nginx。这些服务器进程在访问后端代码之前拦截客户端请求。使用它们有几个原因:- 快速重定向某些请求,而无需通过后端代码(带有 404 状态代码的页面)。
- 静态内容(例如图像、
CSS
、JS
)在后端的存储速度比通过 Web 服务器访问文件时更快。 - 一些服务器端语言(例如
PHP
)没有内置生产级别Web浏览Web 服务器进程启动。
此时就出现一个问题:
Apache
、NginxTcat、♷、
Node.js
和有什么区别?引用:apache、node.js、nginx、cat。谁能帮我分析一下其中的关系?
这是一回事,但又不一样。
首先,两者都可以创建
网络服务器
,但他们的侧重点不同。Tomcat
只能与Java
一起使用,只能与‾JavaScript 一起使用。
Apache
可以与其他语言一起使用(通常与PHP
),但需要不同模块的帮助。Nginx
是通过端口转发的,所以Apache
和和Nginx‾可以在不同的编程语言中使用NginxNginx 和 Apache。是一个纯粹的
web
服务器,没有解析动态语言(例如php文件和js文件)的能力。TomCat
和node.js
能够分析这种脚本语言,提供应用服务,Web Server
是另一个功能。
1.3 Web服务器(运营商)的形式
服务器计算机
Web
ⓝ❙本身可以有以下几种形式: ❀ 虚拟专用服务器,我们通常称之为VPS(如华为云、阿里云等)
VPS实际上是一个独立的服务器,分为几个部分,每个部分作为单独的VPS服务器出售和使用。换句话说,它是一个相对独立的机器,可以运行多个Web应用程序(网站、软件等),并且每个用户都拥有一些资源。
- 托管虚拟机实例(例如 AWS EC2、Google 计算引擎)
- 平台即服务 (PaaS) 主机、云服务提供商(例如 Heroku、AWS Elastic Beanstalk) " //user- gold- cdn.xitu.io/2019/4/24/16a4fd1ebd1225d9?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" height="20" data-width ="500" data- height="269" />
VPS
是基于软件层的虚拟化技术,即操作系统虚拟化,VM层采用虚拟化技术,主机
和VM
是使用vmware 服务器
创建。1.4 Docker、虚拟机和物理机
docker容器和虚拟机有什么区别?
用比喻来简单解释:
1。物理机是这样的:
2。虚拟机如下:
3。医生是这样的:
2。负载均衡器:
负载均衡器
负载均衡器是高可用网络基础设施的关键组件。使用负载均衡,我们通常可以部署多个应用服务器,然后加载用户请求,将请求分发到不同的服务器,以提高网站、应用程序、数据库或其他服务的性能和可靠性。
负载均衡模型一般分为两类:第 4 层(传输层)和第 7 层(应用层)。
第 4 层(传输层): :
- 适用于网络和传输层协议(IP、TCP、FTP、UDP)中的数据。
- http协议我不懂,它对应的是其他TCP应用比如ERP等C/S上开发的系统。
第 7 层(传输层)::
- 基于应用层协议(例如 HTTP)中的数据分发请求。
- 了解http协议,所以它的应用范围主要是B/S上开发的系统,比如众多的网站或者内部信息平台。
负载均衡器主要分为两类:硬件负载均衡和软件负载均衡。
- 硬件负载均衡器:对应第四层,如 F5 负载均衡器
- 软件负载均衡器:对应第七层,如LVS、LVS Nginx
HAproxy
两种类型的负载均衡器都会接收请求,并根据配置的算法将这些请求分发到特定的服务器。一些行业标准算法包括:
- 循环法、
循环法、RR
- 加权循环法、
加权循环法、WRB'''' 最少连接数
- 最短响应时间、
最低响应时间
在Web
应用程序中使用负载均衡器有两个主要优点: ♷ 它的工作原理是确保单个♷服务器不会被有助于维护的所有请求淹没。响应次数一致,因此每个请求的处理速度都会相对较慢。
3。域名解析系统,DNS
当用户在地址栏中输入URL
时,浏览器会从域‽‾获取‾,并调用 DNS 。 DNS 转换发回 Web 服务器 IP 地址的位置(例如 172.217.23.4)。一旦获得 IP 地址,它就可以向网页发送实际请求。
- 如果您的Web应用程序使用负载均衡器,您应该将域名配置为指向负载均衡器的域名或IP地址。
- 如果您没有使用负载均衡器,可以将域名直接指向应用服务器的域名/IP地址。
大多数互联网域名注册服务商(如GoDaddy
、万网等)都提供DNS管理控制台。这些允许将域名(和子域)配置为指向您的应用程序的位置。
如果您愿意,您还可以将域名服务器转移到阿里云、腾讯云等云提供商并从那里进行管理。这样做的优点是应用程序环境的所有配置都集中在一处并且更容易自动化。
4。 HTTPS/SSL
证书
如果您正在构建 Web 应用程序(或静态网站),则必须通过 HTTPS 提供服务,以确保用户和服务器之间的安全通信。现在使用 HTTPS
也有好处 SEO
所以没有理由不使用它。
这意味着您需要在后端安装SSL证书。具体来说,它们需要安装在作为客户端请求的第一个联系点的任何服务器上。这通常意味着负载均衡器和 CDN 服务器,但如果您不使用负载均衡器,它也可能是应用程序服务器。
- 您可以使用
LetsEncrypt
免费生成证书。 - 如果您使用云基础设施,则可以使用托管服务,例如
AWS 证书管理器
。这允许您生成并自动续订 SSL 证书,并将其分发到应用程序服务器、负载均衡器和 CDN 服务器。 - 浏览器仅识别中型和大型
HTTPS
CA,否则会显示为危险并需要手动信任。
目前,SSL 证书根据验证级别分为三种类型:
- 域名 SSL 证书,简称 DV SSL
- 企业 SSL 证书,简称 OV SSL Ⓚ 简称 EV SSL。
- 它们之间有一定的区别,认证级别也不同。每个都适合安装不同大小和类型的网站。
商业网站一般使用多个OV SSL证书,价格适中,在大众用户可以接受的范围内。
5。数据库,数据库
几乎所有 Web 应用程序都需要在某个地方存储数据。在大多数情况下,某处存在某种形式的数据库。数据库的主要任务是将数据可靠地存储在持久存储中,并通过查询实现数据检索。它还可以对其存储的数据结构实施某些规则限制。
5.1 数据库类型
早期流行的数据库模型有三种,即层次数据库、网络数据库和关系数据库。
当今互联网上常用的两种主要数据库模型,即关系型(SQL)数据库和非关系型(NoSQL)数据库。
- 关系数据库(例如
MySql、Postgres、SQLServer、Oracle、SQLite
)已存在 40 多年,是大多数 Web 应用程序的支柱。 - 在过去十年左右的时间里,NoSQL 数据库(例如 MongoDB、Cassandra、CouchDB、DynamoDB)在 Web 应用程序中变得越来越常见,这主要是由于其可扩展性优势和性别灵活的数据结构。
5.2 数据库部署
您可以将数据库托管在单个服务器上,但在生产场景中,更常见的是将其托管在由 2 台或更多服务器组成的某种形式的集群上。这可确保数据库的高可用性并降低数据丢失的风险(例如,如果一台服务器的存储损坏)。
近年来,一些托管在云中的“无服务器数据库”已经可用。这些是可以通过 API 调用的数据库,但无需设置服务器来托管它们。除了处理自动备份之类的事情之外,云提供商还会以无形的方式为您完成这些工作。例如,其中包括 DynamoDB (NoSQL)
、Firebase
❙❙‾❙❙ Aurora 无服务器(关系)。?从架构上来说,它们都很相似。
基础数据库服务器解决方案分为三种:
- 一主一备架构(主备)
- 一主一从架构(主从) -Mu从架构(主从)主类型)
1。一主一备架构(主备式)
主备架构是两机部署最简单的架构。市场上几乎所有数据库系统都附带它。此主备功能。
思路也很简单:
- 将数据库部署在两台机器上,其中一台(代号A)作为提供日常数据读写服务的机器,称为“主机”。
- 第二台机器(代号B)不提供在线服务,但会实时同步“主机”数据,称为“备机”。
- 当“主机”出现故障时,手动将“主机”下线,并将“备机”更改为“主机”,继续提供服务。
这种架构的优点和缺点都很明显。优点是几乎不需要开发和修改。各种数据库都支持这种模式。它的部署和维护也很简单,不会引入额外的系统复杂性和瓶颈。
但缺点是当“主机”出现故障时,需要人工干预。运维同学要求很高,处理可能不及时。另一个缺点是主备架构会造成严重的资源浪费。毕竟与“主机”配置相同的“备机”需要长期保留,但并不是作为在线服务使用。你说浪费,其实也不浪费。 。
为了解决这个资源浪费的问题,我们需要想一个同样使用“备机”的解决方案:主从架构。
2。一主一从架构(主从)
主从架构大体上与上述的主从架构类似。不同的是,主备“备机”平时不工作,主要起到备份作用。主从“备机”改为“从机”,必须定时提供服务,始终作为“主机”工作。
- 主从架构中的“从机”虽然也随时提供服务,但它只提供“读”服务,不提供“写”服务。
- “主机”会与“从机”实时同步在线数据,保证“从机”能够提供正常的读取操作。
- 相比主备类型,该架构更节省资源。毕竟“从机”也提供服务,所以就被淘汰了。并且当“主机”发生故障时,“从机”仍然可以在人工干预之前提供数据“读取”操作。这是因为大多数业务“读”多,“写”少,所以这对稳定性产生负面影响。提升到一个新的水平。
- 缺点是架构有点复杂。毕竟“主机”和“从机”都有“读”服务,因此前端业务系统需要通过一定的策略来确定路由哪台机器来读取数据。还有一个滞后问题。从“主机”到“从机”同步数据时,不可避免地会存在一定程度的延迟。这种延迟可能会对需要大量实时数据的业务产生一些影响。
3。相互主从架构(主主型)
相互主从架构是指两台机器互为上级、下级。两台机器都提供完整的读写服务,因此无需切换。客户在呼叫时可以随机选择一项。当其中一人倒下时,另一人可以继续服役。
- 当使用相互主从架构时,一个复杂的问题是,由于双方主机都接收写入的数据,所以最后写入的数据需要与对方实时同步,并且数据需要在主机之间进行双向复制两位主人。
- 双向复制必然会带来数据延迟等问题,极端情况下还会造成一定程度的数据丢失。
- 在实际业务中,有些业务数据的一致性要求非常高,不能接受延迟和数据丢失。所以这类业务不适合互主从的模式,比如金融业务。
- 但是我们互联网业务的大部分场景还没有这么高的要求,所以这种模式在一般场景中还是用的比较多。
至于数据库集群解决方案,我还不太懂,就不写了。 。 。
6。 Blob
/ 文件存储
虽然数据库通常用于存储动态数据(例如,由最终用户或 API 客户端生成),但某些类别的数据(非结构化数据)无法由用户或用户更改基于文件,不适合数据库存储,例如:
- 图片、
Javascript
、字体、视频文件、CSS 字体等前端网站资源 。 - 用户通过表单上传的不同类型的文件。
云服务提供商不是将它们存储在数据库中,而是提供专用服务来存储这些服务,例如 AWS Simple Storage Service (S3)
、❙❙‷‷Az Google Cloud Storage 、阿里云OSS
等
优点是云提供商可以安全地存储文件,并可以创建它们的冗余副本,以最大限度地降低数据丢失的风险。
6.1 关于 Blob 存储:
Blob 存储用于:
- 直接向浏览器提供图像或文档。
- 存储文件以供分布式访问。
- 流式传输视频和音频。
- 写入日志文件。
- 存储用于备份和恢复、灾难恢复和归档的数据。
- 存储数据以供本地执行或由 Azure 托管的分析
7。内容分发网络 (CDN)
Blob
/文件存储服务允许客户端通过 HTTP
单击访问文件 。例如,您的 Web 应用程序的 HTML 标记可以简单地链接到存储在 AWS S3 中的图像和 CSS 文件的 URL。 传统网络方法:
但是,假设我的用户在中国,而我的 S3 存储在美国西部 - 数据传输距离数千英里,因此我的用户会看到延迟。
什么是CDN?使用 CDN 有哪些好处?
- CDN 是由拥有分布在世界各地的“边缘服务器”的云提供商提供的服务。
- 这些边缘服务器从“源”(例如 blob/文件存储位置)获取文件的副本。您的前端 Web 应用程序将指向您的 CDN,而不是静态资产的 Blob 存储 URL。
- 现在,客户端和“边缘”之间的距离更小,而不是来回数千英里,因此文件加载速度更快。
使用 CDN 进行 Web 访问:
7.1 CDN
工作流程
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。