WSGI协议、uwsgi协议、uWSGI服务器、nginx反向代理服务器之间的联系和区别,及python框架简单总结

django大而全,flask小而精,tornado性能高  

 区别在于:底层io处理机制

tornado、gevent、asyncio、aiohttp:事件循环+协程   (nodejs、go语言 得益于 协程 实现高并发)
django、flask:阻塞io模型  ------>  生态丰富、代码容易理解、简单
1、WSGI: web server gateway interface , 不是服务器、python模块、 框架、API或任何软件,只是一种规范,描述web server如何与web application通信的规范
要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有:bottle、flask、django
    WSGI协议主要包括:server和application 两部分   WSGI server负责从客户端接收请求,将请求转发给application,将application返回的response返回给客户端
    WSGI application接收由server转发的请求,处理请求,并将处理结果返回给server。application中可以包括多个栈式的中间件(middlewares),这些中间件需要同时实现server和application,因此可以在WSGI服务器与WSGI应用之间起调节作用:对服务器来说,中间件扮演应用程序,对应用程序来说,中间件扮演服务器。
    WSGI协议其实是定义了一种server与application解耦的规范,即可以有多个实现WSGI server的服务器,也可以有多个实现WSGI application的框架,那么就可以选择任意的server和application组合实现自己的web应用。例如uWSGI和Gunicorn都是实现了WSGI server协议的服务器,Django、flask是实现了WSGI application协议的web框架,可以根据实际情况搭配使用
2、uwsgi:也是一种通信协议 ,是uWSGI服务器的独占协议,用于定义传输信息的类型
3、uWSGI: 一个web服务器,实现了WSGI协议、uwsgi协议、http协议等
django、flask框架都有自己实现的简单的WSGI server,一般用于服务器调试,生产环境下建议用其他WSGI server。比如django启动manage.py runserver 就是启动的这个,这种只适用于本地开发的时候使用,线上运行还是需要配置nginx+uWSGI+django
    WSGI除了解析http协议以及http端口侦听外,还负责了流量转发以及WSGI application进程管理的功能。一般wsgi框架内置的WSGI server都是一个单进程,一次只能处理一个请求。而目前通用的WSGI server(gunicorn,uwsgi)都至少支持pre fork模型,这种模型会起一个master来侦听请求,并启动多个slave(每个slave是一个wsgi application),master负责把请求转发到空闲的slave上。除了这种传统的基于进程的pre fork同步模型,不同的WSGI server也会支持一些其他模型,有基于线程的同步模型,也有基于asyncio的异步模型。
Ng inx是一个反向代 理服务
正向代理,例如FQ用的代理服务器就是正向代理,浏览器主动请求代理服务器,代理服务器转发请求到对应的目标服务器。
反向代理,部署在web服务器上,代理所有外部网络对内部网络的访问。浏览器访问服务器,必须经过这个代理,是被动的。正向代理的主动方是客户端,反向代理的主动方是web服务器。
主要是因为wsgi server支持的并发量比较低,一般会用一个专门的http server来做一层缓冲,避免并发量过大时直接服务挂掉。
反向代理的作用:
1.安全,客户端对web服务器的访问需要先经过反向代理服务器。这样可以防止外部程序对web服务器的直接攻击。
2.负载均衡,反向代理服务器可以根据web服务器的负载情况,动态地把http请求交给不同的web服务器来处理,前提是要有多个web服务器。
3.提升web服务器的io性能。一个http请求的数据,从客户端传输给服务器,是需要时间的,例如N秒,如果直接传给web服务器,web服务器就需要让一个进程阻塞N秒,来接收io,这样会降低web服务器的性能。如果使用反向代理服务器,先让反向代理服务器接收完整个http请求,再把请求发给web服务器,就能提升web服务器的性能。还有一些静态文件的请求,可以直接交给反向代理来处理,不需要经过web服务器。
nginx是一个高性能的http和反向代理服务器。   架构:用户浏览器---http协议---反向代理nginx---uWSGI-----应用程序











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值