首页 > 其他 > 详细

OpenStack?网关协议

时间:2017-02-12 00:00:18      阅读:250      评论:0      收藏:0      [点我收藏+]

一 动态页面与静态页面区别

  静态页面:每一个网页都有一个固定的URL,且网页的URL以.html、.htm、.shtml等常见的形式为后缀。

  网页内容已经发布到网站服务器上,无论是否有用户访问,每个静态页面都保存在网站服务器上,也就是说静态网页是实实在在的保存在服务器上的文件,每个网页都是一个独立的文件

  静态网页没有数据库支持,在网站制作和维护方面工作量较大

  静态网页的交互性较差,在功能方面有较大的限制

说白了就是把页面上所有的东西设定好、做死了,然后放上去,不管谁在任何时候看到的页面内容都是一样的,一成不变(除非手动修改页面)

  动态页面:动态网页以数据库技术为基础,可以大大降低网站维护的工作量

  采用动态网页技术的网站可以实现更多的功能,如注册用户登录、在线查询、用户管理等。

  动态页面客户端发到服务端的请求会经过一个WEB server来处理,如果请求是静态资源,则交给web服务器。如果是动态资源,则现将请求叫一个WEB Container(WEB容器),在WEB Container中连接数据库,从数据库进行一系列的操作然后动态拼凑页面的展示内容,最后把页面交给WEB服务器,之后通过服务器将内容返回给客户端

 

什么是Web Server

web 服务器 主要功能是提供网上信息浏览服务。Web服务器可以解析http协议当Web服务器接收到一个http请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本等。无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

常见的Web Server 有Nginx Apache lighttp等

 

打个比方吧,你要登录淘宝买东西这个一个步骤。

技术分享

如上图就是用户在访问淘宝主页后再登录的过程

apache无法处理动态请求,所以我们要编写一个个的功能来处理这动态请求

  处理动态请求的伪代码 可以称之为web application 或简称为web app

    1.接受apache提交的用户请求,触发函数运行

    2.连接数据库 

    3.操作数据库

    4.根据获取的数据进行其他的逻辑处理

    5.返回给apache 

    6.关闭数据库

这样会有三大问题

  1.首先要研究透彻http协议。

  2.该代码只是为apache定制的代码,更换其它web server则无法使用

  3.若有其他动态请求(除了登录外)其他的请求,那么还要重复开发,影响效率

解决问题的方法

  1.重新定义一种协议标准。比如之前的web server 与web app 之间的"暗号"(http协议)晦涩难懂,那么这回就在原来的"暗号"上(http协议)弄一个"简单的暗号"

  2.apache是一个web server 这回换成nginx服务。nginx也是一个web server,那么只要是web server都要遵守http协议这个"简单的暗号"。所以,解决了问题一也就解决了问题二

  3.将重复的代码定义一个框架,当重复用的时候只要调取这个框架就可以了。这个框架叫web app框架(也叫web框架) 

这样,三大问题就解决了。这里面的"简单暗号"就是网关协议  (例如cgi)

 

大家看下图

                               技术分享

  一般的web app框架都是遵守网关协议的。也就是说,如果遵守了web app的框架,那么就遵守了网关协议。遵守了网关协议也就遵守了http协议。所以说只要按照web app框架去开发web app就可以了。

 

网关协议有哪些

   CGI即通用网关接口(Common Gateway interface)。是web server 与web app见得接口标准

    优点:CGI程序主要由Perl编写,但它可以由多种语言写成,一个有Bug的CGI程序不会使Web服务器崩溃。

       因为CGI程序在它们的操作系统shell中执行,这些程序与执行同一个CGI程序的其它HTTP请求不会出现并发冲突,所有服务为CGI程序提供支持

       跨平台性强

    缺点:CGI程序的应该答时间很长,会大量占用系统资源

       CGI不具有升级性

       CGI语言不是安全和面向对象的

 

   Fastcgi即快速cgi。大体上与cgi流程一样。只不过唯一区别是CGI的工作流程是:web server -->请求 -->cgi -->子进程-->处理请求-->web server-->关掉子进程。这样的流程是非常消耗系统资源的,所以fastcgi与cgi的区别是。产生一个子进程处理完请求后并不会直接关闭。等到下一次请求的时候直接处理。

 

 

   重点——网关协议之WSGI

    WSGI即(“Python” Web Server Gateway interface)的缩写 。是Python语言定义的Web服务器和Web应用程序框架之间简单通用的接口。它只是一个接口定义:它即不负责服务器的实现,也不负责网页应用的实现。它只是一个两边接口方式的约定(就像一种暗号)

 

  中间件的含义

 技术分享

 中间件的好处:

       完成缓存、字符编码转换等一些其他功能

    并且这种设计降低了server端与web app端耦合度之后的产物。提升了灵活性

 

如何使用wsgi部署keystone

   现在社区主流的部署方法有:

    apache(wsgi)+keystone

    nginx(uwsgi)+keystone

 

步骤流程

   技术分享

OpenStack?网关协议

原文:http://www.cnblogs.com/Vae1242/p/6390196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!