標籤:

最近在學習 OpenStack,已經了解了其作用、架構。想進一步學習研究OpenStack各組件,對於源代碼的閱讀和學習,想得到大家的建議?


1、語言上的建議:學好python。

OpenStack是純python工程,所以你必須要熟悉python的語法、調試、調用。比如:

  • pdb:基礎使用,斷點,調用棧

  • 日誌:調用棧列印,函數入參列印,底層命令列印
  • 涉及的python開源框架、組件:如SQLAlchemy、Django
  • 面向對象:清楚抽象、繼承、多態、組合等概念
  • 語法:更鐘意字典、處處解耦的思想等
  • 編碼規則:去讀一讀PEP8。

2、快速學習OpenStack的建議:

  • 框架,問google:
    • google image中把OpenStack的圖篩選一遍,把畫的最好的拿出來仔細研究,弄清楚各個部件的角色、通信機制。(google openstack架構圖)

  • 北向:把官方手冊過一遍,記住各個組件的功能與介面。

  • 南向:搞清楚虛擬機的生命周期
    • 以及主要涉及到的底層函數,xml文件如何構造,和libvirt如何銜接

    • 對KVM和XEN的適配不同點

  • 組件:拋棄devstack,自己手動架一次OpenStack,理清各個組件的用途

    • 看懂各個組件的關係與交互方法 —— RabbitMQ、scheduler等組件/模塊
    • 弄清楚各個組件提供的介面,一般介面都是穩定的,定義好了就不會變(如*_client)
  • 技術:
    • 弄清楚RESTful api、wsgi、eventlet等技術點
    • 看一看有意思的實現,如L2 population。
  • 業界:看看每個組件的貢獻度,哪家公司掌握了哪一塊。比如nicira/cisco在裡面是什麼角色。

3、想看懂OpenStack很容易,但精通很難。

建議先從一個組件的某個點著手,比如:

  • 虛擬機的生命周期

  • 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》【摘要 書評 試讀】


建議從一個簡單的組件開始,熟悉套路,比如Glance/Cinder, 理解每個服務啟動的入口,一步一步跟蹤,了解如何訪問資料庫,組件內如何通過消息隊列RPC, 這期間會用到大量第三方庫,和Oslo庫-OpenStack 公共基礎庫,這塊有問題可以問我


可以看下王者那本書,雖然內容比較老,但是該講的都講了,我們辦公室基本上是人手一本了


如果有條件的話,可以試著搭一套OpenStack的環境,對整體架構的了解會熟悉一些。

然後在針對nova、neutron、cinder等關鍵組件具體學習。


能實習是關鍵,有項目是基礎


推薦閱讀:

如何從零開始學習OpenStack?
自學python和openstack達到怎樣的水平能夠去雲計算公司上班?

TAG:Python | OpenStack |