偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你知道到底什么是Unikernel嗎

系統(tǒng) 系統(tǒng)運(yùn)維
Unikernel是通過(guò)使用專(zhuān)門(mén)的庫(kù)操作系統(tǒng)來(lái)構(gòu)建的單地址空間機(jī)器鏡像。開(kāi)發(fā)者通過(guò)選擇棧模塊和一系列最小依賴(lài)庫(kù)來(lái)運(yùn)行應(yīng)用,而這些棧和庫(kù)對(duì)應(yīng)于操作系統(tǒng)中運(yùn)行應(yīng)用所必需的依賴(lài)。也許在今后的5至10年,我們會(huì)以新的規(guī)范一樣來(lái)部署Unikernel。

   [[157692]]

如果你持續(xù)關(guān)注DevOps周刊,DevOps主題的會(huì)議或是對(duì)技術(shù)真正感興趣,你也許已經(jīng)聽(tīng)說(shuō)Unikernel很多次了。在過(guò)去的幾個(gè)月,它似乎越來(lái)越受關(guān)注。

  然而,究竟什么是Unikernel? 它是我想要的東西嗎?

  我糾結(jié)這個(gè)問(wèn)題許久。不知如何定義Unikernel以及它存在的意義?

  什么是Unikernel?

  真相的來(lái)源僅僅是Wikipedia上的一段晦澀的解釋?zhuān)覀兿瓤纯矗?/p>

  Unikernel是通過(guò)使用專(zhuān)門(mén)的庫(kù)操作系統(tǒng)來(lái)構(gòu)建的單地址空間機(jī)器鏡像。開(kāi)發(fā)者通過(guò)選擇棧模塊和一系列最小依賴(lài)庫(kù)來(lái)運(yùn)行應(yīng)用,而這些棧和庫(kù)對(duì)應(yīng)于操作系統(tǒng)中運(yùn)行應(yīng)用所必需的依賴(lài)。

  這些庫(kù)負(fù)責(zé)應(yīng)用和配置代碼編譯,構(gòu)建成封閉的、固定用途的鏡像(即Unikernel),可以直接在虛擬機(jī)管理程序hypervisor或硬件上運(yùn)行,不需要類(lèi)似Linux或Windows的操作系統(tǒng)介于其中。

  ---- 維基百科:Unikernel

  都清楚了,對(duì)嗎?

  好吧!如果是我,或許以上并沒(méi)有說(shuō)太多。接下來(lái)是我對(duì)Unikernel的解釋。

  首先,讓我們跟著這里的例子回顧一下。假設(shè)你是一個(gè)開(kāi)發(fā)者在寫(xiě)PHP應(yīng)用。當(dāng)你運(yùn)行你的PHP(其他Ruby、Node、Perl均類(lèi)似)應(yīng)用,你本質(zhì)上是在運(yùn)行:

  ◆語(yǔ)言解釋器:PHP、Perl、Ruby、...

  ◆調(diào)用操作系統(tǒng)中系統(tǒng)級(jí)別的API。

  ◆其中的一些API調(diào)用需要不同級(jí)別的權(quán)限,強(qiáng)制切換應(yīng)用程序的上下文...(用戶(hù)空間 vs. 內(nèi)核空間)。

  ◆所有運(yùn)行在操作系統(tǒng)上,例如CentOS、Debian、Ubuntu、...

  ◆或許是運(yùn)行在VM上,例如VMware、Xen、KVM、...

  ◆或許是運(yùn)行在自己的虛擬化管理系統(tǒng)上,例如ESXi、Xen Hypervisor...

  ◆依次運(yùn)行在硬件上

  ◆通過(guò)BIOS或UEFI來(lái)引導(dǎo)

  說(shuō)老實(shí)話(huà),如果你在抽象一個(gè)應(yīng)用程序構(gòu)建所需的所有層次,這會(huì)是一個(gè)奇跡般的工作。

  但是他們做到了。并且做得非常好,有較好的性能。但是你必須認(rèn)識(shí)到,在提供應(yīng)用運(yùn)行環(huán)境的硬件到應(yīng)用程序本身存在許多層。

  那就是Unikernel試圖解決的:刪除應(yīng)用與硬件中間臃腫的部分。讓最“精簡(jiǎn)”的操作系統(tǒng)運(yùn)行你的代碼。

  這里有一篇論文總結(jié)得非常好:

  Unikernel的愿景:當(dāng)你看到云客戶(hù)端時(shí)就像看到單應(yīng)用硬件一樣。

  - The Rise and Fall of the Operating System

  Unikernel試圖抹去現(xiàn)代操作系統(tǒng)帶來(lái)的一些復(fù)雜性。因?yàn)?ldquo;通用”的操作系統(tǒng)(就像任何Linux和Windows的發(fā)行版),通常會(huì)伴隨著帶來(lái)一些對(duì)你的應(yīng)用來(lái)說(shuō)并不需要的驅(qū)動(dòng)、依賴(lài)包、服務(wù)、等等,但這些對(duì)每一個(gè)操作系統(tǒng)來(lái)說(shuō)某種程度上又是必需的。

  甚至是在Linux內(nèi)核的核心模塊都并不是需要每一次都完全加載。像USB驅(qū)動(dòng)這類(lèi)東西在虛擬化的“云”環(huán)境被認(rèn)為是無(wú)用的,但仍然會(huì)被包含在內(nèi)核中。

  相比容器和虛擬化,Unikernel所呈現(xiàn)的演進(jìn)如下圖:

  unikernels

  Unikernel對(duì)比通用的操作系統(tǒng),例如Linux有許多優(yōu)勢(shì):

  ◆安全性的提升:只運(yùn)行操作系統(tǒng)的核心,廢棄掉那些可能是干擾源的視頻和USB驅(qū)動(dòng)。

  ◆占用很小空間:想象一下能夠抹去95%內(nèi)核的大小,因?yàn)槟愕膽?yīng)用不需要那些。

  ◆定制的實(shí)現(xiàn):深諳應(yīng)用并且把內(nèi)核精簡(jiǎn)調(diào)整到你想要的部分。

  ◆ 快速精準(zhǔn)的運(yùn)行Unikernel實(shí)例(就像運(yùn)行一個(gè)Docker實(shí)例一樣),啟動(dòng)時(shí)間少于1s。

  這樣,我們非常自然的把Unikernel當(dāng)作是微服務(wù)的備選方案。

  用Unikernel抹去復(fù)雜的中間層

  如果你運(yùn)行應(yīng)用之后想要它的開(kāi)銷(xiāo)是最小的,那你就可能要考慮制作一個(gè)Unikernel。

  為此,要使用庫(kù)操作系統(tǒng)LibOS。一個(gè)庫(kù)操作系統(tǒng)會(huì)給你提供構(gòu)建自己的Unikernel的方式。最值得關(guān)注的是MirageOS(術(shù)語(yǔ)“unikernel”的創(chuàng)造者)和Rump Kernels。兩者本質(zhì)上都是一系列標(biāo)準(zhǔn)化的驅(qū)動(dòng)和庫(kù),這樣你就不需要重復(fù)發(fā)明像TCP棧、持久存儲(chǔ)層等這類(lèi)東西。

  Unikernel是用高級(jí)語(yǔ)言定制的操作系統(tǒng)內(nèi)核,并且作為獨(dú)立的軟件構(gòu)件。完整的應(yīng)用(或應(yīng)用系統(tǒng))作為一個(gè)分布式系統(tǒng)運(yùn)行在一套u(yù)nikernels上。

  MirageOS基于OCaml語(yǔ)言并且讓unikernels運(yùn)行在Xen hypervisor上。

  -- queue.acm.org: Unikernels: Rise of the Virtual Library Operating System

  目前***的用來(lái)寫(xiě)unikernel的語(yǔ)言是:

  ◆Rust

  ◆Go (or 'golang')

  ◆OCaml

  ◆Haskell

  這些并不都是新的編程語(yǔ)言。除了Go和Rust,其他均有超過(guò)15年的歷史。

  為了使操作系統(tǒng)和應(yīng)用運(yùn)行得更加流暢,這些unikernel庫(kù)需要使用內(nèi)核部分盡可能小。

  現(xiàn)在,由于虛擬化技術(shù),像Xen或VMware這類(lèi)虛機(jī)管理系統(tǒng)(注*:原Operating System)把異構(gòu)的硬件設(shè)備抽象成一堆標(biāo)準(zhǔn)的虛擬化設(shè)備,unikernel也能為定制的虛擬設(shè)備而優(yōu)化。

  Unikernel利用虛擬化的優(yōu)勢(shì)創(chuàng)造出一種專(zhuān)屬的經(jīng)過(guò)優(yōu)化的操作系統(tǒng)。

  想要編譯應(yīng)用程序的“unikernel”,需要依賴(lài)MirageOS的庫(kù)和OCaml語(yǔ)言,結(jié)果像這樣:

  編譯器輸出一個(gè)完全獨(dú)立的內(nèi)核取代Unix可執(zhí)行文件。這些unikernels是只為滿(mǎn)足特定的應(yīng)用程序和配置文件而實(shí)現(xiàn)的庫(kù)操作系統(tǒng)VM,并且會(huì)依賴(lài)hypervisor提供的資源復(fù)用和隔離。

  --- queue.acm.org: Unikernels: Rise of the Virtual Library Operating System

  最終你通過(guò)運(yùn)行一個(gè)Unikernel,精簡(jiǎn)專(zhuān)屬的操作系統(tǒng),來(lái)運(yùn)行你應(yīng)用程序的一部分。如果你的應(yīng)用和配置需要更新,你需要重新編譯你的源碼來(lái)生成新的Unikernel并部署新版本。如果是新的安全升級(jí)?也同樣需要重新編譯和部署。

  這將使部署的協(xié)調(diào)和編排更加困難,但好處是運(yùn)行應(yīng)用程序更加高效。

  構(gòu)建不可變的基礎(chǔ)設(shè)施架構(gòu)的關(guān)鍵在于:應(yīng)用程序不再保存狀態(tài),并且能方便地丟棄和重新構(gòu)建。

  一方面,我們可以讓Unikernel運(yùn)行在Docker容器中,但是是否應(yīng)該盡量避免增加其他復(fù)雜的中間層?另一方面,Docker在使用和部署上的優(yōu)勢(shì)確實(shí)可以彌補(bǔ)這點(diǎn)中間層的開(kāi)銷(xiāo)。

  誰(shuí)應(yīng)該使用Unikernel?

  實(shí)話(huà)實(shí)說(shuō),這個(gè)問(wèn)題的答案對(duì)我來(lái)說(shuō)還并不明確。我認(rèn)為如果你現(xiàn)在是要在WordPress上部署web應(yīng)用,使用Unikernel也許還有一定的鴻溝。

  另一方面,Unikernel的好處是明顯的,但需要一個(gè)完全不同的模式來(lái)管理你的基礎(chǔ)設(shè)施,一組不同的技能來(lái)構(gòu)建這類(lèi)的應(yīng)用和內(nèi)核并且需要深諳目前對(duì)我們來(lái)說(shuō)還完全陌生的一個(gè)概念:不可變的基礎(chǔ)設(shè)施架構(gòu)。

  也許在今后的5至10年,我們會(huì)以新的規(guī)范一樣來(lái)部署Unikernel。目前,我認(rèn)為它針對(duì)一小部分想要相當(dāng)專(zhuān)業(yè)和安全應(yīng)用的用戶(hù)。對(duì)于大多數(shù)普通用戶(hù),虛機(jī)(或是,如果你走在技術(shù)前沿一定會(huì)明白:Docker容器)或許才是你應(yīng)該專(zhuān)注的。

更多Unikernel相關(guān)閱讀:

如果您對(duì)這個(gè)主題感興趣,推薦您一些相關(guān)鏈接:

責(zé)任編輯:武曉燕 來(lái)源: DockerOne
相關(guān)推薦

2016-06-13 14:49:40

2023-12-20 08:23:53

NIO組件非阻塞

2021-11-12 05:59:23

容災(zāi)備份5G

2022-09-28 18:16:34

JavaJDK

2024-08-01 17:34:56

Promiseaxios請(qǐng)求

2019-03-14 12:39:55

安全云計(jì)算深信服

2020-09-03 06:42:12

線(xiàn)程安全CPU

2024-07-30 08:22:47

API前端網(wǎng)關(guān)

2021-11-09 09:39:21

路由器硬件設(shè)備網(wǎng)絡(luò)

2024-11-08 09:48:38

異步編程I/O密集

2016-09-29 15:43:33

2022-11-28 00:04:17

2024-01-15 12:16:37

2023-07-11 00:12:05

2024-06-27 10:51:28

生成式AI領(lǐng)域

2024-03-19 08:01:54

服務(wù)熔斷軟件設(shè)計(jì)模式微服務(wù)

2024-02-19 07:44:52

虛擬機(jī)Java平臺(tái)

2023-03-06 16:38:30

SQL數(shù)據(jù)庫(kù)

2025-01-20 13:28:27

Python海象表達(dá)式代碼

2022-08-01 11:32:57

Linux內(nèi)核版本
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)