RPC即Remote Procedure Call(远程方法调用),是Openstack中一种用来实现跨进程(或者跨机器)的通信机制。Openstack中同项目内(如nova, neutron, cinder...)各服务(service)及通过RPC实现彼此间通信。
RCP只定义了一个通信接口,其底层的实现可以各不相同。目前Openstack中的主要采用AMQP来实现。AMQP(Advanced Message Queuing Protocol)是一种基于队列的可靠消息服务协议,具体可参考http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol。作为一种通信协议,AMQP同样存在多个实现,如Apache Qpid, RabbitMQ等。
AMQP 模型有四个重要的角色:
-
Publisher:消息发送者,将消息发送的 Exchange 并指明 Routing Key,以便 Message Queue 可以正确的收到消息。Routing key用于 Exchange 判断哪些消息需要发送对应的 Message Queue。
-
Consumer:消息接受者,从 Message Queue 获取消息。
-
Exchange:根据 Routing key 转发消息到对应的 Message Queue 中。
-
queue: