Nova Service启动源码分析

本人虾悠悠  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就正式启动,并且等待结束了,先吃午饭去哭第一次写博客,速度各种慢,累死我了骂人睡觉

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
分析 neutron 的源码需要对 OpenStack 的整体架构有一定的了解,因为 neutron 作为 OpenStack 中的网络服务模块,需要与其他模块进行协同工作,如 Nova、Cinder 等。 neutron 的源码主要分为以下几个部分: 1. API:neutron 的 API 部分负责接收来自用户的请求,并将请求转发给 neutron 的后端服务。API 部分的代码位于 `neutron/api` 目录下。 2. Plugin:neutron 的插件部分负责实现具体的网络功能,如虚拟网络、路由、安全组等。在 neutron 中,插件是通过扩展 neutron 的核心服务来实现的,因此插件的代码位于 `neutron/services` 目录下。 3. Agent:neutron 的代理部分负责将插件提供的网络功能在计算节点上实现,如 DHCP、L3 路由等。代理部分的代码位于 `neutron/agent` 目录下。 4. DB:neutron 的数据库部分负责存储和管理网络相关的数据,如网络拓扑、地址池等。数据库部分的代码位于 `neutron/db` 目录下。 5. Common:neutron 的通用部分包括一些用于网络操作的公共模块,如网络异常处理、配置文件解析等。通用部分的代码位于 `neutron/common` 目录下。 在源码分析过程中,我们可以从以下几个方面入手: 1. 核心服务:了解 neutron 核心服务的实现,包括 API、插件、代理、数据库等。 2. 数据库模型:了解 neutron 数据库模型的设计,包括数据表结构、表关系等。 3. API 接口:了解 neutron API 的接口设计和处理流程,包括请求处理、响应处理等。 4. 插件实现:了解 neutron 插件的实现方式和功能,包括虚拟网络、路由、安全组等。 5. 代理实现:了解 neutron 代理的实现方式和功能,包括 DHCP、L3 路由等。 总之,分析 neutron 的源码需要深入了解整个 OpenStack 的架构和设计理念,同时需要对网络技术有一定的理解和应用经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值