OpenStack组建通信机制
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实现 client发送消息request给exchange,routing key指明到op_queue消息队列,并从res_queue取返回。 Exchange将消息推送到op_queue消息队列 server端从op_queue取出自己需要处理的数据,执行对应的任务,并将执行的响应结果发送给exchange,指明到res_queue