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