對物聯(lián)網(wǎng)操作系統(tǒng)特征和定位的思考
在周末的上午,坐在五道口Starbucks咖啡廳里,慢慢啜著稍帶苦澀的冰美式,嚼著偶爾從吸管里吸上來的焦糖粒,目光停留在玻璃窗外來回穿梭的車輛上,心緒散漫…很久沒有這么悠閑和放松了。記得***次喝星巴克的美式(Americano)咖啡,貌似是2004年,在中東的巴林做項目,跟客戶交流的時候。當(dāng)時也是周末,交流地點(diǎn)就定在一個星巴克咖啡廳里。有兩個客戶,名字都很阿拉伯化,一個叫做Ahmad(貌似翻譯為艾哈邁德),另外一個叫做Mohamod(莫哈默德),分別是巴林電信的CTO和副總裁。當(dāng)時交流的內(nèi)容,是如何把客戶基于電路交換的電話網(wǎng)(PSTN),演進(jìn)為基于IP承載的NGN。十年過去了,現(xiàn)在貌似還是做著同樣性質(zhì)的工作,不過內(nèi)容變了,是如何把客戶的IP網(wǎng)絡(luò),演進(jìn)為SDN。
本文的主題仍然是物聯(lián)網(wǎng)操作系統(tǒng),上面的內(nèi)容純粹是作為引子,與本文后面的內(nèi)容沒有任何邏輯關(guān)系。如果非要找出一點(diǎn)聯(lián)系的話,那么只能是哲學(xué)層面的聯(lián)系了,那就是任何事情都在變化和演進(jìn),永不休止。物聯(lián)網(wǎng)領(lǐng)域也是這樣,雖然至今未成氣候,但是其架構(gòu)演進(jìn)的速度,或者說“折騰”的速度,一點(diǎn)也不比電信網(wǎng)絡(luò)慢。最初的時候,物聯(lián)網(wǎng)被定義為三層架構(gòu),即所謂的傳感層,網(wǎng)絡(luò)層,后臺支撐層。很多公司或組織,按照這種結(jié)構(gòu)推出了產(chǎn)品,比如愛立信,推出了基于其核心網(wǎng)平臺的EDCP(貌似是愛立信設(shè)備連接平臺),***制放大網(wǎng)絡(luò)層的功能要求,因為這是其客戶-電信運(yùn)營商關(guān)注的領(lǐng)域。很多電信運(yùn)營商,也被設(shè)備商忽悠,投資建設(shè)了遵循這三層架構(gòu)的物聯(lián)網(wǎng)平臺,結(jié)果虧得一沓糊涂。后來,物聯(lián)網(wǎng)公司,比如BAT等,發(fā)現(xiàn)物聯(lián)網(wǎng)是一個潛在的市場空間,于是切入進(jìn)來,按照互聯(lián)網(wǎng)思維來做物聯(lián)網(wǎng),于是物聯(lián)網(wǎng)又被這些互聯(lián)網(wǎng)巨頭定義為兩層,即終端層和平臺層。其中終端設(shè)備直接與平臺層鏈接,弱化了原來架構(gòu)中的“網(wǎng)絡(luò)層”。在這種結(jié)構(gòu)下,互聯(lián)網(wǎng)公司提供平臺服務(wù),這樣就面臨一個問題,如何讓海量的,種類各不相同的終端,接入到互聯(lián)網(wǎng)公司的平臺呢?在沒有標(biāo)準(zhǔn)可以遵循的情況下,只有兩條途徑,一條是把平臺做得足夠大足夠好,形成事實標(biāo)準(zhǔn),形成壟斷效應(yīng)。但是物聯(lián)網(wǎng)行業(yè)是發(fā)展初期,很難形成這樣一家獨(dú)大的平臺,于是就只能采取第二個途徑-結(jié)盟,說白了就是平臺廠商和終端廠商聯(lián)合起來,定義一個私有的標(biāo)準(zhǔn),然后自己玩。最普遍的表現(xiàn),就是互聯(lián)網(wǎng)公司與家電廠商結(jié)盟,比如小米和格力,海爾與阿里,等等。結(jié)盟模式是最不利于行業(yè)發(fā)展的,尤其是在行業(yè)發(fā)展的初期。結(jié)盟的結(jié)果,是形成了一個個小的,封閉的領(lǐng)域,因為聯(lián)盟之間的標(biāo)準(zhǔn)不同,相互之間不能交互,其結(jié)果可想而知。
在電信行業(yè)混了這么多年,深知這個行業(yè)的諸多弊端會嚴(yán)重阻礙物聯(lián)網(wǎng)的發(fā)展,因此我個人更傾向于互聯(lián)網(wǎng)公司來做物聯(lián)網(wǎng)。但互聯(lián)網(wǎng)公司采用結(jié)盟的方式,卻是非常不合適的。為了克服結(jié)盟的弊端,必須在終端和平臺之間,插入一個”中間層“,把這種強(qiáng)耦合關(guān)系打破。這個中間層,就是物聯(lián)網(wǎng)操作系統(tǒng)。
物聯(lián)網(wǎng)操作系統(tǒng)的概念,是與電信行業(yè)的幾個同仁交流后提出的,起初的目的,并不是解決互聯(lián)網(wǎng)與終端廠商結(jié)盟的問題,而是站在運(yùn)營商的角度上,試圖解決運(yùn)營商網(wǎng)絡(luò)在物聯(lián)網(wǎng)領(lǐng)域面臨的挑戰(zhàn)。一個典型的場景,就是智能抄表解決方案中可能導(dǎo)致的無線網(wǎng)絡(luò)信令風(fēng)暴。考慮一個安裝了百萬電表級別的城市,所有電表通過運(yùn)營商的無線網(wǎng)絡(luò)連接到抄表平臺。在月底的時候,同時上報抄表數(shù)據(jù),這時候大量電表同時產(chǎn)生的無線信令,會把運(yùn)營商網(wǎng)絡(luò)搞垮。于是希望在終端層面,嵌入運(yùn)營商提供的操作系統(tǒng),操作系統(tǒng)中內(nèi)嵌定制化的網(wǎng)絡(luò)訪問規(guī)則,把并發(fā)的大批量的網(wǎng)絡(luò)訪問,變成平緩的分散訪問。
后來隨著與更多的業(yè)內(nèi)人士交流和碰撞,對物聯(lián)網(wǎng)操作系統(tǒng)的概念做了進(jìn)一步的思考之后,重新定位為解決上面描述的結(jié)盟問題。在2014年的一篇文章中,對如何解決結(jié)盟問題,以及物聯(lián)網(wǎng)操作系統(tǒng)的整體框架,做了詳細(xì)描述。這個定位和框架,引起很多業(yè)內(nèi)人士的共鳴,大部分持認(rèn)同態(tài)度。
具體來說,在缺乏標(biāo)準(zhǔn)的情況下,要打破結(jié)盟的有效措施,就是軟硬件分離。終端廠商只聚焦終端功能的開發(fā),這是他們的強(qiáng)項。把終端功能通過操作系統(tǒng)API的形式暴露出來,提供給軟件APP調(diào)用。比如一個智能開關(guān),只要通過API,提供開關(guān)打開,關(guān)閉,調(diào)節(jié)電量,網(wǎng)絡(luò)連接等功能。具體什么時候打開,與其它家電設(shè)施如何聯(lián)動,如何形成有價值的智慧家庭解決方案,則是智能家電平臺廠商要做的工作。平臺廠商開發(fā)運(yùn)行在智能開關(guān)上的應(yīng)用程序(APP),調(diào)用智能開關(guān)提供的API,實現(xiàn)智慧家庭功能。由于具體的通信協(xié)議和業(yè)務(wù)邏輯,是由平臺廠商自己實現(xiàn)的,因此就不存在強(qiáng)綁定的問題。智能開關(guān)的用戶,可以通過更換APP的形式,來更換智慧家庭服務(wù)提供商。這種模式與智能手機(jī)是一致的,可以通過安裝或卸載APP,來靈活選擇電子商務(wù)提供商。但是物聯(lián)網(wǎng)終端與PC不同,不像PC這么標(biāo)準(zhǔn),有固定的架構(gòu)和指令系統(tǒng),物聯(lián)網(wǎng)終端的架構(gòu)多種多樣,CPU更是千變?nèi)f化。為了確保同一款A(yù)PP能夠應(yīng)用在多種多樣的硬件上,必須采用硬件無關(guān)語言來編寫APP。比如Java,比如Python。當(dāng)前HelloX操作系統(tǒng)采用的是Java語言。
物聯(lián)網(wǎng)的另外一個特征-碎片化,也是物聯(lián)網(wǎng)操作系統(tǒng)必須要解決的。所謂碎片化,是指物聯(lián)網(wǎng)終端的硬件配置各種各樣,比如內(nèi)存配置,從只有十幾K甚至幾K內(nèi)存,到數(shù)十M或數(shù)百M(fèi)。再比如外圍設(shè)備,有的僅僅具備簡單的傳感和網(wǎng)絡(luò)功能,而復(fù)雜一點(diǎn)的終端,則具備完善的Ethernet或LTE連接支持。碎片化會導(dǎo)致企業(yè)開發(fā)成本的劇增,因為你必須為一些終端選擇低端的操作系統(tǒng),為另外一些終端選擇相對高端的操作系統(tǒng)。這些操作系統(tǒng)提供的工作機(jī)制和API都是不同的,這樣就會導(dǎo)致企業(yè)無法共享開發(fā)和維護(hù)經(jīng)驗,無法共享代碼和人力。物聯(lián)網(wǎng)操作系統(tǒng)必須要解決這個問題。目前來說,可能的解決方案,就是可裁剪性。同一個操作系統(tǒng),通過裁剪或動態(tài)配置,既能夠適應(yīng)低端的需求,又能夠滿足高端復(fù)雜的需求,而共享相同的工作機(jī)制和API,以及開發(fā)工具。
在滿足上述兩個條件的前提下,物聯(lián)網(wǎng)操作系統(tǒng)還必須能夠支撐物聯(lián)網(wǎng)的另外一個重要特征-本地協(xié)同。舉例來說,智能開關(guān)應(yīng)該可以與智能電視協(xié)同,在智能電視被關(guān)閉后,應(yīng)該能夠通知智能開關(guān),以切斷電源,節(jié)約電量。這包含了本地設(shè)備發(fā)現(xiàn),能力交互,工作協(xié)同等幾個相互關(guān)聯(lián)的要素。很多協(xié)議或標(biāo)準(zhǔn)可以支撐這種操作,比如AllSeen聯(lián)盟搞的AllJoyn標(biāo)準(zhǔn)等。物聯(lián)網(wǎng)操作系統(tǒng)可以自己定義相關(guān)交互規(guī)則,也可以直接集成AllJoyn等。總之相對上述兩個特征,支撐本地協(xié)同要簡單得多。
說了這么多,就是試圖對物聯(lián)網(wǎng)操作系統(tǒng)做一個定義。并不是所有的操作系統(tǒng)都是物聯(lián)網(wǎng)操作系統(tǒng),只有滿足上述三個特點(diǎn),即能夠支持軟硬件分離,支持碎片化特征,支持本地協(xié)同的操作系統(tǒng),才算是物聯(lián)網(wǎng)操作系統(tǒng)。這只是個人的理解,不同意見的朋友,可以探討交流。只有本著開放合作的態(tài)度,找到***公約數(shù),然后逐步擴(kuò)大這個***公約數(shù),才能慢慢的把一個行業(yè)做好。需要注意的是,這里強(qiáng)調(diào)的是“開放合作“,而不一定非要”合作共贏“。經(jīng)濟(jì)學(xué)中有一個著名的概念,叫做”帕累托改進(jìn)“,是指在參與經(jīng)濟(jì)活動中的多個player之間,任何一個player經(jīng)濟(jì)利益的擴(kuò)大,只要不會導(dǎo)致其它player的利益降低,都叫做帕累托改進(jìn)。因為這種改進(jìn),會導(dǎo)致整體經(jīng)濟(jì)效益的改進(jìn)。在物聯(lián)網(wǎng)領(lǐng)域的合作,我們也建議遵循帕累托改進(jìn)的原則。另外一個觀點(diǎn)就是,物聯(lián)網(wǎng)操作系統(tǒng)必須是中立的,即不傾向于支持任何廠商的終端,也不傾向于支持任何廠商的物聯(lián)網(wǎng)后臺系統(tǒng)。同時,物聯(lián)網(wǎng)操作系統(tǒng)必須要開源,以展示開放和中立。
物聯(lián)網(wǎng)操作系統(tǒng)的概念似乎得到了越來越多的認(rèn)同。這幾天,華為在一個SDN大會上,發(fā)布了叫做LiteOS的物聯(lián)網(wǎng)操作系統(tǒng),主要支持自有的芯片和物聯(lián)網(wǎng)終端,并內(nèi)置私有的協(xié)議,與自產(chǎn)的物聯(lián)網(wǎng)網(wǎng)關(guān)進(jìn)行配合。實際上,在2014年的行業(yè)分析師大會上,華為就公布了開發(fā)物聯(lián)網(wǎng)操作系統(tǒng)的想法。但是如果用我們上面定義的三個特征來匹配,就會發(fā)現(xiàn)華為發(fā)布的操作系統(tǒng),不滿足上述全部特征。首先,從目前能夠拿到的信息來看,LiteOS并不能支持軟硬件分離,也不能保持中立性,因為其目的,還是希望對自有芯片進(jìn)行更好的支持,同時與自產(chǎn)的物聯(lián)網(wǎng)網(wǎng)關(guān)進(jìn)行配合,有很強(qiáng)的傾向性。雖然宣稱要開源,但是至今尚未看到其源代碼。實際上,我個人是很期望華為能夠發(fā)布一款真正的物聯(lián)網(wǎng)操作系統(tǒng)的。依托操作系統(tǒng),建立一個完整的產(chǎn)業(yè)鏈,從而促進(jìn)行業(yè)的發(fā)展。依華為的實力和品牌,完全可以做到這一點(diǎn)。但是對LiteOS的發(fā)布,卻有一些失望的情緒,首先其名字,就不太合適。物聯(lián)網(wǎng)操作系統(tǒng)可不能僅僅是Lite,而應(yīng)該能大能小,小可以Lite,大則可能比通用操作系統(tǒng)還要復(fù)雜。但LiteOS未來的發(fā)展如何,目前下結(jié)論顯然太早,還需要長時間的觀望。個人仍然期望LiteOS能夠真正發(fā)展起來,改變筆者對Lite長期以來形成的貶義印象。
另據(jù)國外媒體報道,Google也將在近期的I/O大會上,發(fā)布一款物聯(lián)網(wǎng)操作系統(tǒng)Brillo。剛看到這則新聞,我心中的沖擊是很大的,顯然,Google認(rèn)識到了Android不能適應(yīng)物聯(lián)網(wǎng)的需求,終于另起爐灶了。但是看到報道中描述的細(xì)節(jié),Brillo還是依托Android的內(nèi)核開發(fā),能夠適應(yīng)32M到64M的內(nèi)存要求,我個人又失望了。顯然,依托Android框架,采用Java語言實現(xiàn)軟硬件分離,完全滿足物聯(lián)網(wǎng)操作系統(tǒng)支持軟硬件分離的特征。但是卻不能支持碎片化特征,顯然32M以上的內(nèi)存要求,就把絕大多數(shù)物聯(lián)網(wǎng)終端排除在外了。因此,個人不認(rèn)為Brillo能夠像Android一樣,一統(tǒng)物聯(lián)網(wǎng)領(lǐng)域。但結(jié)果如何,還是需要實際表現(xiàn)來說明。
另外,騰訊也發(fā)布了用于物聯(lián)網(wǎng)領(lǐng)域的操作系統(tǒng)TOS,但是其內(nèi)核,仍然是基于Android,還不如Brillo。還有一些其它的物聯(lián)網(wǎng)操作系統(tǒng),就不一一評論了,朋友們可參照上面的討論,自行印證一下。
***,還是要說一下HelloX項目。顯然,HelloX操作系統(tǒng)是必然滿足上述討論的物聯(lián)網(wǎng)操作系統(tǒng)的特征的,因為我們就是按照上述特征,來開發(fā)HelloX的。對于軟硬件分離的支持,HelloX通過移植一個業(yè)界廣泛使用的嵌入式Java虛擬機(jī)JamVM,通過Java語言來實現(xiàn)。這種實現(xiàn)方式,與Android通過Java語言是實現(xiàn)APP與硬件的分離原理是一樣的,無需多說。對于支持碎片化特征,HelloX的伸縮性非常強(qiáng)。可以在編譯時,裁剪掉不需要的模塊,來匹配低端硬件的需求,當(dāng)前可以裁剪到只需要十幾KRAM的級別。顯然,這時候是不能支撐Java虛擬機(jī)的,在這種低端硬件上,功能往往比較單一,也無需支持Java。對于高端硬件的支持上,HelloX目前可以支持服務(wù)器級的硬件,比如,HelloX曾經(jīng)在Dell PowerEdge級的服務(wù)器上運(yùn)行。另外,HelloX是完全中立的,沒有任何硬件的傾向性(也無法傾向,因為我們沒有硬件J),更沒有任何平臺傾向性。實際上,對任何平臺的支持,在HelloX上都表現(xiàn)為一個特定的APP,可以動態(tài)安裝和卸載。另外,代碼完全開源,目前托管在github上(github.com/hellox-project/HelloX_OS),任何人可以下載和修改。
我們的目標(biāo),是開發(fā)一個能夠支撐物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的基礎(chǔ)軟件平臺,來促進(jìn)產(chǎn)業(yè)的發(fā)展,提升人們的生活質(zhì)量。目前HelloX項目還在開發(fā)過程中,歡迎有興趣的同仁參與我們。
***再澄清一下,本文的內(nèi)容和觀點(diǎn),僅僅是一家之言,供業(yè)界同仁討論和碰撞。相信我們的目標(biāo)是一致的,都是為了更好的促進(jìn)行業(yè)的發(fā)展,在這個過程中實現(xiàn)自己應(yīng)有的價值。另,如果希望轉(zhuǎn)載本文,請注明出處和作者,以及聯(lián)系方式,以供討論之用。