设为首页 收藏本站
查看: 1299|回复: 0

[经验分享] 阅读Openstack源码的一些建议

[复制链接]

尚未签到

发表于 2015-10-11 11:53:25 | 显示全部楼层 |阅读模式
最近在看 OpenStack 的源码,虽然没有什么大的成就,但是无形中总感觉自己抓住了一点什么东西……
; o" C3 [  a- q  d
    OpenStack 本身用 python 语言编写,虽然我一直觉得自己的 python 功底已经不错了,但在看源码的过程中,还总是觉得自己掌握的东西太少了,所以,首要的一点,如果你在看 OpenStack 源码,请一定要打牢你的python 基础,不然有些技巧性的代码可能让你停滞不前。" L1 g; Y  g* n! _1 L6 z+ c% f-g

    看源码,如果能一气呵成最好。什么叫一气呵成呢?我先讲个每个人生活中都可能遇到的一些情况:你在做 A 事,但是突然 B 打电话,让你帮着解决 C 事,然后你就去做 C 事了,等你做完 C 事,发现家里有 D 事必须要做,然后你又去做D 事……这样的结果就是,你把 A 事给遗忘了,即便你空闲时候想起来了,但是再去做的时候,发现没有第一次那样熟悉 A 事了,你需要重新花费一些时间来熟悉它。试想,如果一开始你就把 A 事做到底,会怎样?$}9 S1 w; t; U* l* c

    看源码其实是一个很漫长的过程,特别对一个大型项目而言,如果你要看完它的源码,过程是很曲折的,这里的看完不仅仅是过目了一遍,脑子里还要能把逻辑关系理顺。你可能有疑问了,要看源码,一天两天解决不了,但是又要保证一气呵成,这根本就是无稽之谈嘛!事情也的确是这样,鱼与熊掌不可兼得!这里就有一个技巧的问题了,你不妨想象,这么大一个项目,它是怎么开发出来的?难道一开始,项目就已经策划好了?需要多少个源文件,每个文件里面的源码是什么也都做好了?有点经验的程序员都知道,这是不可能的。项目的开发是慢慢细化的,一开始只是核心,然后是骨架,然后有血肉,然后有做A 事的工具……到这里,或许你知道我要说什么了,源码怎么一步步写出来的,我们就怎么一步步的去看它。先研究核心,再研究骨架,然后血肉,其它工具……。还有一个问题,就算我知道怎么看这些源码,我怎么去一气呵成?这就好比你要完成一件大事情,但是你发现给自己定这么宏大的目标对自己来说比登天还难,所以你就想到用小目标来不断激励自己,最终不断接近大目标。这里的一气呵成既然不能一气把所有源码呵成,那就分段吧!不要心急,不要总想着还有很多源码都还没看,保持淡定!7x( l& |) b9 K; e  X
" N0 y& W4 l4 i
    其实,看源码都是一样的,从架构处着手,然后慢慢扩展到细枝末叶。这里,说一些 utilities 。看源码是很枯燥的,一点都不形象不说,还要让脑子一直保持着源码中的很多东西,如果你想偷懒,如果你想让生活更简单,那就用图形吧,图形加速了整个IT 的发展,它的强大与便利有目共睹。源码中的各个模块,类怎么耦合的,用了什么设计模式,拿张纸,画几笔,就显而易见了,当然,做个 PPT 更好。源码之间的互相交错是最让人头疼的,很多人一开始看源码,就从这个源文件的某个函数跳转到另一个源文件的某个函数,我想问一下,你以为你的大脑是电脑吗?你的大脑也可以像电脑那样按着调用顺序依次调用各个函数??如果你在看一个源文件,OK,先把这个源文件一气呵成再说,不要跳转到其它源文件,如果引用的其它源文件中的函数你不知道是干嘛的,先 pass ,以后再说,只要你知道调用它的函数是干嘛的就行,等你以后研究到另外一个源文件的时候,这个关系就很明确了。还有一个现象,很多人一接触一个项目的源码,看见那么多源文件,一下子就懵了,不知道如何下手,别人说,从main 开始看,于是,他就从 main 开始看了,其实这个无所谓,还是那句话,不要以为你的大脑是电脑,做一些人脑力所能及的事,随便找个源文件,然后用心去看它,不要觉得这里的随便就是随便,虽然它的确是随便,但是如果你不知道我说的随便是哪个随便,那就只有随便你了。不管哪个项目,源码包中大致结构一看,基本上就知道各个东西大致是干嘛的,开发这些东西的也是人脑,不是电脑,为了方便理解,基本上文件取名都还是见名知意的。看源码是一件很有挑战的事情,对源码而言,记住,你永远都要站在它的对面,而不是将自己深埋进源码中,一旦你钻进去了,你就已经迷失了自己。还有很多……(稍后补充)
* Q& j* s! K: ?  @0 o! T+ L
    上面说了那么多,都没有谈到 OpenStack ,其实这个是相辅相成的,上面的你知道了,看 OpenStack 你也应该没有问题了,OpenStack 的核心项目是 nova, glance, swift ,最核心的就是nova 了,所以,从 nova 开始看吧。nova 源码包中有很多子包,源文件。除了版权版本以及和其它组件交互的东西,随便找一个开始看吧。切记,在开始看之前,最好能把你知道的 nova 架构图烂熟于心。 这个很重要,因为你之后随时有可能沉迷进源码大军中。0A( i' J. L4 J
; B% Q1 E4 }2 @  P& J$ x  U
    好了,文章到这里,基本上就结束了。貌似没有给冲着 OpenStack 源码来的读者一个很好的建议,其实,任何事都没有一蹴而就的方法,想做成它,最好的方法就是,保持淡定的心态,一步步,走下去!作为过来人,还是给个建议,从 虚拟化开始看,因为这个里面用到了适配器设计模式,你稍微看一点就知道了这个包是干嘛的了,而且,可以提升你继续看源码的信心

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125403-1-1.html 上篇帖子: 自由虚拟机在openstack平台的托管 下篇帖子: OpenStack网络组件Neutron的研究
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表