Nova Service启动源码分析
来源:互联网 发布:智能网络电力仪表 编辑:程序博客网 时间:2024/06/06 13:19
本人虾悠悠 QQ:617600535 邮箱:leezhoucloud@gmail.com,欢迎交流。
注:本文针对G版源码进行一些结构性的分析。
首先想借用一段大神在blog的话,原文如下:“其实,对于OpenStack来说,它的强大并不是说它的代码写的多牛逼,而在于它的框架,它的设计思想。很多人虽然一说OpenStack,都知道可以通过OpenStack创建虚拟机,启动/停止虚拟机,创建卷,创建网络等等这些功能,却不在意它的工作流程,它的消息机制,它的异常处理,它的扩展机制,组件之间的交互等等,而这些才是OpenStack的核心。”
经过一段时间的总结,通过不断学习大牛的blog和官方文档,我从刚开始看nova源码的稀里糊涂,到现在的慢慢理解它的很多概念,设计和框架还谈不上,没理解完整,反正菜鸟之路异常艰辛啊,不管怎样,我的蛋炒饭开始了...
补充:应同学要求,补充一张简图,希望大家能结合代码,把东西看得更加明白。
工具不太会用,图画的不好,有点简陋,希望大神勿喷...
第一篇技术Blog,我想先从《Nova Service 启动源码分析》开始,因为这是理解Nova服务的一个关键。Nova的启动脚本放在/nova/cmd目录下,里面有诸如compute,scheduler等等的启动源码,如下图所示:
本文主要针对nova-Scheduler服务来做分析:
主要过程:
a)/nova/cmd/scheduler.py 脚本启动代码
b) /nova/service.py 服务启动代码 --------create()创建服务service -> 初始化service() -> start启动service,并且开启rpc和periodic_task -> wait()等待结束
(一)启动脚本/nova/cmd/scheduler.py
(二)启动过程分析
1、在/nova/service.py,由上图调用,生成一个server对象,<代码:server = service.Service.create(binary='nova-scheduler',topic=CONF.scheduler_topic)>
本例中的binary = nova-scheduler,manager = nova-manager...
2、在/nova/service.py,启动刚实例化的server对象,<代码:service.serve(server)>
3、在nova/openstack/common/service.py中,调用launch函数
(三)Service具体启动的一些东东
1、在/nova/service.py下,Service类下,start方法重要部分代码如下:
(1)第一部分主要关于Scheduler服务启动后,需要开启RPC监听功能
(2)主要执行周期性工作,具体在以后文章中专门讲periodic_task
至此,一个Scheduler的Service就正式启动,并且等待结束了,先吃午饭去第一次写博客,速度各种慢,累死我了
- Nova Service启动源码分析
- 【OpenStack源码分析之三】Nova-Compute启动流程分析
- openstack nova 源码分析3-nova目录下的service.py
- nova-compute启动分析
- openstack nova 源码分析
- OpenStack Nova 源码分析
- nova部分源码分析
- oenstack nova 源码分析
- Openstack nova service 启动过程
- NOVA架构 nova-compute启动分析
- Nova client源码分析---nova list命令
- openstack nova 源码分析2之nova-api,nova-compute
- android源码分析 Service的启动过程
- 基于N源码Service启动分析
- Android四大组件Service启动源码分析
- nova-compute启动分析-1
- nova-compute启动分析-2
- nova-compute启动分析-3
- 找工作
- gtest中如何跳出当前测试案例
- oracle常见密码问题
- 使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享
- 编写优美的GTest测试案例
- Nova Service启动源码分析
- 推荐一款jQuery导航栏滚动悬浮插件stickUp
- iOS学习之WebView的使用
- gtest参数化测试代码示例
- edit control 用法
- 定制iOS 7中的导航栏和状态栏
- 闲来看看论坛,颇丰
- 如何将Activity打成jar包供第三方调用
- Hibernate openSession() 和 getCurrentSession的区别