最近看了些OpenStack的代码,深感自己还有很多不足,于是便想起了之前读过的华为孔令贤的csdn博客(原地址,现已迁移到github,地址),花费了一些时间通读了一遍,获益颇多,在这里整理并记录一下。
0,计算
关于调度(scheduler),它的主要作用是决定虚拟机创建在哪个节点上,主要是通过一些过滤器(filter)来实现的。
---------------------------------------------------------------------------
关于消息队列,nova中的每个组件都会连接消息服务器,一个组件可能是一个消息发送者(如API、Scheduler),也可能是一个消息接收者(如compute、volume、network)。发送消息主要有两种方式:同步调用rpc.call和异步调用rpc.cast。还有其他的消息发送方式,比如notify等。
一些比较重要的概念:
交换器(exchange):接收消息并且将消息转发给队列。在每个主机的内部,交换器都有唯一对应的名字。交换器可以使持久的,临时的或者自动删除的。持久的交换器会一直存在与server端直到它被显式的删除;临时交换器在服务器关闭时停止工作哦;自动删除的交换器在没有应用程序使用它的时候被服务器删除。交换器主要有三种类型:
广播式交换器类型(fanout):不分析所接收到消息中的routingkey,默认将消息转发到所有与该交换器绑定的队列中去。
直接式交换器类型(direct):需要精确匹配routingkey和bindingkey,如消息的routingkey = cloud,那么该条消息只能被转发至bindingkey = cloud的消息队列中去。
主题式交换器(Topic Exchange):通过消息的routingkey与bindingkey的模式匹配,将消息转发至所有符合绑定规则的队列中。
队列:“消