一、HTTP server

  主要是horizon模块,horizon是基于Python Django搭建的web应用,其运行于Apache网络服务器上(当然也可以运行在其他web服务器上),主要功能就是提供云平台管理的页面访问。

二、API server

  主要是各个模块中的api组件,作为wsgi server运行,对外提供Restful API请求处理。这种API server可以将模块转化一种服务,提供API调用接口。例如,没有nova-api的nova模块只能算作一个软件的组成模块,只能对内提供处理逻辑。当有了nova-api后,nova模块就可以作为一个独立的服务运行,可以对外提供接口,Restful API更可以兼容各种编程语言及软件。

  Restful结合了网络与软件,我个人觉得其更加偏向于作为一种通信风格(还不是通信协议),至于其对软件模块架构的影响应该也是围绕这种通信风格展开的。主要特点如下:

  1.具备一定规则的URL

  2.以资源的概念聚合操作

  3.操作主要为CRUD(当然还有其他的),使用http请求的method,其中GET表现获取,POST表现创建,PUT表现更新(如果不存在就创建),DELETE表现删除

  4.建立在HTTP通信协议之上,表现为无状态

Restful参考文献:

http://www.cnblogs.com/artech/p/3506553.html

http://www.ruanyifeng.com/blog/2014/05/restful_api.html

http://java.dzone.com/articles/restful-standard-resolved

http报文参考文献:

http://www.cnblogs.com/dinglang/archive/2012/02/11/2346430.html

http://blog.csdn.net/kfanning/article/details/6062118

http无状态参考文献:

http://www.cnblogs.com/perhaps/archive/2006/06/28/438187.html

三、RPC server

  主要是各模块中的部分组件,如nova-scheduler等,作为普通server(守护进程)运行。其可以在模块内响应函数调用的请求,底层绑定了消息队列,通过对消息的处理来响应函数调用。

消息队列参考文献:

http://docs.openstack.org/developer/nova/devref/rpc.html

http://blog.iron.io/2012/12/top-10-uses-for-message-queue.html?spref=tw

http://www.vmware.com/products/vfabric-rabbitmq/overview.html

四、对比API server和RPC server(只是大概情况)

API server:

接口主要为CRUD(也包含其他操作);

开放URL形式的接口,满足任意外部的调用。

通信的形式是网络HTTP报文。

RPC server:

接口主要为函数调用;

实在很难对外开放接口,因为底层绑定了消息队列,所以调用接口时也需要绑定消息队列。

通信的形式是消息队列。消息队列可以使用自己的通信协议,如AMQP协议。

使用消息队列后比API server通信效率更高。

openstack中的server的更多相关文章

  1. Openstack中keystone与外部LDAP Server的集成

    openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库: 表local_user和表password: keystone也支持外部 ...

  2. 探索 OpenStack 之(14):OpenStack 中 RabbitMQ 的使用

    本文是 OpenStack 中的 RabbitMQ 使用研究 两部分中的第一部分,将介绍 RabbitMQ 的基本概念,即 RabbitMQ 是什么.第二部分将介绍其在 OpenStack 中的使用. ...

  3. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...

  4. OpenStack中给wsgi程序写单元測试的方法

    在 OpenStack 中, 针对web应用, 有三种方法来写单元測试 1) 使用webob生成模拟的request from __future__ import print_function imp ...

  5. Openstack中RabbitMQ RPC代码分析

    在Openstack中,RPC调用是通过RabbitMQ进行的. 任何一个RPC调用,都有Client/Server两部分,分别在rpcapi.py和manager.py中实现. 这里以nova-sc ...

  6. [原]Openstack之identity server(keystone)

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 重新温习keystone的概念和理解 --------------------- ...

  7. DPDK在OpenStack中的实现

    随着云计算与大数据的快速发展,其对数据中心网络的性能和管理提出了更高的要求,但传统云计算架构存在多个I/O瓶颈,由于云平台基本上是采用传统的X86服务器加上虚拟化方式组建,随着40G.100G高速网卡 ...

  8. OpenStack 中 RabbitMQ 的使用

    OpenStack 中 RabbitMQ 的使用 本文是 OpenStack 中的 RabbitMQ 使用研究 两部分中的第一部分,将介绍 RabbitMQ 的基本概念,即 RabbitMQ 是什么. ...

  9. OpenStack中VNC协议实现多屏共享(多屏不踢访问)

    OpenStack中VNC协议实现多屏共享 by 无若   libvirt设置基本说明:   <devices> <graphics type='sdl' display=':0.0 ...

随机推荐

  1. 在ASP.NET里实现计算器代码的封装

    一.具体代码 Default2.aspx.cs public partial class Chapter1_Default2 : System.Web.UI.Page { protected void ...

  2. 超实用 2 ArrayList链表之 员工工资管理系统

    package ArrayList的小程序; import java.io.*; import java.util.*; public class kkk { /** * 作者:Mr.fan * 功能 ...

  3. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (六) 树莓派查询子节点温湿度数据

    nrl24l01每次只能发送4个字节,前面说到,第一个字节用于源节点,第二个字节用于目的节点.因此只剩下两个字节用于温度和湿度,一个字节只有八位,需要表示温湿度的正负数,因此每个字节的第一位表示正负符 ...

  4. win7系统安装SQLServer2000的详细步骤(图文)

    首先,如果以前安装的话,要删除干净.我也找了半天的网络资料.1.把原来SQLServer的安装目录 C:\Program Files\Microsoft SQL Server  删除2.所有SQLSe ...

  5. php单例模式 (转

    假设我们需要写一个类用来操作数据库,并同时满足以下要求: ①SqlHelper类只能有一个实例(不能多)②SqlHelper类必须能够自行创建这个实例③必须自行向整个系统提供这个实例,换句话说:多个对 ...

  6. .net webapi创建接口

    最近使用webapi做了一个用户数据库接口,方便其它网站接入验证用户,实现中解决出现的一些问题,做了一些记录, 1.返回显示为json数据 2.允许其他网站访问,刚开始没有设,在本地机测试时可以访问, ...

  7. BZOJ3083 遥远的国度(树链剖分+线段树)

    考虑暴力树剖.那么修改路径和查询子树最小值非常简单. 对于换根当然不能真的给他转一下,我们只记录当前根是哪个.对于查询,如果查询点不在当前根到原根的路径上,显然换根是对答案没有影响的:如果是当前根,答 ...

  8. P2617 Dynamic Rankings

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤ ...

  9. P4433 [COCI2009-2010#1] ALADIN

    题目描述 给你 n 个盒子,有 q 个操作,操作有两种: 第一种操作输入格式为"1 L R A B",表示将编号为L到R的盒子里的石头数量变为(X−L+1)×A mod B,其中 ...

  10. JAVA里面的“指针”

    JAVA里面的“指针”                 众所周知,在java里面是没有指针的.那为何此处还要说java里面的“指针”呢?我们知道在C/C++中,指针是指向内存中的地址.那么在Java里 ...