容器技術(shù)允許管理員在不同平臺(tái)之間輕松移動(dòng)應(yīng)用負(fù)載,但是同時(shí)也存在一些限制。
容器在虛擬環(huán)境當(dāng)中如何完成實(shí)時(shí)遷移和負(fù)載均衡?
對(duì)于大部分虛擬機(jī)當(dāng)中的容器來說,都可以從一個(gè)系統(tǒng)遷移到另外一個(gè)系統(tǒng)當(dāng)中。遷移過程可以根據(jù)需求手動(dòng)進(jìn)行或者自動(dòng)完成,這樣就能夠?yàn)橐恍╆P(guān)鍵任務(wù)提供支持,比如服務(wù)器負(fù)載均衡。限制遷移的主要因素在于底層主機(jī)操作系統(tǒng)內(nèi)核。由于多個(gè)容器共享一個(gè)主機(jī)操作系統(tǒng)內(nèi)核,因此目標(biāo)服務(wù)器必須使用具有兼容內(nèi)核的操作系統(tǒng)。這些操作系統(tǒng)并不需要是相同的發(fā)型版本或者編譯版本,但是內(nèi)核必須是相同的;不能在Windows服務(wù)器上運(yùn)行Linux容器——至少現(xiàn)在還不行。
容器為企業(yè)提供了多種應(yīng)用程序虛擬化方式。容器技術(shù)所提供的系統(tǒng)和應(yīng)用程序架構(gòu)為軟件開發(fā)和部署帶來了一種全新方式。相比于同一領(lǐng)域的競(jìng)爭(zhēng)對(duì)手——虛擬機(jī)來說,容器技術(shù)需要使用的計(jì)算資源更少、速度更快并且更加易于使用。管理員可以快速創(chuàng)建多個(gè)容器以滿足大量應(yīng)用程序需求,比如Web服務(wù)器。
但是容器的作用不僅僅限于輕松創(chuàng)建或者銷毀實(shí)例。容器的靈活性和可擴(kuò)展性在軟件設(shè)計(jì)的微服務(wù)架構(gòu)當(dāng)中發(fā)揮了日益重要的作用。在傳統(tǒng)的“整體”軟件設(shè)計(jì)思想當(dāng)中,所有特性和功能都被集成到單個(gè)應(yīng)用程序當(dāng)中。當(dāng)某個(gè)特性或功能的帶寬超過限制——或者程序不能處理更多的用戶請(qǐng)求——那么企業(yè)就需要再次部署整個(gè)應(yīng)用程序以進(jìn)行擴(kuò)展。對(duì)于軟件設(shè)計(jì)來說,這是一種成本很高、但是效率很低的方式。
通過采用服務(wù)分離——也就是應(yīng)用程序組件——這種軟件架構(gòu)方式,可以將應(yīng)用程序的不同部分可以分散到多個(gè)容器當(dāng)中,再?gòu)倪壿嬌下?lián)系在一起,形成完整的應(yīng)用程序。這種方式允許管理員針對(duì)單個(gè)組件安裝補(bǔ)丁或者進(jìn)行升級(jí),同時(shí)不會(huì)影響其他組件容器。此外,當(dāng)某種特性需要提高性能時(shí),還可以創(chuàng)建更多的容器來擴(kuò)展規(guī)模——或者當(dāng)某種特性需要降低性能時(shí),可以減少容器數(shù)量以縮減規(guī)模。這種方式使得基于微服務(wù)的軟件設(shè)計(jì)方式和容器技術(shù)完美匹配,為企業(yè)提供同時(shí)兼顧高可擴(kuò)展性和高效率的應(yīng)用程序。微服務(wù)容器還可以在相互兼容的操作系統(tǒng)當(dāng)中進(jìn)行遷移,以實(shí)現(xiàn)負(fù)載均衡和應(yīng)用程序性能優(yōu)化。