Nova object 模型介绍 (1)

本文介绍了Nova的Object化项目,旨在改善计算机节点与数据库的耦合、声明对象属性类型、减少数据库写入量以及实现数据库API。通过版本控制确保不同节点间Object的兼容性,同时通过变更字段跟踪减少不必要的数据更新。下一步目标是让Object内部直接处理数据库操作,优化代码结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nova的Object化是Dan Smith 最近一直在努力推动的一个项目. 这个项目深受社区的好评, 而且工作量还是相当大的.

在这之前, nova是没有Object的概念. 一个文件只是很多同类function的合集. 比如说flavors.py, 里面有就很多关于flavor的function, 像create(), destroy().

而Object化之后, 就需要通过flavor_obj来调用相应的function. 最简单的理解就是这样. 其实Object化是很好理解的一个概念, 有点类似C和C++区别.

至于具体的实现, 先看简图:


Object化主要实现四个功能:

1. Computer node和dB的松耦合.

2. 申明Object 属性的类型. 

3. 减少写入dB的数据量. 

4. 实现dB API.


1. Computer node和dB的松耦合. 每个Object都有版本号, Compute node 上的Object 和Conductor中的Object 可以是不同的版本. 为了增加数据库的安全性, 凡是nova-compute的操作都必须通过Conduct才能执行 (Conduct 可以简单理解为包含所有代码的另外一个node,但是可以和Compute node在同一台主机上). Compute node 会把obj-method 传给Conductor远程执行. Object 化之后, 也就是说在Compute node 和Conduct 生成两个同名的Object, 但Compute node可以是老版本的Object, 比如说 version 1.0. 在从Compute node传值给Conduct的过程中, 实际上是通过to_primitive把Object serialize 化, 转成一个叫primitive的dict. 然后在

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值