nova conductor是一个RPC 服务,所有支持的API都在 nova.conductor.rpcapi.ConductorAPI
它是stateless,可以水平扩展。
优点:
安全:
如果没有conductor,每个nova-compute都会直接访问DB,那么任意一个host上的nova-compute被攻破的话,整个DB就有危险。
升级:
如果database
schema升级了,nova-compute不一定需要升级,只要nova-conductor的API兼容就行。
性能:DB访问会block在nova中,因为nova-compute 只有一个 OS thread,使用green threads in eventlet来提供并行性,
而从语言写的mysql driver对green threads并不友好,比如你有10个green threads来启动10个instance,如果第一个调度的
green thread block在DB上,其余9个green threads必须等待。
有个nova conductor之后,就只有RPC调用,没有DB调用,而RPC对green thread很友好,
如果一个RPC调用block住了,其余的9个green threads仍然可以继续。