網際網路企業生產環境的應用部署所經歷的過程,大致可分三個階段:
用純粹的物理機部署應用,這是所有早期物聯網公司必然經歷的乙個階段。一台伺服器,至少32核cpu、64g記憶體,如果只部署乙個應用,那就太浪費了。於是,多個應用程序,db,快取程序等等都部署在同乙個機器上。這樣部署固然能高效的利用好昂貴的物理機,但是這種簡單粗暴的方式有乙個最大的痛點:程序間資源搶占。如果某個程序耗用了100%的cpu資源,其他的程序無法提供服務。或者如果乙個程序因為突發異常很多,日誌把磁碟打滿了,所有的程序都要掛掉。程序間搶占資源導致其他程序無法提供服務所導致的血案數不勝數。這樣的問題相信很多同學的遇到過。
既然因為資源共享導致的問題,那麼解決方式就是:程序間硬體資源隔離。虛擬機器技術的出現解決了這個棘手的問題。
虛擬機器通過硬體虛擬化,即每台虛擬機器事先從物理機分配好cpu核數,記憶體, 磁碟,每台虛擬機器一般只部署乙個應用。從而解決了程序間資源隔離的問題。不同的程序在不同的虛擬機器上跑,大家相安無事,老死不相往來,自然沒有資源衝突。一台物理機會部署多台虛擬機器,物理機裡的所有虛擬機器則依靠虛擬機器管理系統進行管理。
虛擬機器技術解決了物理機部署的痛點。但是虛擬機器並不是完美的,他也有自己的缺點。大集群部署情況下,軟體的版本容易混亂。
大應用集群的虛擬機器第一次安裝時,由於作業系統映象是一樣的,所以剛開始,軟體的版本和庫依賴是統一的。隨著時間的推移,開源的軟體(tomcat, jdk, nginx)需要逐步公升級,於是運維同學開始批量公升級集群的軟體版本,批量公升級可能有遺漏或公升級失敗。同時有些開發同學會自己登陸機器修改軟體的版本或者配置,以滿足自己的需求。長此以往,乙個應用的集群的虛擬機器的軟體版本和配置逐漸碎片化。當線上出現問題,需要排查到基礎軟體層面時,由於軟體版本碎片化的問題,導致排查變得很棘手。
為了解決虛擬機器部署的痛點,容器技術應運而生。
容器技術不僅限於docker,但是docker目前最為流行,我以docker為例講容器。docker容器技術的核心之一在於映象檔案。
映象檔案,通俗的理解就是乙個程序執行時依賴的軟體檔案的貨櫃。應用集群部署時,每台機器首先會拉取指定版本的映象檔案。安裝映象後產生了docker容器。由於所有機器的映象檔案一樣,容器的軟體版本故而一樣。即使開發或運維中途修改了容器的軟體版本,但是容器銷毀時,軟體的改動會隨容器的銷毀一起湮滅。
容器如果要公升級軟體版本,那就修改映象檔案。這樣部署時集群內所有的機器重新拉取新的映象,軟體因此跟著一起公升級。軟體版本混亂的問題,到docker這裡,也就得到了完美的解決。
虛擬機器能做到硬體資源的徹底隔離,docker不行。虛擬機器 和 docker各取長處,最佳cp。
每個新技術的產生並風行,根本原因一定是因為了解決某個廣泛的問題,並提高了整個業界的生產力。
自動摘要技術發展
自動摘要技術 發展歷史 20世紀50年代,自動摘要 和機器翻譯 被提出 對給定文字提取包含最重要資訊的描述 摘要。乙個代表性研究由h.p.luhn提出,用程式對機器可讀形式的完整文字進行分析,用詞頻及其分布的統計資訊來計算重要性度量的方式。1969年,harold p edmundson 描述了乙個...
PLC技術發展歷史
plc即可程式設計控制器 programmable logic controller,plc 自1969年入世以來,逐漸成為了使用最多 應用最廣的工業控制器,目前已有多個分支。plc控制由中心處理單元cpu 儲存器電源單元等組成,抗干擾能力強。其是採用一類可程式設計的儲存器,專為工業現場應用而設計,...
虛擬化應用才是技術發展的根本
本篇文章版權由 ecf和 hp所有 隨著雲計算的宣傳普及,虛擬技術的應用也開始風生雲起。隨著虛擬技術的發展,其應用前景越來越被人們看好。儘管虛擬化技術有那麼多可見的優勢,但目前的應用情況還不是很樂觀。造成這種情況的原因有兩大方面,一是使用者對虛擬化技術的認識不夠,不知道如何規劃和應用 二是很多使用者...