Web服务:集群与负载均衡的基本介绍以及在Python Web下的搭建
集群与分布式
三大结构:
链接:https://www.zhihu.com/question/20004877/answer/282033178
单机结构
单机结构是我们平常最常用的结构,当一个系统业务量很小的时候,所有的代码都放在一个项目中,然后这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单机结构。
当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。
集群结构
单机处理到达瓶颈的时候,就把单机结构的项目复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。
但是用户的请求究竟由哪个节点来处理呢? 要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”就是——负载均衡服务器,本段所描述的功能就是负载均衡。
但是,当你的业务发展到一定程度的时候,可能会出现一个问题——无论怎么增加节点,整个集群的性能提升效果并不明显。这时候,就可以用分布式结构。
分布式结构
分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,这些子系统能够独立运行在web容器中,即这个系统是由一个个子系统共同协作,每个子系统完成一部分任务,从而实现整个系统的业务功能。
集群与负载均衡
单机结构简要示意图:
集群结构简要示意图:
Django/Flask在Linux上的部署方式
所采用的方案:
Nginx(Web Server) + uWSGI(通信接口) + Django/Flask(Web APP)
概念介绍
- WSGI
Web服务器网关接口(Python Web Server Gateway Interface)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。 - uWSGI
可以看作是一个应用程序,帮助我们实现WSGI协议。 - Nginx
Nginx是一款高性能的http服务器/反向代理服务器及电子邮件代理服务器。在这里,Nginx接受来自客户端的Http请求发送给uWSGI,uWSGI处理请求并将关键信息传递给web应用(django,flask等),应用返回Response经由uWSGI发送给Nginx,Nginx再发送给客户端。 - 总结
在本方案中,我们使用了Nginx的两大功能:反向代理与负载均衡,Nginx相当于是Web服务器,负责接收请求,以及进行负载均衡;uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回。通信过程: 客户端发送一个http请求,被Nginx服务器接收,Nginx服务器将请求转发给uwsgi,uwsgi将请求转发给实现uwsgi协议的应用程序(Django/FLask)。
步骤概述
Linux环境下:
- 安装Nginx
- 安装uwsgi
- 修改nginx配置文件:nginx.conf(配置负载均衡)
- 修改uwsgi.ini配置文件,使其与nginx通信
详细搭建步骤链接:https://blog.****.net/qq_42517220/article/details/88917193
Nginx常用负载均衡的分配策略:
https://blog.****.net/haeasringnar/article/details/82925372
https://blog.****.net/gu_wen_jie/article/details/82149003