jinying8869 发表于 2015-4-12 11:59:15

openstack中的server

  一、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.iyunv.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.iyunv.com/dinglang/archive/2012/02/11/2346430.html
  http://blog.iyunv.com/kfanning/article/details/6062118
  http无状态参考文献:
  http://www.iyunv.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通信效率更高。
页: [1]
查看完整版本: openstack中的server