我们都知道openstack中有至少两种通信机制,一种是RESTful API,另一种是RPC调用,举个例子,当nova与glance通信的时候可能用的是RESTful API,而nova-api与nova-scheduler进行通信的时候,却是使用rabbitmq中的消息队列。为什么呢?另外在一个架构设计中应该选择哪一种通信机制。需要我们对这两种机制有一定的了解。
分类
- RESTFUL API
- RPC
RESTful API
- RESTFUL API是一套架构约束条件和原则
- REST定义的原则
- 所有事物都定义了ID。openstack中每个资源都有唯一的UUID
- 所有事物都链接在一起。在openstack中将资源的ID放在URL中。
- 使用标准的方法。比如说GET是查询资源,POST是添加资源,PUT是更新资源等等。
- 使用RESTful API架构,实现的目标
- 客户端与服务端的独立性: 在公共接口不变的情况下,客户端和服务端的代码可以独立开发。
- 无状态性: 用户的状态保存在客户端,服务端不再保存用户的状态。客户端向服务端发送请求时,必须发送所有的数据,包括用户状态。
- 统一的接口: RESTful API的URL格式需要遵守统一的规范。可以降低客户端服务器的耦合度,使得编码更加简单。
- 利用PasteDeploy定制WSGI服务(openstack中所有web服务都是通过WSGI部署的,例如h
- REST定义的原则