最近在学习 OpenStack,已经了解了其作用、架构。想进一步学习研究OpenStack各组件,对于源代码的阅读和学习,想得到大家的建议?
程序员文章站
2022-03-27 09:52:47
...
回复内容:
1、语言上的建议:学好python。OpenStack是纯python工程,所以你必须要熟悉python的语法、调试、调用。比如:
- pdb:基础使用,断点,调用栈
- 日志:调用栈打印,函数入参打印,底层命令打印
- 涉及的python开源框架、组件:如SQLAlchemy、Django
- 面向对象:清楚抽象、继承、多态、组合等概念
- 语法:更钟意字典、处处解耦的思想等
- 编码规则:去读一读PEP8。
- 框架,问google:
- google image中把OpenStack的图筛选一遍,把画的最好的拿出来仔细研究,弄清楚各个部件的角色、通信机制。(google openstack架构图)
- 北向:把官方手册过一遍,记住各个组件的功能与接口。
- 南向:搞清楚虚拟机的生命周期
- 以及主要涉及到的底层函数,xml文件如何构造,和libvirt如何衔接
- 对KVM和XEN的适配不同点
- 组件:抛弃devstack,自己手动架一次OpenStack,理清各个组件的用途
- 看懂各个组件的关系与交互方法 —— RabbitMQ、scheduler等组件/模块
- 弄清楚各个组件提供的接口,一般接口都是稳定的,定义好了就不会变(如*_client)
- 技术:
- 弄清楚RESTful api、wsgi、eventlet等技术点
- 看一看有意思的实现,如L2 population。
- 业界:看看每个组件的贡献度,哪家公司掌握了哪一块。比如nicira/cisco在里面是什么角色。
建议先从一个组件的某个点着手,比如:
- 虚拟机的生命周期
- nova-compute对底层libvirt的调用
- nova-scheduler的调度机制等等
2013/6/11 更新:
官方架构图:http://docs.openstack.org/trunk/openstack-compute/admin/content/conceptual-architecture.html
看一个东西,一般都要循序渐进。
- 先了解它的整体架构,搞清楚为什么要用这样的架构;
- 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互;
- 然后深入组件中的某个模块,分析模块的用途,理解模块所涉及的理论;
- 最后才是看模块中的代码,分析代码流程,交互走向,验证之前的分析,得到具体结论。
祝看帖各位 节日快乐。
2014/3/17 更新:
修改回答结构,删除过时内容。 前面总结得比较详细了,对Linux、Python和IaaS有一定了解后,可以关注下UnitedStack博客了解这个行业的动态和最佳实践 有云博客 | UnitedStack有云 看Core怎么说的:An Ideal OpenStack Developer
以下是八卦:
买和云计算相关的中文书籍要三思。
少看微博上和OpenStack有关的话题。
靠谱的团队难找,入坑要谨慎。 看6月要面世的新书
《OpenStack设计与实现 云计算 OpenStack》【摘要 书评 试读】 如果有条件的话,可以试着搭一套OpenStack的环境,对整体架构的了解会熟悉一些。
然后在针对nova、neutron、cinder等关键组件具体学习。 能实习是关键,有项目是基础