OpenStack组建通信机制

独自空忆成欢 提交于 2020-01-29 20:18:21

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

在这里插入图片描述
目前项目内部消息通信采用两种方式实现RPC和事件通知。
1、RPC(remote procedure call)主要包含call和cast两种(call:同步调用;cast:异步接口)。
2、事件通知(event notification)

AMQP的架构如图所示
在这里插入图片描述
消息的处理分发主要有Exchange(消息交换)和Queue(消息队列)实现。
当producer将消息发送给消息服务器时,由Exchange和消息的routing key决定将消息发送给哪个queue队列,然后consumer在queue拿取自己感兴趣的消息进行处理。
Exchange并不会保存消息,只是对消息进行分发,负责指定消息发送到哪个队列上。

基于AMQP的RPC实现

在这里插入图片描述

  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获取响应。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!