RPC(Remote Procedure Call Protocal) -远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
在OpenStack里的进程通信方式有两种,一种基于HTTP协议的restful api,另一种则是RPC调用
- 前者(RESTful)主要用于各组件之间的通信(如nova与glance的通信),或者说用于组件对外提供调用接口
- 而后者(RPC)则用于同一组件中各个不同模块之间的通信(如nova组件中nova-compute与nova-scheduler的通信)。
使用方式不同
- REST 是服务端把方法写好,客户端并不知道具体方法。客户端只想获取资源,所以发起HTTP请求,而服务端接收到请求后根据URI经过一系列的路由才定位到方法上面去
- PRC是服务端提供好方法给客户端调用,客户端需要知道服务端的具体类,具体方法,然后像调用本地方法一样直接调用它。
面向对象不同
从设计上来看,RPC,所谓的远程过程调用 ,是面向方法的 ,REST:所谓的 Representational state transfer ,是面向资源的,除此之外
序列化不同:
REST 通常是JSON或者XML,而RPC则是JSON-RPC或者XML-RPC