淺談OpenStack(一)
本文分享自天翼云開發者社區《淺談OpenStack(一)》,作者:EmmaDu
OpenStack剛誕生的時候比較單純,只有計算(NASA開源)和存儲(Rackspace開源)兩個功能組件,至于NASA和Rackspace開源這兩個項目并成立OpenStack社區(https://www.openstack.org)的原因,網絡上流傳了很多版本,感興趣的同學可以去網上找找。
個人認為OpenStack是一個偉大的開源項目,幾乎所有的架構、所有的廠商都能在社區找到解決方案。截至到現在,OpenStack已經擁有超過1000萬行核心代碼,這是由8000多名開發者貢獻了50萬+的變更得來的。最初的OpenStack有多厲害?很多開發者僅僅是把OpenStack的代碼搬到本地,運行起來再賣出去,就能成立一家公司。
OpenStack剛開始只有nova(計算)和swift(存儲)兩個核心組件,尤其是nova,幾乎負責了云主機生命周期的所有操作,包括cpu、內存、磁盤、網絡等,后來隨著功能越來越多,項目越來越龐大,社區才把鏡像管理(nova-image)服務、存儲管理(nova-volume)服務、網絡管理(nova-network)服務等獨立出來,于是有了glance、cinder、neutron等服務。在OpenStack里有兩個概念:組件和服務。我們把每個完成獨立功能的項目稱為一個組件,比如nova、cinder、glance、neutron。每個組件里會細分很多個服務,用來承擔不同的職責,比如nova里會有nova-api服務,負責api請求的處理;nova-scheduler服務負責宿主機的調度;nova-compute服務負責與虛擬化軟件進行交互,來操作云主機。
上圖展示了OpenStack里的主要核心組件的交互流程,可以看到,組件和組件之間通過RESTful API交互;組件內的服務和服務之間通過消息隊列交互。整個架構,邏輯清晰,組件之間相互獨立,耦合性很低;而組件內部,通過消息隊列來傳遞請求,耦合性也很低。個人認為,松耦合是OpenStack最大的特點,也是最值得學習的地方。
什么是松耦合?松耦合是指系統架構中不同的組件之間存在低度的耦合關系,這之間彼此相互獨立,如果發生改變,其他相關模塊不受影響,即可以分離出來獨立開發或替換。我們的TeleCloudOS4.0底座雖然不再使用OpenStack,但是在做設計時,還是有很多OpenStack的影子。比如,現在各個產品線之間負責獨立組件(計算、存儲、網絡等),而每個組件之間通過RESTful API的方式進行調用;比如每個組件內部又細分了很多服務,來負責不同的功能(api、調度、計算代理服務等)。各個產品線只需要專注的實現自有的產品功能,而不需要關心其他產品的內部實現,產品線的產品調用通過RESTful API來實現,只要定義好對接的接口格式,就可以實現并行開發,獨立維護,互不影響,可以大大的提升開發效率,同時某一個組件的bug影響范圍控制在組件內部,對其他組件不會造成影響。而產品線內部在設計時,也參考了OpenStack,將一個組件細分成很多服務來承擔不同的任務,服務之間通過分布式隊列來交互,其實和OpenStack異曲同工。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。