尚未崩坏 发表于 2024-6-19 20:36:08

WEB后端架构的一些概念杂谈

目录

什么是框架呢?
什么是web.py
什么是接口
Web Server的soap接口
HTTP API接口
Nginx和uWSGI服务器的通讯
什么是Nginx署理服务器
什么是uWSGI接口服务器
什么是WSGI接口
CGI
fastCGI
通讯大要流程
正向署理和反向署理

什么是框架呢?

后端框架就是值用于开辟的服务器端应用程序的一些可重用的设计,通俗的来说,就是一个实现某种功能的半成品,提供一些常用的工具和底子通用化的组件。它紧张就是负责为处理业务逻辑,数据储存,通讯协议等功能提供底子的框架,实现交互功能。调用这些框架就可以实现一些常见的业务逻辑。
这些框架大多是简单高效的,能极大地提高我们的开辟服从。
一个优秀的的框架,它相当于是一个模板代码库,许多底子性的功能,底层功能操作都已经帮我们实现了,我们只需要用心的实现所需要的业务逻辑就可以了。这样,就大大提高了我们的开辟服从,以是技能的发展,多数情况下是为了满足业务的需求。
什么是web.py

web.py是一个轻量级的python web框架,为什么选择用python写呢,原因就是python的开源扩展库很丰富,能够更好的支持业务开辟,而且框架大多稳定。
什么是接口

API(Application Programming Interface)应用程序开辟接口的缩写
接口就是方法与方法、模块与模块之间的交互程序需要抛出一个调用交互操作的一个写好的方法。
或者是第三方应用程序为主程序提供一些基于数据服务的方法
Web Server的soap接口

   soap: Simple Object Access Protocol.(简单对象访问协议)SOAP定义了数据交互种如何传递消息的规则,可以类比http协议。走spap通过http传输,哀求和返回报文都是xml格式的,测试时需要通过工具举行调试和测试。现在使用的比较少见。少数公司还在使用这个接口如医院
HTTP API接口

当使用HTTP API接口时,通常会通过HTTP哀求发送数据到服务器并获取相应数据。而JSON作为数据的格式之一,在API通讯中饰演着紧张的脚色。通常情况下,客户端发起HTTP哀求时携带JSON格式的数据作为哀求体,服务器收到哀求后解析JSON数据并举行相应的处理,然后将处理结果以JSON格式返回给客户端。
在使用HTTP API接口时,JSON数据可以包含各种类型的信息,如文本、数字、布尔值、数组和对象等。通过将数据序列化为JSON格式,可以实现不同平台和体系之间的数据交换和沟通,实现数据的同一格式化表现和传递。
Nginx和uWSGI服务器的通讯

Nginx和uWSGI都是常用于Web服务器环境的软件,它们通常用于搭建和运行Python Web应用程序。但是两者在Web应用程序摆设中饰演着不同的脚色。
什么是Nginx署理服务器

Nginx是一个高性能的开源Web服务器,同时也是可以充当反向署理服务器、负载平衡器和http缓存的轻量级,高性能,可扩展的服务器。
它可以处理静态文件和传输,并将动态文件转发给uWSGI服务器。
什么是uWSGI接口服务器

uWSGI是一个Web服务器网关接口(Web Server Gateway Interface,WSGI)服务器,它能够运行Python Web应用程序。通过uWSGI,可以将Python应用程序与Web服务器举行毗连,实现Web哀求的处理和应用程序的运行。
uWSGI接收来自Nginx的动态哀求,并将这些哀求传递给Python应用程序举行处理。它提供了一个通用的方式来毗连Web应用程序和Web服务器,支持多种语言和框架。
https://img-blog.csdnimg.cn/direct/298f9fb298654ce98b958395bcd1c4ce.png
什么是WSGI接口

   WSGI是 Web Server Gateway Interface 的缩写。
它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛担当。
有了WSGI,你不消再由于你使用的web 框架而去选择特定的 web server软件。
web 服务器 和 web 框架,分工不同,职责不同(web 服务器专注于接收并解析请
求以调用的方式将请求的内容传web框架),缺一不可,可以说它们是两个组件,共
同协作才能实现web网页的访问,既然是两个组件,那总要定义一些约定俗成的通讯
协议,而这就是WSGI,所以必须有WSGI。WSGI规范下,Web服务器在转发哀求给应用程序时,会传递一些环境变量和其他相干信息给应用程序,以便应用程序能够获取一些关于哀求的额外信息,比如设备号、客户端IP地址、HTTP头部信息等。这些环境变量和信息能够帮助应用程序更好地理解和处理客户端的哀求。
一些用到的协议的解析,我看了一篇博客写的很好,跟各人分享一下:
网关协议学习:CGI、FastCGI、WSGI、uWSGI - hzhtracy - 博客园 (cnblogs.com)
CGI

是一个通用网关接口(早些年比较通用),它的工作模式是:


[*] 创建一个进程
[*] 进程处理哀求
[*] 处理结束后kill进程
   CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许 Web服务器执行外部程序,并将它们的输出发送给Web欣赏器,CGI将Web的一组简单的静态超媒体文档变成一个完备的新的交互式媒体。通俗的讲CGI 就像是一座桥,把网页和WEB服务器中的执行程序毗连起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。 CGI 的跨平台性能极佳,险些可以在任何操作体系上实现。
CGI方式在遇到毗连哀求(用户哀求)先要创建cgi的子进程,激活一个CGI进程,然后处理哀求,处理完后结束这个子进程。这就是fork- and-execute模式。以是用cgi方式的服务器有多少毗连哀求就会有多少cgi子进程,子进程反复加载是cgi性能低下的紧张原因。当用户哀求数 量非常多时,会大量挤占体系的资源如内存,CPU时间等,造成效能低下。
CGI脚本工作流程:

[*]欣赏器通过HTML表单或超链接哀求指向一个CGI应用程序的URL。
[*]服务器收发到哀求。
[*]服务器执行所指定的CGI应用程序。
[*]CGI应用程序执行所需要的操作,通常是基于欣赏者输入的内容。
[*]CGI应用程序把结果格式化为网络服务器和欣赏器能够理解的文档(通常是HTML网页)。
[*]网络服务器把结果返回到欣赏器中。
fastCGI

fastCGI的紧张工作方式可以总结为:

[*]创建主进程(worker)---
[*]创建线程(子进程)----
[*]如果哀求过多,会再创建(进程线程),过少也会调整
   FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通讯的接口。多数流行的HTTP server都支持FastCGI,包罗Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。
FastCGI是从CGI发展改进而来的。传统CGI接口方式的紧张缺点是性能很差,由于每次HTTP服务器遇到动态程序时都需要重新启动脚本解析 器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,险些是不可用的。FastCGI像是一个常驻(long-live)型的CGI, 它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。CGI 就是所谓的短生存期应用程序,FastCGI 就是所谓的长生存期应用程序。由于 FastCGI 程序并不需要不断的产生新进程,可以大大降低服务器的压力而且产生较高的应用服从。它的速度服从最少要比CGI 技能提高 5 倍以上。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行而且担当来自别的网站服务器来的哀求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其紧张举动是将CGI表明器进程保持在内存中并因此得到较高的性能。众所周知,CGI解 释器的反复加载是CGI性能低下的紧张原因,如果CGI表明器保持在内存中并担当FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、 Fail-Over特性等等。FastCGI接口方式采用C/S布局,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多 个脚本解析保卫进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给欣赏器。这种方式可以让 HTTP服务器专一地处理静态哀求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用体系的性能。
通讯大要流程

   Client发送哀求,然后Nginx服务器拿到哀求之后会判定当前哀求是否是访问静态资源,如果是要访问静态资源的话就读取静态资源直接返回给客户端。
但是如果Client哀求的是动态资源的话就会交给uWSGI服务器,uWSGI服务器会根据自身的uwsgi协媾和WSGI协议找到对应Django框架中的应用程序做逻辑处理,将返回值发送到uwsgi服务器。
然后uwsgi服务器在返回给nginx,末了nginx将返回值返回给client举行渲染展示给用户。
正向署理和反向署理

正向署理就是为客户端举行服务器设置的署理,即为署理服务器为客户端服务。当客户端发送哀求的时间,会通过署理服务器向目标IP发送哀求。
https://img-blog.csdnimg.cn/direct/4039a02b426e4a8482249d61c17b2eb9.png
使用正向署理的作用:


[*] 可以通过署理服务器访问一些受限的资源,不是使用自己的客户端去哀求资源。
[*] 可以做缓存,加速访问资源,将频繁访问的资源缓存起来,加速客户端的访问。
[*] 对客户端授权,上网访问认证。通过署理服务器的认证模块,可以实现对客户端访问的控制和限制,确保只有颠末认证的用户能够访问特定的资源或服务。
[*] 署理服务器能记任命户的访问记录和上网举动,对外隐藏了这些信息。
总的来说:
正向署理充当客户端和互联网资源之间的中间层,为客户端提供访问受限资源的途径,而且可以实现访问控制、过滤、缓存和加速等功能。在特定场景下,正向署理能够提升网络访问服从、保障网络安全。
反向署理和正向署理相反,他是为服务器举行服务的,当我们向服务器发送一个哀求的时间,署理服务器就会向内部的服务器转发哀求的相应。
https://img-blog.csdnimg.cn/direct/4686106a2e584720b9d97717b95f1ff5.png
使用反向署理的作用:


[*] 包管内网的安全,阻值web攻击,大型网站通常都将反向署理作为公网访问地址,而真正的web服务器是内网。
[*] 负载平衡,通过反向署理服务器可以优化各个服务器的负载。
负载平衡的计谋:

[*]轮询分配
[*]IP负载平衡
[*]哈希算法平衡
[*]一致性哈希

[*] web加速,反向署理能压缩入站和出站数据并缓存常见的哀求内容,还能够执行其他使命,减轻Web服务器的负载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: WEB后端架构的一些概念杂谈