Web服务集群与负载均衡

分布式与集群

三大结构:

链接:https://www.zhihu.com/question/20004877/answer/282033178

单机结构

单机结构是我们平常最常用的结构,当一个系统业务量很小的时候,所有的代码都放在一个项目中,然后这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单机结构。
当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。

集群结构

单机处理到达瓶颈的时候,就把单机结构的项目复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。

但是用户的请求究竟由哪个节点来处理呢? 要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”就是——负载均衡服务器

但是,当你的业务发展到一定程度的时候,可能会出现一个问题——无论怎么增加节点,整个集群的性能提升效果并不明显。这时候,就可以用分布式结构。

分布式结构

分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,这些子系统能够独立运行在web容器中,即这个系统是由一个个子系统共同协作,每个子系统完成一部分任务,从而实现整个系统的业务功能。


集群负载均衡

Web服务集群与负载均衡
Web服务集群与负载均衡
在Linux上的部署
https://blog.csdn.net/qq_42517220/article/details/88917193

所采用的方案
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相当于是服务器,负责接收请求;uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回。通信过程: 客户端发送一个http请求,被nginx服务器接收,nginx服务器将请求转发给uwsgi,uwsgi将请求转发给实现uwsgi协议的应用程序(Django)。

步骤

  1. 安装Nginx
  2. 安装uwsgi
  3. 修改nginx配置文件:nginx.conf(配置负载均衡)
  4. 修改uwsgi.ini配置文件,使其与nginx通信

Nginx常用负载均衡的分配策略:https://blog.csdn.net/haeasringnar/article/details/82925372
https://blog.csdn.net/gu_wen_jie/article/details/82149003


Python分布式计算相关工具

Parallel Python

PP是一个python模块,提供在SMP(具有多个处理器或多核的系统)和集群(通过网络连接的计算机)上并行执行python代码的机制。它轻巧,易于安装和与其他python软件集成。PP是一个用纯Python编写的开源和跨平台模块。

Bigflow(Python 2.7)

https://baidu.github.io/bigflow/zh/index.html

Dpark

https://github.com/jackfengji/test_pro/wiki/%E4%BD%BF%E7%94%A8DPark