揭秘大數據 | 21、軟件定義計算

老夫先將這個小系列的前兩篇內容鏈接奉上,方便感興趣的朋友一氣讀之。

揭秘大數據 | 19、軟件定義的世界-CSDN博客?

揭秘大數據 | 20、軟件定義數據中心-CSDN博客

今天,書接上文,開聊軟件定義計算的那些事兒!

虛擬化是軟件定義計算最主要的解決途徑

雖然類似的技術早在IBM S/360系列的機器中已經出現過,但是真正走入大規模數據中心還是在VMware公司推出基于X86架構處理器的全虛擬化產品之后,隨后還有Microsoft Hyper-V、Citrix XEN、Redhat KVM、Sun VirtualBox(現在叫作Oracle VM VirtualBox)等商業或開源解決方案。

虛擬化是一種用來掩蔽或抽象化底層物理硬件并在單個或集群化物理機之上并發運行多個操作系統的技術。

虛擬機成為計算調度和管理的單位,可以在數據中心,甚至跨數據中心的范圍內動態遷移而不用擔心服務會中斷。

基于虛擬機技術的虛擬化計算(見圖1)有三大特點,具體如下:

(1)支持創建多個虛擬機,每個虛擬機的行為與物理機相似,各自運行操作系統(可異構)與程序。

(2)在虛擬機與底層硬件間有一層被稱為虛擬機管理程序,它通常有內核與虛擬機管理器(Virtual Machine Manager,VMM,又稱作Hypervisor)兩大組件。

(3)虛擬機可獲得標準硬件資源(通過虛擬機管理程序模擬及提供的硬件接口、服務來實現)?。

圖1:虛擬化的計算

虛擬機管理程序包含以下兩個關鍵組件:

(1)虛擬機管理程序內核提供與其他操作系統相同的功能,例如進程創建、文件系統管理、進程調度等。它經過專門設計后用于支持多個虛擬機和提供核心功能,例如資源調度、I/O堆棧等。

(2)VMM負責在CPU上實際執行命令,以及執行二進制轉換。它對硬件進行抽象化,以顯示為具有自己的CPU、內存和I/O設備的物理機。每個虛擬機會被分配一個具有一定份額的CPU、內存和I/O設備的VMM,以成功運行虛擬機。虛擬機開始運行后,控制權將轉移到VMM,隨后由VMM開始執行來自虛擬機的指令。

虛擬機管理程序可以分為兩種:

1)裸機虛擬機管理程序
2)托管虛擬機管理程序

見下圖2所示:

圖2:虛擬機管理程序的分類


(1)裸機虛擬機管理程序:這類虛擬機管理程序直接被安裝在X86硬件上。裸機虛擬機管理程序可直接訪問硬件資源,因此,它比托管虛擬機管理程序的效率更高——這一類型是規模化數據中心的主要虛擬化形態。

(2)托管虛擬機管理程序:這類虛擬機管理程序是作為應用程序在操作系統上進行安裝和運行的。它由于運行在操作系統上,因此支持最廣泛的硬件配置——它更適用于測試人員通過模擬來測試不同類型的操作系統平臺。

容器計算是軟件定義計算虛擬化的新銳勢力,它與虛擬機技術的最大區別在于不需要虛擬化整個服務器的硬件棧,而是在操作系統層面對用戶空間進行抽象化,因此我們稱其為操作系統級虛擬化,以區別于之前的基于硬件虛擬化的虛擬機技術。

基于容器計算的用戶應用不需要單獨加載操作系統內核。在同樣的硬件之上,可以支撐數以百計的容器,但是只能支撐數以十計的虛擬機。虛擬機架構與容器架構的對比如圖3所示。

容器計算最早可以追溯到UNIX系統上的Chroot(1979年)?,當時只是單純為單個進程提供可隔離磁盤空間。1982年這一特性被實現在BSD操作系統之上。2000年FreeBSD v4推出的Jails則是最早的容器計算,在Chroot基礎之上,它又實現了更多面向進程的沙箱功能,例如,隔離的文件系統、用戶、網絡。每個Jail有自己的IP地址、可定制化軟件安裝與配置等。這可比Docker早了整整13年,比Docker(v0.9之前)一度依賴的LXC[其為Linux Container(容器)的簡寫]早了8年,比Cloud Foundry的Warden早了11年,比Solaris Containers早了4年,比Linux OpenVZ早了5年,比Linux cgroups早了7年(cgroups基于谷歌公司于2007年貢獻給Linux內核的Control Groups——其前身是谷歌公司內部在2006年的Process Container項目,目的是可以對進程使用的系統資源高度可控)?。

圖3:虛擬機架構與容器架構的對比

?
容器技術因其具有比虛擬機技術更高的敏捷性、更優的資源利用率而備受初創公司、互聯網企業青睞。但是和任何新興技術一樣,容器技術面臨的挑戰(弱點)主要有三大方面:

(1)安全與隔離。

共性內核意味著位于同一內核上的任何一個容器被攻破都可能會影響剩余的其他所有容器。

(2)管理復雜性。

在虛擬機的基礎上,容器在數量上又上升了一個數量級,而這些容器之間又可能產生復雜的對應關系,因此對容器系統進行有效管理的需求顯然是對現有管理系統的一個巨大挑戰。

(3)對狀態服務、應用的支持。

容器技術對無狀態、微服務架構類型應用的支持可謂完美,可是對數據庫類、ACID類型服務的支持還遠未成熟。我們將常見容器技術方案進行比較,見下圖/表4:

圖/表 4:?常見容器技術方案的比較? ? ? ? ? ? 注:?“???”表示其具體的功能實現存在爭議或不完整。

?
上表中Linux LXD是基于LXC構造的,準確地說是提供了一套優化的容器管理工具集(以及Linux distro分發模板系統)?;ThinApp是VMware公司的應用虛擬化解決方案,面向Windows應用;RKT(appc)則是CoreOS公司聯合業界推出的與Docker既兼容又對抗的容器虛擬化架構。Docker在早期階段也是基于LXC的,不過隨后推出了自己的libcontainer庫。圖5展示了Docker容器虛擬化功能接口,也能很好地說明Docker的基本架構。

圖5:Docker容器虛擬化功能接口

作為容器行業的領頭羊,Docker公司對容器計算寄予了厚望,他們認為未來的互聯網架構不再是原有的基于TCP/IP的4層(物理層、IP層、TCP/UDP層、應用層)架構,而是4層邏輯實體:互聯網硬件層、互聯網軟件(容器)層、互聯網應用層;程序員層,具體如圖6所示:

圖6

這樣的分層顯然極大降低了網絡、硬件、系統架構的復雜性,以服務為中心、以軟件定義為中心、以應用特別是微服務架構為中心、以面向程序員為中心,最終實現更敏捷的開發、更短的交付/上市時間、更高的系統效率以及更好的全面體驗

我們有理由相信,假以時日,容器技術的作為會更大,不過在相當長的一段時間內容器技術更側重于第三平臺的應用,特別是無狀態類應用與服務。而虛擬機技術更多地滿足第二平臺的應用,特別是傳統企業級應用。顯然,容器技術與虛擬機技術會各自滿足不同類型的應用需求,或業界的巨頭們通常會把兩者結合起來用于一些典型業務場景,例如在虛擬機之上運行容器,或者在一個資源管理平臺上允許并置容器、虛擬機與邏輯,并進行統一調配、管理……

容器計算顯然不會是軟件定義計算的最終形態,2015—2016年期間又出現了兩種架構:

1)無主機計算

2)統一內核

無主機計算以亞馬遜公司的AWS Lambda服務為代表,讓程序員或云計算/大數據服務的用戶不再糾結于底層基礎架構,而是專注于業務需求的描述。它有著比容器計算更高的敏捷性,向按需計算又邁進了一步。軟件定義計算的演進如圖7所示:

圖7:軟件定義計算的演進

?
統一內核則是把已經被容器虛擬化簡化的技術棧再進一步精簡。圖8展示了從容器到統一內核的精簡過程,很顯然,統一內核縮減了操作系統內核的足印,也簡化了每個容器化應用對底層的依賴關系,由此帶來了更快的部署、更高的遷移運行速度。這也解釋了為什么Docker要在2016年年初收購初創公司Unikernels Systems(開源庫操作系統MirageOS的開發者)?。

圖8:由容器到統一內核的精簡過程


至此,我們回顧并展望軟件定義計算的發展歷程:
始終是向著不斷追求更高效的系統處理能力、更敏捷的業務需求實現、更高的性價比、更好的用戶體驗的目標前進,而這也同樣適用于人類社會進步的普遍價值追求。

此外,利用普世價值的說辭行欺世盜名之實也并非少見,我們看到很多企業、團隊、創業者沉迷于拿來主義,不愿意在底層軟件開發做任何實際投入,大公司做KPI驅動的開源,小公司在開源項目上包層“皮”就可以到資本市場上橫沖直撞……當投資人評估一個項目的價值是靠GitHub的評價(表現為星星數量)來量化的時候,我們就知道軟件定義世界依然是任重而道遠的。

(文/Ricky - HPC高性能計算與存儲專家、大數據專家、數據庫專家及學者)

· END ·

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77026.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FPGA-DDS技術的波形發生器

1.實驗目的 1.1掌握直接數字頻率合成(DDS)的基本原理及其實現方法。 1.2在DE2-115 FPGA開發板上設計一個可調頻率的正弦波和方波發生器,頻率范圍10Hz~5MHz,最小分辨率小于1kHz。 1.3使用Quartus II進行仿真,并通過S…

LeetCode[541]反轉字符串Ⅱ

思路: 題目給我們加了幾個規則,剩余長度小于2k,大于等于k就反轉k個,小于k就全部反轉,我們按照這個邏輯來就行。 第一就是大于等于k就反轉k個,我們for循環肯定是i2k了,接下來就是判斷是否大于等于…

實現定長的內存池

池化技術 所謂的池化技術,就是程序預先向系統申請過量的資源,然后自己管理起來,以備不時之需。這個操作的價值就是,如果申請與釋放資源的開銷較大,提前申請資源并在使用后并不釋放而是重復利用,能夠提高程序…

路由器原理與配置技術詳解

一、路由基礎原理 1.1 路由器的核心功能 網絡層設備:工作在OSI參考模型第三層,實現不同網絡間的互聯互通智能路徑選擇:基于路由表為數據包選擇最優傳輸路徑協議轉換:處理不同網絡接口間的協議差異(如以太網與PPP&…

Leetcode 3518. Smallest Palindromic Rearrangement II

Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解題思路2. 代碼實現 題目鏈接:Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解題思路 這一題是題目Leetcode 3517. Smallest Palindromic Rearrangement I的升級版本,其主要的…

大模型——Crawl4AI 中的數據提取策略

大模型——Crawl4AI 中的數據提取策略 在本章中,將詳細介紹在 Crawl4AI 中可用的數據提取策略。這些策略包括: LLMExtractionStrategy:用于詳細內容提取。JsonCssExtractionStrategy:使用 CSS 選擇器進行結構化數據檢索。CosineStrategy:基于余弦相似性進行有效的語義分段…

職坐標解碼互聯網行業轉型發展新動能

當前,互聯網行業正以前所未有的速度重塑全球產業格局。工信部最新數據顯示,我國互聯網企業營收連續三年保持雙位數增長,其中百強企業在人工智能、物聯網等領域的投入強度同比提升40%,展現出強勁的技術引領力。與此同時&#xff0c…

linux多線(進)程編程——(4)進程間的傳音術(命名管道)

前言(前情回顧) 進程君(父進程)在開發出匿名管道這門傳音術后,解決了和自己孩子(子進程)間的溝通問題,父子關系趨于融洽。和孩子溝通后,進程君發現,自己脫離…

在IDEA里面建立maven項目(便于java web使用)

具體步驟: 第一次有的電腦你再創建項目的時候右下角會提醒你彈窗:讓你下載沒有的東西 一定要下載!!可能會很慢 運行結果: 因為他是默認的8080端口所以在運行的時候輸入的url如下圖: 新建了一個controller代…

【13】數據結構之樹結構篇章

目錄標題 樹Tree樹的定義樹的基本概念樹的存儲結構雙親表示法孩子表示法孩子兄弟表示法 二叉樹二叉樹與度不超過2的普通樹的不同之處二叉樹的基本形態二叉樹的分類二叉樹的性質 二叉樹的順序存儲二叉樹的鏈式存儲二叉樹的鏈式存儲的結點結構樹的遍歷先序遍歷中序遍歷…

雷達生命探測儀,地震救援的生命探測先鋒|鼎躍安全

在地震、山體滑坡、坍塌建筑等突發災害中,會嚴重摧毀建筑物,造成倒塌和人員被困;在瓦礫堆、混凝土板層中,受困人員的生命安全常常面臨嚴峻威脅。傳統救援手段通常存在響應時間長、監測精度有限等不足。 救援現場往往環境復雜&…

512天,倔強生長:一位技術創作者的獨白

親愛的讀者與同行者: 我是倔強的石頭_,今天是我在CSDN成為創作者的第512天。當系統提示我寫下這篇紀念日文章時,我恍惚間想起了2023年11月19日的那個夜晚——指尖敲下《開端——》的標題,忐忑又堅定地按下了“發布”鍵。那時的我…

數據結構*集合框架順序表-ArrayList

集合框架 常見的集合框架 什么是順序表 順序表是一種線性表數據結構,它借助一組連續的存儲單元來依次存儲線性表中的數據元素。一般情況下采用數組存儲。 在數組上完成數據的增刪查改。 自定義簡易版的順序表 代碼展示: public interface IArray…

使用openpyxl時的一些注意點

一、是否需要close()? 在使用 openpyxl 時,wb.save() 后一般不需要再手動調用 wb.close()。wb.save() 會自動處理文件寫入和釋放。 如果是使用openpyxl.load_workbook(filename, read_onlyTrue) 打開了一個只讀模式的工作簿,此時會建立文件…

Python爬蟲第11節-解析庫Beautiful Soup的使用上篇

目錄 前言 一、Beautiful Soup 簡介 1.1 Beautiful Soup概述 1.2 準備工作 1.3 解析器 二、基本使用 三、節點選擇器的使用 3.1 選擇元素 3.2 提取信息 3.2.1 獲取名稱 3.2.2 獲取屬性 3.2.3 獲取內容 3.3 嵌套選擇 3.4 關聯選擇 3.4.1 子節點和子孫節點 3.4.2…

【Docker-13】Docker Container容器

Docker Container(容器) 一、什么是容器? 通俗地講,容器是鏡像的運行實體。鏡像是靜態的只讀文件,而容器帶有運行時需要的可寫文件層,并且容器中的進程屬于運行狀態。即容器運行著真正的應用進程。容器有…

Spring Cache(筆記)

簡介: 常用注解:

大模型Qwen32b(FP16精度)部署所需的顯存大小和并發數計算分析

大家好,我是微學AI,今天給大家介紹一下大模型Qwen32b(FP16精度)部署所需的顯存大小和并發計算分析。 文章目錄 1. 大模型顯存需求分析1.1 模型參數與顯存占用1.2 不同精度對顯存的影響 2. 不同顯卡配置下的并發能力2.1 80G顯卡并發能力2.2 64G顯卡并發能…

【euclid】10.2 2D變換模塊(transform2d.rs)Arbitrary trait

源碼 #[cfg(feature "arbitrary")] impl<a, T, Src, Dst> arbitrary::Arbitrary<a> for Transform2D<T, Src, Dst> whereT: arbitrary::Arbitrary<a>, {fn arbitrary(u: &mut arbitrary::Unstructured<a>) -> arbitrary::Res…

MAC Mini M4 上測試Detectron2 圖像識別庫

斷斷續續地做圖像識別的應用&#xff0c;使用過各種圖像識別算法&#xff0c;一開始使用openCV 做教室學生計數的程序。以后又使用YOLO 做醫學傷口檢測程序。最近&#xff0c;開始使用meta 公司的Detectron2.打算做OCR 文檔結構分析 Detectron2 的開發者是 Meta 的 Facebook AI…