remotable装饰器-object model远程调用实现

本文探讨了OpenStack服务间如何通过remotable装饰器实现数据库对象的远程操作。具体以instance的save()方法为例,说明了@base.remotable装饰器如何使得Compute服务中的数据库操作通过indirection_api重定向到Conductor服务执行,从而实现远程调用。在nova-compute中,未定义indirection_api时,save()方法将在本地执行,反之则通过rpc在nova-conductor服务中运行。
摘要由CSDN通过智能技术生成

OpenStack数据库对象远程操作

在OpenStack的各个服务之间有些数据库对象是可以远程操作的,远程对象所实现的效果是:Compute服务中的数据库方法,可以经过indirection_api重定向到Conductor服务,这样Compute调用的数据库方法实际由Conductor服务执行

以instance的save()方法为例,有一个@base.remotable装饰器

/nova/objects/instance.py

@base.remotable
def save(self, expected_vm_state=None,
         expected_task_state=None, admin_state_reset=False):

有了这个装饰器,通过在nova-compute服务中为indirection_api赋值到conductor_rpcapi.ConductorAPI后, save()方法就经过重定向到达nova-conductor服务中,如果没有定义indirection_api则在本服务运行save()。

indirection_api在nova-compute服务中有赋值,而在其他服务中没有:

nova/cmd/compute.py

CONF = nova.conf.CONF

def 
目录 ................................................................................................................................................................................... 5  1.  通用注解、API、客户程序和实现模型 ................................................................................................................. 7  1.1. 简介 ........................................................................................................................................................................... 7  1.2. 实现的元数据 ........................................................................................................................................................... 7  1.2.1. 服务元数据 ............................................................................................................................................................ 8  1.2.2.@Reference ........................................................................................................................................................... 8  1.2.3. @Property ............................................................................................................................................................. 9  1.2.4. 实现作用域:@Scope、@Init、@Destroy ....................................................................................................... 9  1.3 接口元数据 .............................................................................................................................................................. 10  1.3.1. @Remotable ....................................................................................................................................................... 10  1.3.2. @Conversational ................................................................................................................................................ 11  1.4. 客户 API .................................................................................................................................................................. 11  1.4.1. SCA构件访问服务 .............................................................................................................................................. 11  1.4.2. 非 SCA构件的实现访问服务 ............................................................................................................................ 11  1.5. 错误处理 ................................................................................................................................................................. 12  1.6. 异步与会话编程 ..................................................................................................................................................... 12  1.6.1. @OneWay ........................................................................................................................................................... 12 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值