企業it架構是指機房硬體管理和應用開發交付模式,前者涉及物理資源的高效便捷管理,衍生出虛擬化技術;後者關係到開發運維協同工作,加速容器技術的發展。特別是在網際網路化已成為促進資訊科技產業發展和應用創新主要推手的當代,迫切需要應對「交付方式移動化、使用者峰值極限化、版本更新高頻化、失效恢復實時化」的應用新特點。因此,企業對應用管控的效能、敏捷性和可靠性提出了更高的要求, it架構轉型公升級迫在眉睫。
容器是一種新型物理資源抽象方法,其核心思想是作業系統核心的復用,通過提**用執行環境描述規範,自動構建應用(程序)的沙箱執行環境,達到應用相互隔離的目的。如圖1所示,與虛擬機器技術相比,容器迴避了冗餘os(duplicated os)問題,理論具有與物理機接近的效能[1];容器引入應用環境描述規範,機器識別替代基於指令碼和文件的應用環境構建,容易維護,不易出錯[2]。因此,容器具有更好的效能,更優的敏捷性,正逐漸成為構建應用系統執行環境的主流基礎設施。
圖1 虛擬機器和容器區別
容器集群是一種將多台物理機抽象為邏輯上單一容器的技術,在有效應對規模化管理需求的同時,通常會引入基於記錄和回放的失效恢復機制,大大提高容器的可靠性。當前,容器集群已成為容器產業化的事實管理方式,呈現出「百花爭鳴」的競爭態勢,本文將考慮資源管理和應用管控兩個方面,並從生態角度進行簡單討論,對已有容器集群管理技術進行初步分析,可為企業容器集群技術選擇提供依據。
現狀:百花爭鳴
容器集群已成為實現應用敏捷管理的主流手段,公有雲amazon、microsoft、google、aliyun紛紛推出新產品搶占容器市場,開源界openshift、cloudfoundry、rancher、docker cloud、openstack也都將容器作為戰略方向構建生態,百花爭鳴。各家採用的容器集群管理技術也不盡相同,主要包括kubernetes、mesos、swarm/swarmkit、nova四大類,呈現出群雄爭霸的局面,如表1所示。
表1 主流容器集群管理技術
注意:以上資訊均來自網際網路,某些企業/開源系統同時支援多種容器集群管理,比如microsoft同時支援mesos和swarm
初步觀察,各種容器集群管理技術都具有良好的產業支援,也有(較)重量的開源跟進,但仔細分析,能發現其中的異同:
由此可見,資源管理和應用管控是企業it架構兩個關鍵要素。其中,資源管理是指具備物理資源統一抽象、按需供給、負載均衡等能力,實現容器與物理資源的合理關聯放置;應用管控是以應用邏輯為核心,統一管理具有關聯關係的多個容器,比如應用的典型架構涉及三層,包括web伺服器、應用伺服器和資料庫伺服器,會部署在不同容器中。docker官方調研報告將應用管理作為容器核心能力之一,認為kubernetes和swarm/swarmkit優勢明顯[7],如表2所示。
表2 主流容器集群管理對資源管理和應用管控的支援
注意:僅僅以軟體原生版本能力作為對比依據;使用者偏好資料**於docker官網
從生態環境來看,kubernetes吸取了google borg的精髓[8],後者被認為是google近十年最「神秘的系統」,具有線上成熟的大規模類容器管理經驗,因此是當前網際網路廠商模仿和使用的物件;mesos受apache支援,最初面向短任務場景(短任務如hadoop,在有限時間內完成並釋放資源),專注資源按需隔離、快速決策和**管理,但擴充套件到facebook、twitter等7*24類服務型應用,需定製應用管理能力[9];
swarm/swarmkit由docker社群親自推動,通過docker本身能力的增強,以更加簡潔有效的方式實現類似kubernetes(swarmkit已經發布)的應用管控能力,社群關注度和貢獻者發展很快;nova得易於openstack社群推動,但落地應用一方面強依賴於openstack實施的廣度和深度,另一方面需要擴充套件openstack支援應用管控。具體生態對比如表3所示。
表3 主流容器集群管理生態基礎
注意:星級越高,說明關注度越高,社群越活躍
綜上所述,結合docker官網關於應用管控的發展趨勢,成熟穩定的kubernetes和原生支援的swarm/swarmkit具有更廣闊的發展前景。openstack也具有一定的競爭優勢,得益於openshift、cloudfoundry等關注應用管控平台的天然支援,但複雜性是其短板。相對而言,就支援應用管控能力而言,mesos的生態環境相對較差,如表4所示。
表4 主流容器集群管理如何支援應用管控
未來:雙雄爭霸
從docker官方的發展規劃、開源應用管理平台的轉型力度(openshift3基於docker技術重新實現應用管理邏輯、cloudfoundry大力投入支援基於dokcer進行應用管理),基於docker的公有雲的定位和具體實現,可見資源管理和應用管控是容器集群的兩大關鍵要素。通過前述已有技術的分析和生態預期,kubernetes和swarmkit應具有更廣闊的發展前景。儘管當前,基於kubernetes的容器集群管理方案一直是容器大會的熱點[10]。但值得預期,隨著swarmkit的不斷成熟和社群推動,會有越來越多的相關解決方案[11]。未來,雙雄爭霸將會是容器集群管理的焦點。
參考文獻
1.2.
3.4.
5.6.
7.8.
9.10.
11.
集群軟體對比
優點 1.工作在7層,可以針對http做分流策略 2.1.9版本開始支援4層 3.正規表示式比haproxy強大 4.安裝 配置 測試簡單,通過日誌可以解決多數問題 5.併發量可以達到幾萬次 6.nginx還可以作為web伺服器使用 缺點 1.7層 僅支援http https mail協議,應用面小...
集合容器對比
vector和list vector 在記憶體中是連續儲存的,對於隨機訪問的效率較高 對於插入和刪除,由於需要複製元素,開銷較大 list在記憶體中是離散儲存的,對於隨機訪問需要遍歷,效率較低而對於插入刪除效率較高 list執行緒不安全,vector是執行緒安全的 arraylist和linkedl...
cpp stl 容器對比
包含13個模板類 和關聯式容器 容器內的元素按照一定的規則放到適當的位置,插入元素時不能指定位置 序列式容器 元素在容器中的位置與元素值無關,插入元素時可以指定在容器中插入的位置 容器介面卡 不支援任意一種迭代器set 集合 關聯式容器由節點組成的紅黑樹 元素有序且唯一 集合 鍵是唯一的,值的型別必...