nginx+uwsgi 和nginx+gunicorn区别、如何部署

nginx+uwsgi 和nginx+gunicorn区别、如何部署,第1张

大家是采用的何种部署方式?

第一种,高并发稳定一点

我在很多的博客中都看过有关 Flask 应用的部署,也有很多博主在开博后都记录了部署的教程,因为其中的坑可以说不少。一开始我在网上看到相比较与 Ubuntu , CentOS 因为更新少作为服务器的 *** 作系统会更加稳定。所以在第一次购买云服务器时,我选择了 CentOS ,后来由于 CentOS 不同发行版的 Nginx 缘故,我又换成了 Ubuntu 的镜像

首先呢,我们先来了解下关于Web服务器与Web应用还有WSGI之间的联系

WSGI (Web Server Gateway Interface),翻译为 Python web 服务器网关接口,即 Python 的 Web 应用程序(如 Flask )和 Web 服务器(如 Nginx )之间的一种通信协议。也就是说,如果让你的 Web 应用在任何服务器上运行,就必须遵循这个协议。

那么实现 WSGI 协议的web服务器有哪些呢?就比如 uWSGI 与 gunicorn 。两者都可以作为Web服务器。可能你在许多地方看到的都是采用 Nginx + uWSGI (或 gunicorn )的部署方式。实际上,直接通过 uWSGI 或 gunicorn 直接部署也是可以让外网访问的,那你可能会说,那要 Nginx 何用?别急,那么接来下介绍另一个Web服务器—— Nginx

Nginx 作为一个高性能Web服务器,具有负载均衡、拦截静态请求、高并发等等许多功能,你可能要问了,这些功能和使用 Nginx + WSGI 容器的部署方式有什么关系?

首先是负载均衡,如果你了解过 OSI模型 的话,其实负载均衡器就是该模型中4~7层交换机中的一种,它的作用是能够仅通过一个前端唯一的URL访问分发到后台的多个服务器,这对于并发量非常大的企业级Web站点非常有效。在实际应用中我们通常会让 Nginx 监听(绑定) 80 端口,通过多域名或者多个location分发到不同的后端应用。

其次是拦截静态请求,简单来说, Nginx 会拦截到静态请求(静态文件,如),并交给自己处理。而动态请求内容将会通过 WSGI 容器交给 Web 应用处理;

Nginx 还有其他很多的功能,这里便不一一介绍。那么前面说了,直接通过 uWSGI 或 gunicorn 也可以让外网访问到的,但是鉴于 Nginx 具有高性能、高并发、静态文件缓存、及以上两点、甚至还可以做到限流与访问控制,所以选择 Nginx 是很有必要的;

这里可以说明,如果你选择的架构是:Nginx + WSGI容器 + web应用,WSGI容器相当于一个中间件;如果选择的架构是uWSGI + web应用,WSGI容器则为一个web服务器

普遍的部署方式都是通过让 Nginx 绑定 80 端口,并接受客户端的请求将动态内容的请求反向代理给运行在本地端口的 uWSGI 或者 Gunicorn ,所以既可以通过 Nginx + uWSGI 也可以通过 Nginx + Gunicorn 来部署 Flask 应用,这篇教程中都将一一介绍这两种方法

当然采用不同的 WSGI 容器, Nginx 中的配置也会有所不同

我们现在虚拟环境下安装好 uWSGI :

安装完成之后我们在项目的目录下(即你实际创建的Flask项目目录,在本文所指的项目目录都假设为/ 参数反向代理给运行在 >负载均衡,其英文简称Load Balancing,是一种计算机技术。用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。宏观上的意思是将负载(工作任务,访问请求)进行平衡、分摊到多个 *** 作单元(服务器,组件)上进行执行以解决高性能,单点故障(高可用),扩展性(水平伸缩)等高流量下常见的问题。

由于载均衡技术是要对网络传输中的报文控制,因此会涉及到网络七层模型,因此负载均衡分类可以按照网络层次进行分类,比如二层、三层、四层、七层负载均衡。其中最常见的是四层和七层负载均衡。此外,还有其他方面进行分类的,有软件负载均衡、硬件负载均衡等。

负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。

七层负载均衡工作在 OSI 模型的应用层,应用层协议较多,常用 >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13447468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-08
下一篇 2023-08-08

发表评论

登录后才能评论

评论列表(0条)

保存