本文關鍵字:将桌面環境,toolchain設計為subsystem,rootfs as Xaas,rootfs層次的虛拟化,非Virtual OS Infrastructure,第二PC,子產品化機箱,第二PC,存儲,計算分開機箱,nas另置主機,mirror os,mateos,自建icloud,本地遠端通用的雲os,雲app
在《bcxszy:applvl programming》整個選型中,雖然我們經常強調xaas,langsys,appstack,app四棧一體的開發,但xaas跟其它部分在本書中一直是分開的并割裂成二部分,我們一直将眼光聚焦在applvl開發,卻視xaas平台為devops工具,裝機運維和虛拟化容器層面的東西,這些隻是高于開發并不影響開發的東西,它本身并沒有任何開發元素的整合:比如一種語言,一種運作時,一種庫,一種appmodel,一種問題,etc..,是以它本質上跟applvl的開發并沒有得到整合,本書目錄制定上,第一部分的xaas部分《OS/TOOLCHAIN LANGSYS/XAAS》主要解決接下來為《APP LANGSYS/MIDDLEWARE STACKS/DEVOPS TOOLS》定制xaas服務的過程,xaas隻是一直為applvl開發作鋪墊,在《bcxszy》的序言中我們的選型也一直是語言系統和開發開始的,沒有平台選型相關的部分。
這是因為傳統XAAS系統程式設計領域與applvl程式設計領域是分開的,它可以不是直接的app hosting影響開發 —— 事實上,大部分虛拟機語言和開發體系都是這樣處理的:将app托管在另外的hosting,脫離和超越native平台的程式設計和軟體開發才是主流。大部分專用os也都是這樣處理的如lnmp這樣的東西它強調的是一種串序的四棧結構,它将linux作為xaas,php作為langys,nm appstack作為appstack,把webapp作為appmodel。
而xaas可以是一種新型的平台,因為慢慢地,在整個第一部分,我們發現,我們也可以将一些applvl開發的部分及早地上升到os層次。如GO作為分布式語言,它更進了一步,它将lang vm整合進入了app。如plan9和usermode plan9,它将分布式協定實作在kernel或rootfs,進而影響這種OS xaas下的app開發。——— 也就是說:在開發相關的四棧整合進行中,它可以以整合後三者的亂序方式進行,甚至它能居于langsys和appstack之上或寄宿其中。整合《bcxszy》的第一,二部分為真正的四棧一體的一部分。并制作出一種新的專用OS - goblinx。
Xaas的選型:高于開發的部分,和融合開發的部分
來歸納一下整書我們對xaas的選型路徑:
在《釋出一統tinycolinux,帶openvz,帶pelinux,帶分離目錄定制》系列中,我們講到了一種host與guest分離,支援實機虛拟化,并良好組織在/system下的linux設計 — the pe as mainly裝機系統,那時我們集中于裝機的想法,我們想得到一個類似esxi 的東西,相信相容os一直是人們的一個夢想,而我們一直都沒有到達過,這種相容OS的思想在《相容多OS or 融合多OS?打造基于osxpe的融合OS管理器》一文中再次被提到。
在《利用hashicorp packer把dbcolinux導出為虛拟機和docker格式》系列中,我們加入了devops思想,并去掉了為實機/裸金屬/雲主機作裝機虛拟化hypior的首要需求,棄ovz選用這次的lxc主要是為了devops。lxc可以作為app容器,也可以作為系統容器,我們還是将其實作為一個pe。
這一代的dbcolinux是一個融合os(比如用osx base當parallesdesk的os,windows和osx作為其subos,這樣osx base就是pd的專用os了)的不斷增強,接下來的二個增強就強烈涉及到了開發:
在《打造一個Applevel虛拟化,内置plan9的rootfs:goblin(1)》中,我們提到了整合go,plan9到這個linux的思想:并提到了這樣做的底層依據:整合busybox或plan9這樣的live demo服務到每一個app作rootfs虛拟化,将虛拟內建到APP級,可以促成無架構APP,最重要的,将虛拟化做到app級,可以将devops也做到app級,比如,工具級的IDE就能生成app包做到包管級。利用一個工具Provisioner了,這二者可以達成最簡單最實用的程式設計典範。plan9這種協定,是天生的本地遠端同步/通訊協定,可以免協定開發(因為它是demo級的,甚至不是一個lib)在本地和遠端都能運作的APP,且無修改地工作在一個OS下,就如同git p2p協定一樣。由于它也是一種同步協定,甚至可以為每一個 app建立如pouchdb一樣的内容同步機制。這樣更接近天然雲化了。
甚至hyperkit,Lektor:用開發本地tcpip程式的思路開發webapp,Shell式程式設計:會用就能程式設計,把問題域整合進系統域。這種思路,我們都提到了。
最終在《一種含雲主機叢集,雲OS和雲APP的架構全融合設計》中,我們提到分布式架構的本質問題是OS和APP的選型和實作問題,這就是說,在整創出新xaas,langsys,appstack,app四棧進行中,OS是一個可以将APP和APPDEV上升先行的路徑,比如在OS級自帶分布式支援的系統肯定出來的
本文即是上文《一種含雲主機叢集,雲OS和雲APP的架構全融合設計》關于goblinux的特化版。
Goblin基于上述融合設計的強化
在上文《一種含雲主機叢集,雲OS和雲APP的架構全融合設計》中,我們從這種OS适用的硬體,叢集開發,所用的OS到所開發的APP都講到了,那麼現在,我們繼承從tinycolinux->dbcolinux->goblinux系列的成果,一點一點,将前2者附加到整合了後者的版本上去:goblinux的實作實用版本。
在硬體上,goblinux,就不追求多PC叢集了,為實用起見,它可以是二台PC,大體上,這二台PC是計算和存儲分開的機箱設計,你可以想象它為一台類似群晖mini itx機箱nas上面又加了一塊主機闆,市面上這種mini itx子產品化機箱蠻多的,但雙主機闆和不多見,在這種設計中,主存儲的主機闆可以用nano itx或更小一點的pico都可以,主計算和日常使用的那塊主機闆可以接近一台普通mini itx。如果可以,你也可以三主機,一台路由器主機,但實際上,路由器更适合與前二者分體,這二台pc,一台裝gui生産/開發環境。一台裝file server/mirror cloud環境。都是goblinux子系統。
在OS上,也可以是一個管理器下的二個融合OS,主pe的goblinux就是像群晖那樣的rom boot = grub+kernel+srs driver libs+bootpe,它很小。這個主PE goblinux内含三個系統,一個guy desktop,一個file server, 一個connect server, 對應上面的三主機。前二個OS是标配,要做成融合結構,代表分布式的本地/遠端端,一個GUI,一個mirror tolocal遠端osstub,它裡面沒有app,不需要維護,是個黑盒,沒有界面,隻有資料。但是也不給維護接口。所有的操作在local mirrored gui作業系統,Mirror os可用于裝在上述提到的本地另外一台nas pc上,也可以裝在純軟體融合os管理器下的file server子系統上。file server也可放廣域網追求異地檔案備份效果隻是互動性能大減。可脫網使用,重新聯網時,将同步遠端。注意這并不是VOI,VDI那套。
開發支援上,如上所述,這是一種天然的分布式APP和雲化APP開發内置的軟硬結構。它有以下幾個特點:
如上所述,用go,且利用9p實作無須協定互動的本地遠端p2p,寫git之類的東西,因為plan9有os級的實作也有linux的userspace實作品,甚至有9p lib。demo态,可以in the kernel, or embedded in a subos,rootfs,or app,運作态與開發态的差別是,demo級rootfs的9p是運作級的不需被程式設計,而開發級的是預程式設計。9p usrspace 9p是demo level級的。為現階段簡單起見,plan9p隻內建在usrspace級,且用demolvl的。
—————
本文過後,我們會一步一步整合實作接近上述理想化的goblinux,無論如何,我們這是在将平台選型慢慢地實踐弄成一個現實品的過程,和強化goblinux的最終過程。
Xaas内容過多,為清晰化起見,我們依然選擇不整合第一二部分目錄。
(此處不設回複,掃碼到微信參與留言,或直接點選到原文)
