大家好,今天咱们继续 openstack 的第二期内容:揭秘 openstack 中的通信机制及 Nova 组件浅析,本次课程分为两个部分进行学习。
Part1 通信机制
大家都知道,openstack 整个系统架构非常的庞大,内部组件较多,且每个组件又是有多个子组件构建而成,各司其职,从而支撑起了整个系统。那么,组件和组件之间究竟是通过什么方式进行通信的呢?组件内部子组件之间又是如何进行通信的呢?
在 openstack 当中,组件之间的通信是通过 Rest 消息(即 http 消息)来完成的,而组件内部子组件之间的通信则是通过消息队列来完成的。一般程序与程序之间的调用通常分为两种方式:同步调用以及异步调用。
◎同步调用:A 直接去调用 B 的接口。举个例子:A 发了个请求给 B,要求 B 去干一件事情。那么在 B 干事情的过程当中,A 一直是处于一种等待状态。等到 B 干完了那件事情后,会把结果返回给 A。此时,A 才能继续干后续的事情。这就是同步调用。
◎异步调用:A 通过消息队列(如 RabbitMQ)间接去调用 B。同样的举个例子:A 发了个请求给 B,要求 B 去干一件事情。这个时候 A 不用等待,直接管自己干后续的事情就可以了。而 B 干完之后也需要通过消息队列的方式将结果返回给 A。这就是异步调用。
一般在一些大型的分布式系统当中,通常采用异步调用的方式。为什么