WEB服务动静结合
基本介绍
1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件
2)常见的应用服务软件有:PHP、Java、Python等
3)问题:WEB服务如何与外部应用程序通信?通常有以下几种方案:
- CGI协议:基本没人使用,不安全以及性能极其低下
- 模块方式:如:Apache内置PHP模块,用以处理PHP动态请求
- FastCGI协议:如:NGINX的php-fpm
4)CGI、内置模块、FastCGI这三种方式,性能最好的要属FastCGI,但是需要额外的进程
5)注意:静态资源和动态资源都是以数据流(本质都是数据流)形式返回用户的:
- 静态资源:WEB服务将页面文件以【数据流】形式封装到响应报文,然后返回用户
- 动态资源:WEB服务将执行结果(注意:此时是结果非文件)以【数据流】形式封装到响应报文,然后返回用户
CGI协议介绍
1)CGI(Common Gateway Interface):通用网关接口,早期WEB服务与外部应用程序(CGI程序)通信的协议/接口标准,几乎可以在任何操作系统上实现(跨平台性好)
2)CGI协议允许WEB服务执行外部程序,并将外部应用程序执行的结果返回WEB服务,并最终返回用户
3)工作原理:用户请求WEB资源,静态请求交由WEB服务自行处理;如果是动态请求,WEB服务会【fork()】一个子进程(CGI进程/应用程序服务进程),然后将动态请求交由子进程处理,处理完后的数据返回WEB服务,最终由WEB服务封装为HTTP响应报文返回用户,然后结束这个子进程
4)每一次的动态请求都会【fork()】一个子进程,周而复始的进行。所以,通过CGI协议处理动态请求,有多少连接请求就会创建多少CGI子进程,子进程反复加载是CGI方式性能低下的主要原因,当用户请求数量非常多时,会大量挤占系统的资源如内存、CPU时间等,造成效能低下
WEB内置模块介绍
1)后来出现了一种更高级的方式,即:WEB服务可以内置Perl解释器或PHP解释器,也就是将这些解释器做成模块的方式,WEB服务会在启动时就会加载这些模块
2)工作原理:用户请求WEB资源,静态请求交由WEB服务处理;如果是动态请求,WEB服务会通过内置模块来进行响应、解析、处理,省得重新fork一个进程,效率提高了。动静请求都是由WEB服务自身处理的
FastCGI协议介绍
1)WEB服务、应用程序均为守护进程,二者基于FastCGI协议通过套接字通信
2)FastCGI协议采用的是C/S架构,分为客户端(WEB服务)和服务端(应用程序服务)
3)大多数WEB服务都支持FastCGI协议,包括Apache、Nginx、LigHTTPd等。同时,FastCGI协议也被许多应用程序服务所支持,如:当前比较流行的动态语言PHP
3)工作原理:用户请求WEB资源,静态请求交由WEB服务处理;如果是动态请求,WEB服务会通过【FastCGI协议】将请求发给应用程序服务进行处理,应用程序会将处理完的结果返回WEB服务,最终由WEB服务封装为HTTP响应报文返回用户。此时,WEB服务和应用程序服务均为守护进程(可以启动多个FastCGI的守护进程)
4)与CGI协议的区别:
相关链接
1)https://www.zhihu.com/question/30672017
2)https://blog.csdn.net/linuxheik/article/details/51865292
3)https://www.awaimai.com/371.html
4)https://www.biaodianfu.com/cgi-fastcgi-wsgi.html
5)http://www.ttlsa.com/web/fastcgi-cgi-diff/
WEB服务动静结合的更多相关文章
- HAProxy+apache实现web服务动静分离
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支 ...
- CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...
- 上传文件服务与web服务分离
业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...
- 关于如何提高Web服务端并发效率的异步编程技术
最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...
- 基于IIS构建Pyathon Web服务
本文简单叙述了在Windows下,如何利用IIS构建Python Web服务. 其主要步骤如下: 1.在IIS下构建一个站点,如图: 2.配置Python文件的处理程序,如图: 3.最后,在对应站点根 ...
- Web服务
Web服务的相关信息 Apache服务器是web服务的重要应用 在这也是讲的apache 这里需要安装一个http服务软件才行! Apache的根文档在/var/www/html 主配置文件 /e ...
- Python flask 基于 Flask 提供 RESTful Web 服务
转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...
- 使用 ServiceStack 构建跨平台 Web 服务
本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Fou ...
- webServices与Web服务
本篇的内容在MSND中标注已是一项旧技术,而取而代之的是WCF, 那么我也放弃吧!但是这个属于Web服务的范畴,而WCF本质上也是一个Web服务来的,所以对于基础的东西还是不变的.那么这次就着重看看这 ...
随机推荐
- [CSP-S模拟测试]:题(DP+数学)
题目描述 出个题就好了.这就是出题人没有写题目背景的原因.你在平面直角坐标系上.你一开始位于$(0,0)$.每次可以在上/下/左/右四个方向中选一个走一步.即:从$(x,y)$走到$(x,y+1),( ...
- 麦子lavarel---10、一些第三方应用注意
麦子lavarel---10.一些第三方应用注意 一.总结 一句话总结: 其实把重要的几个功能弄一个就好了,邮箱验证,手机号验证,支付验证,都是调用第三方接口,也很简单 1.关于页面和服务端校验的看法 ...
- ThinkPHP框架实现rewrite路由配置
rewrite路由形式: //网址/分组/控制器/方法 配置实现rewrite路由的配置: 1. 修改apache的配置 先修改httpd.conf配置文件中的AllowOverrideAll,全 ...
- Linux中退出循环命令
[root@a ~]#cat break.sh #!/bin/bash while : #其中“:”表示while循环的条件永远为真的意思 do read -p "Enter a numbe ...
- Basic Model Theory of XPath on Data Trees
w https://openproceedings.org/2014/conf/icdt/FigueiraFA14.pdf From a database perspective, however, ...
- 【ABAP系列】SAP 读取生产订单 记入文档的货物移动明细
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 读取生产订单 记入文档的 ...
- kNN算法实例(约会对象喜好预测和手写识别)
import numpy as np import operator import random import os def file2matrix(filePath):#从文本中提取特征矩阵和标签 ...
- Log4Net使用详解(续)
转:http://blog.csdn.net/zhoufoxcn/article/details/6029021 说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:ht ...
- OuterXml和InnerXml(2)
官方例子:https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.outerxml.aspx using System; using S ...
- [Python3 填坑] 009 深拷贝与浅拷贝
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 Python3.7 官方文档 2.2 赋值.切片与 copy() 分析 分析 分析 分析 2.3 copy 模块 分析 分析 2.4 小 ...