容器和 Unikernel 能從樹莓派和 Arduino 學到什麼?
某一天,我和我的一個機械工程師朋友聊天的時候。 他最近在做一個給半掛卡車的電子輔助剎車系統,他提到他們公司的辦公室里都是 Arduinos。這主要是方便員工可以快速的對新的想法進行實驗。他也提到了,Arduinos 其實比自己畫電路板更加昂貴。對此,我感到非常震驚,因為我從軟體行業得到的印象是 Arduinos 比定製電路板更加便宜。
我常常把 Arduinos 和 樹莓派 看做是可以製作非常有趣設備的小型、Cool、特別的組件。我主要從事於軟體行業,並且總是覺得運行在 x86 和 x86-64 設備上的 Linux 才算是「常規用途」。而事實是,Arduinos 並不是特殊用途。實際上,它們是很常規的用途。它們相當的小、便宜,而且非常的靈活。這就是為什麼它們像野火一樣流行起來的原因。它們有全品類的輸入輸出設備和擴展卡。它們能讓創客們快速的構建非常 Cool 的設備。它們甚至可以讓公司可以快速地開發產品。
一套 Arduino 的單價比批量生產的電路板高了很多,但是,看不見的時間成本卻低了很多。當電路板大規模生產的時候,價格可以控制的很低,但是,之前的研發費用卻高了很多。所以,總而言之,答案就是,使用 Arduino 划得來。
Unikernel、Rump 內核和容器主機
Unikernel、Rump 內核和迷你 Linux 發行版,這些操作系統是為了特有用途而構建的。這些特有的操作系統,某種程度上就像定製電路板。它們需要前期的投入,還需要設計,但是,當大規模部署的時候,它可以提供強大的性能。
迷你操作系統,例如:紅帽企業版 Atomic 或者 CoreOS 是為了運行容器而構建的。它們很小,快速,易於在啟動時配置,並且很適合於運行容器。缺點就是它需要額外的工程量來添加第三方插件,比如監控客戶端或者虛擬化的工具。副作用就是載入的工具也需要重新設計為超級許可權的容器。 如果你正在構建一個巨大的容器環境,這些額外的工作量是划算的。但是,如果只是想嘗試下容器,那可能就沒必要了。
容器提供了運行標準化的工作流程(比如使用 glibc 編譯)的能力。一個好處就是你可以在你的電腦上構建和測試這個工作單元(Docker 鏡像)並且在完全不同的硬體上或者雲端非常順利的部署,而保持著相同的特性。在生產環境中,容器的宿主機仍然由運維團隊進行配置管理,但是應用被開發團隊控制。這就是對雙方來說最好的合作方式。
Unikernels 和 Rump 內核依舊是為了特定目標構建的,但是卻更進一步。整個的操作系統在構建的時候就被開發或者架構師配置好了。這帶來了好處,同時還有挑戰。
一個好處就是,開發人員可以控制這個工作流程的運轉。理論上說,一個開發者可以為了不同的特性,嘗試 不同的 TCP 協議棧,並且選擇最好的一個。在操作系統啟動的時候,開發人也可以配置 IP 地址,而不是通過 DHCP。 開發人員也可以裁剪任何對於應用而言不需要的部分。這也是性能提升的保障,因為減少了不必要的上下文切換。
同時,Unikernel 也帶來了挑戰。目前,還缺失很多的工具。 現在,和畫板子的世界類似,開發人員需要花費很多時間和精力在檢查是否有完整的庫文件存在,不然的話,他們必須改變他們應用的執行方式。在如何讓這個「嵌入式」的操作系統在運行時配置的方面,也存在挑戰。最後,每次操作系統的大改動,都需要反饋到開發人員來進行修改。這並沒有一個在開發和運維之間明確的界限,所以我能想像,為了接受了這個開發流程,一些組織或者公司必須要改變。
結論
在專門的容器主機比如 Rump 內核和 Unikernel 方面也有一些有趣的傳聞,因為,它們會帶來一個特定工作流程的潛在變革(嵌入式、雲,等等)。在這個令人激動又快速發展的領域請保持你的關注,但是也要謹慎。
目前,Unikernel 看起來和定製電路板很像。它們都需要前期的研發投資,並且都是非常獨特的,可以為確定的工作流程帶來好處。同時,容器甚至在常規的工作流中都非常有趣,而且它不需要那麼多的投入。一個簡單的例子,運維團隊能方便的在容器上部署一個應用,但是在 Unikernel 上部署一個應用則需要重新設計和編碼,而且業界並不能完全保證,這個工作流程就可以被部署在 Unikernel 上。
容器,Rump 內核 和 Unikernel 有一個光明的未來!
via: https://opensource.com/business/16/5/containers-unikernels-learn-arduino-raspberry-pi
作者:Scott McCarty 譯者:MikeCoder 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive