Web服务集群与负载均衡
分布式与集群
三大结构:
链接:https://www.zhihu.com/question/20004877/answer/282033178
单机结构
单机结构是我们平常最常用的结构,当一个系统业务量很小的时候,所有的代码都放在一个项目中,然后这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单机结构。
当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。
集群结构
单机处理到达瓶颈的时候,就把单机结构的项目复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。
但是用户的请求究竟由哪个节点来处理呢? 要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”就是——负载均衡服务器。
但是,当你的业务发展到一定程度的时候,可能会出现一个问题——无论怎么增加节点,整个集群的性能提升效果并不明显。这时候,就可以用分布式结构。
分布式结构
分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,这些子系统能够独立运行在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)。
步骤
- 安装Nginx
- 安装uwsgi
- 修改nginx配置文件:nginx.conf(配置负载均衡)
- 修改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