OpenStack各项目组件通信机制

openstack各项目之间通过restful api进行通信,相同项目内不同组件进程组件之间通过消息总线进行通信。服务进程通过向消息总线上发送和获取消息,openstack是基于消息驱动的。

OpenStack各项目组件通信机制_第1张图片
目前项目内部消息通信采用两种方式实现。RPC和事件通知。
1、RPC(remote procedure call)主要包含call和cast两种(call:同步调用;cast:异步接口)。
2、事件通知(event notification)

AMQP的架构如图所示
OpenStack各项目组件通信机制_第2张图片
消息的处理分发主要有Exchange(消息交换)和Queue(消息队列)实现。
当producer将消息发送给消息服务器时,由Exchange和消息的routing key决定将消息发送给哪个queue队列,然后consumer在queue拿取自己感兴趣的消息进行处理。
Exchange并不会保存消息,只是对消息进行分发,负责指定消息发送到哪个队列上。

基于AMQP的RPC实现

OpenStack各项目组件通信机制_第3张图片

  1. client发送消息request给exchange,routing key指明到op_queue消息队列,并从res_queue取返回。
  2. Exchange将消息推送到op_queue消息队列
  3. server端从op_queue取出自己需要处理的数据,执行对应的任务,并将执行的响应结果发送给exchange,指明到res_queue
  4. Exchange将返回的消息推送到res_queue
  5. client从res_queue获取响应。

你可能感兴趣的:(OpenStack)