云計(jì)算時(shí)代即將終結(jié)?這些理由夠不夠
我們正在面臨云計(jì)算時(shí)代的終結(jié),我知道,這是一個(gè)大膽的聲明,甚至聽起來有點(diǎn)瘋狂。但請(qǐng)給我一點(diǎn)時(shí)間,聽我細(xì)細(xì)道來。
根據(jù)運(yùn)行服務(wù)器應(yīng)用程序的傳統(tǒng)觀點(diǎn),無論是網(wǎng)絡(luò)應(yīng)用還是手機(jī)應(yīng)用程序的后臺(tái),都是未來云計(jì)算的發(fā)展模式。而亞馬遜、谷歌和微軟層也在忙著為自己的云產(chǎn)品增加新的工作層,讓運(yùn)行中的服務(wù)器軟件變得更加簡(jiǎn)單方便。因此,在表面上,代碼的托管最好的選擇無疑是亞馬遜、谷歌或者微軟,他們方便、便宜且全自動(dòng)化還能夠彈性使用……然而,我為什么要預(yù)測(cè)末日的到來呢,下面是我的陳述理由:
云計(jì)算無法滿足長(zhǎng)期的擴(kuò)展需求
相信在看的大家都應(yīng)該知道,即使在云中,構(gòu)建一個(gè)可伸縮、高度可靠、可用的web應(yīng)用程序也是相當(dāng)困難的。如果貴公司完成了搭建,讓自家的應(yīng)用程序獲得了巨大成功,其過程規(guī)模將花費(fèi)眾多財(cái)力和精力。即使業(yè)務(wù)順利運(yùn)行,云端最終也將達(dá)到極限,網(wǎng)絡(luò)本身就具備限制性,計(jì)算機(jī)的速度和存儲(chǔ)能力比網(wǎng)絡(luò)帶寬增長(zhǎng)速度更快。我們忽略網(wǎng)絡(luò)中立的爭(zhēng)論,目前,這可能不是大多數(shù)(除去Netflix和亞馬遜)的問題,但很快這些問題便會(huì)隨著時(shí)間推進(jìn)而閃現(xiàn)。隨著我們從高清移動(dòng)到4K到8K,我們通過網(wǎng)絡(luò)推送的數(shù)據(jù)量正在瘋狂增長(zhǎng),相信很快就會(huì)發(fā)生VR數(shù)據(jù)集的移動(dòng)。
這個(gè)問題主要是因?yàn)槲覀兘M織網(wǎng)絡(luò)的方式引起的。有很多客戶想要獲得內(nèi)容和使用程序,卻只有相對(duì)較少的服務(wù)器擁有這些程序和內(nèi)容。就像,當(dāng)有人在Slack上發(fā)布了一幅有趣的圖片時(shí),即時(shí)坐我旁邊的20個(gè)人想看同樣的圖片,都必須從服務(wù)器上下載它,服務(wù)器需要發(fā)送20次。
當(dāng)服務(wù)器遷移到了云上,即亞馬遜或者谷歌的計(jì)算機(jī)或數(shù)據(jù)中心,這些地方的網(wǎng)絡(luò)需要驚人的吞吐量來處理所有數(shù)據(jù),還需要大量的硬盤存儲(chǔ)每份數(shù)據(jù)并通過網(wǎng)絡(luò)推送給需要它的每一個(gè)人。而如今,隨著流媒體服務(wù)的興起,這種狀況變得更加糟糕。
云計(jì)算的集中和脆弱
集中存儲(chǔ)數(shù)據(jù)和程序的另一個(gè)問題是可用性和持久性。如果亞馬遜的數(shù)據(jù)中心被一顆小行星撞了或者被龍卷風(fēng)摧毀了,怎么辦?或者,它在一段時(shí)間內(nèi)突然失效了,又怎么辦?存儲(chǔ)在機(jī)器上的數(shù)據(jù)現(xiàn)在不能被臨時(shí)訪問,甚至永久丟失。
這些問題,通常是利用多個(gè)位置存儲(chǔ)數(shù)據(jù)來緩解,但這僅僅意味著需要更多的數(shù)據(jù)中心。而這可能大大降低了意外損失的風(fēng)險(xiǎn),但數(shù)據(jù)問題又能得到什么樣的解決呢?如今,所有個(gè)人信息甚至重要的公共信息都存儲(chǔ)在云端——在Facebook上,在谷歌Drive,iCloud,或者Dropbox等其他網(wǎng)站上,一旦這些服務(wù)發(fā)生故障或者企業(yè)資金鏈斷裂,數(shù)據(jù)的結(jié)果又會(huì)怎么樣呢?即使沒有發(fā)生上述假設(shè),這也限制了你對(duì)數(shù)據(jù)的使用,無論何時(shí),你必須使用他們的業(yè)務(wù)才能處理自己的數(shù)據(jù)。
云計(jì)算需要信任,但無法為此提供任何保證
你的朋友如何相信自己接收到的數(shù)據(jù)是你所發(fā)送的數(shù)據(jù),唯一的方法便是相信中間過程的傳遞。這在大多數(shù)情況下還是可以接受的,但是我們使用的網(wǎng)站和網(wǎng)絡(luò)是由在國(guó)家注冊(cè)的合法實(shí)體來運(yùn)營(yíng)的,這些國(guó)家的政府有能力安排中間商做很多事情。盡管大多數(shù)時(shí)間,這是一件好事,能被用來幫助解決犯罪或者協(xié)助刪除網(wǎng)絡(luò)非法內(nèi)容,但在很多情況下,這種權(quán)力顯然被濫用了。
云計(jì)算讓我們和數(shù)據(jù)一起坐以待斃
高度集中互聯(lián)網(wǎng)真正可怕的一面是個(gè)人數(shù)據(jù)的積累。對(duì)于提供服務(wù)的企業(yè)而言,我們每個(gè)人都需要利用這樣或者那樣的渠道來使用他們的服務(wù),這便讓服務(wù)商獲取到了巨量的緩存數(shù)據(jù),有了足夠的個(gè)人信息,那么預(yù)測(cè)用戶的購買傾向、投票傾向,買房?jī)A向甚至?xí)卸嗌俸⒆樱紩?huì)被他們的掌握。更不用說辦理信用卡和貸款業(yè)務(wù)這些信息,簡(jiǎn)直是綽綽有余。
或許這仍然可以接受,畢竟,云計(jì)算也是值得信賴的。但是,今年早些時(shí)候,信用報(bào)告機(jī)構(gòu)Equifaxlost發(fā)生了1.4億用戶的大規(guī)模數(shù)據(jù)泄露,這些數(shù)據(jù)如今是公開的。我們暫時(shí)可以將此視為十年一遇的事情,前提是我們需要更加小心盡量防止此類事件的發(fā)生。但事實(shí)上,越來越明顯的是,這樣的數(shù)據(jù)泄露事件很難完全防止,數(shù)據(jù)處于一個(gè)危險(xiǎn)的狀況,要想真正阻止數(shù)據(jù)泄露的唯一方式就是不收集數(shù)據(jù),然而這似乎是天方夜譚。
那么,什么將取代云計(jì)算呢?
一個(gè)主要由客戶機(jī)-服務(wù)器協(xié)議(如HTTP)和基于對(duì)中央權(quán)威(如TLS)的信任的安全性是有缺陷的,并且會(huì)產(chǎn)生無法解決的問題?,F(xiàn)在是尋找更好的替代品的時(shí)候了——一個(gè)沒有其他人存儲(chǔ)個(gè)人數(shù)據(jù)的模型,大型的媒體文件散布在整個(gè)網(wǎng)絡(luò),整個(gè)系統(tǒng)完全是點(diǎn)對(duì)點(diǎn)和無服務(wù)器的。
對(duì)于這個(gè)領(lǐng)域的新興技術(shù),點(diǎn)對(duì)點(diǎn)是未來無法避免的方向。點(diǎn)對(duì)點(diǎn)web技術(shù)的目標(biāo)是用協(xié)議和策略來取代我們熟知的web的構(gòu)建塊,用以解決上面所述的大量問題。他們的目標(biāo)是一個(gè)完全分布式的、永久的、冗余的數(shù)字存儲(chǔ),在這個(gè)存儲(chǔ)中,每個(gè)參與的客戶機(jī)都在存儲(chǔ)其中一些數(shù)據(jù)的副本。
如果你聽說過BitTorrent,下面這些內(nèi)容應(yīng)該很熟悉。在BitTorrent中,數(shù)據(jù)用戶將大數(shù)據(jù)文件分成小塊(每個(gè)都有唯一的ID),不需要中央授權(quán)。為了下載一個(gè)文件,用戶需要一個(gè)哈希內(nèi)容的指紋。BitTorrent客戶端將會(huì)找到相同文件碎片并下載的同伴,直到用戶擁有所有的文件片段。
對(duì)于找到同伴的這個(gè)過程,BitTorrent使用了一種名為Kademlia的協(xié)議,在Kademlia中,網(wǎng)絡(luò)上的每個(gè)對(duì)等點(diǎn)都有一個(gè)唯一的ID號(hào),它的長(zhǎng)度與唯一的塊ID相同。它在一個(gè)節(jié)點(diǎn)上存儲(chǔ)一個(gè)帶有特定ID的塊,該ID與塊的ID“最近”。對(duì)于塊和網(wǎng)絡(luò)節(jié)點(diǎn)的隨機(jī)ID,網(wǎng)絡(luò)中存儲(chǔ)的分布應(yīng)該非常均勻。然而,不能隨意選擇塊ID,而是使用加密哈希——這是塊本身內(nèi)容的唯一指紋——Content-addressable塊。這也使得驗(yàn)證塊的內(nèi)容變得很容易(通過重新計(jì)算和比較指紋),另外提供一個(gè)塊ID的保證,不可能下載到除了原始數(shù)據(jù)的其他數(shù)據(jù)。
使用內(nèi)容散列進(jìn)行尋址的一個(gè)有趣的特性是,通過將一個(gè)塊的ID嵌入到另一個(gè)塊的內(nèi)容中,將兩個(gè)塊以一種不能被篡改的方式連接到一起。如果鏈接塊的內(nèi)容被改變,它的ID將會(huì)改變,鏈接將被打破。如果嵌入的鏈接發(fā)生了更改,那么包含塊的ID也會(huì)發(fā)生變化。
這一機(jī)制將一個(gè)塊的ID嵌入到另一個(gè)塊的內(nèi)容中,就可以創(chuàng)建這樣的區(qū)塊鏈,或者更復(fù)雜的結(jié)構(gòu),通常被稱為定向Acyclic圖形,或簡(jiǎn)稱為DAGs。一個(gè)Merkle DAG的常見示例是Git存儲(chǔ)庫。Git將提交歷史和所有目錄和文件存儲(chǔ)在一個(gè)巨大的Merkle DAG中。
這就引出了基于內(nèi)容尋址的分布式存儲(chǔ)的另一個(gè)有趣特性:它是不可變的,內(nèi)容無法更改。相反,新的修訂存儲(chǔ)在現(xiàn)有版本的旁邊,在修訂之間沒有更改的塊會(huì)被重復(fù)使用,因?yàn)楦鶕?jù)定義,它們具有相同的ID。這也意味著在這樣的存儲(chǔ)系統(tǒng)中不能復(fù)制相同的文件,轉(zhuǎn)換為有效的存儲(chǔ)。因此,在這個(gè)新網(wǎng)絡(luò)上,每一張獨(dú)特的圖片只會(huì)被存儲(chǔ)一次(盡管在整個(gè)存儲(chǔ)群中有多個(gè)冗余副本)。
Kademlia和Merkle鏈以及Merkle DAGs等協(xié)議為我們提供了工具來建立文件層次結(jié)構(gòu)和修訂時(shí)間線,并在一個(gè)大規(guī)模的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中共享。已經(jīng)有一些協(xié)議使用這些技術(shù)來構(gòu)建符合我們需求的分布式存儲(chǔ)。目前看起來很有希望的便是IPFS。
通過上述技術(shù),我們可以解決不少我在開始概述的問題:我們?cè)阪溄拥絎eb的設(shè)備上獲得分布式、高度冗余的存儲(chǔ),并且可以追蹤文件的歷史記錄,并保存所有需要的版本,而這幾乎解決了可用性、容量、持久性和內(nèi)容驗(yàn)證的問題。另外,它還搞定了帶寬問題,由于對(duì)等體之間互相發(fā)送數(shù)據(jù),因此沒有主要的熱點(diǎn)。
從云計(jì)算到霧計(jì)算
從云端撤離是一個(gè)令人興奮的未來。首先,在技術(shù)方面,我們應(yīng)該對(duì)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中進(jìn)行更多的優(yōu)化。Content-addressable存儲(chǔ)提供了密碼驗(yàn)證的內(nèi)容本身沒有一個(gè)可信的權(quán)威,但托管內(nèi)容的需求卻是永久性的(只要任何人類感興趣),目前該需求正在以相當(dāng)明顯的速度提升,即使在發(fā)展中國(guó)家的邊緣(甚至在另一個(gè)星球上)也是如此,但值得注意的是:要遠(yuǎn)離數(shù)據(jù)中心。
在某種程度上,甚至數(shù)據(jù)中心也可能成為過去。消費(fèi)設(shè)備變得如此強(qiáng)大和無處不在,計(jì)算能力和存儲(chǔ)幾乎隨處可見。
對(duì)于運(yùn)行web應(yīng)用程序的企業(yè)來說,這一變化將會(huì)帶來顯著的成本節(jié)約,盡量少的避免構(gòu)建可靠的數(shù)字產(chǎn)品。另外,企業(yè)還會(huì)減少對(duì)云計(jì)算故障停工風(fēng)險(xiǎn)的關(guān)注,更多地關(guān)注增加客戶價(jià)值。我們?nèi)匀恍枰仆泄芊?wù)器,但它們只是眾多同類中的一個(gè)。我們還可以看到異構(gòu)應(yīng)用程序,在這些應(yīng)用程序中,并不是所有的對(duì)等應(yīng)用程序都是相同的——在這些應(yīng)用程序中,有面向消費(fèi)者的對(duì)等體和后臺(tái)的工作人員,它們是同一應(yīng)用程序“集群”的一部分,而訪問的差異僅在基于加密的訪問級(jí)別上。
對(duì)于企業(yè)和客戶來說,另一個(gè)巨大的好處是客戶數(shù)據(jù)的處理。當(dāng)不再需要集中存儲(chǔ)大量客戶信息時(shí),丟失這些數(shù)據(jù)的風(fēng)險(xiǎn)就會(huì)降低。軟件工程領(lǐng)域的領(lǐng)導(dǎo)者(如Erlang的創(chuàng)始人Joe Armstrong)長(zhǎng)期以來一直認(rèn)為, 客戶將數(shù)據(jù)發(fā)送給企業(yè)所有程序的互聯(lián)網(wǎng)設(shè)計(jì)是倒退的,我們應(yīng)該將數(shù)據(jù)定向發(fā)送給客戶,以執(zhí)行他們私人持有的部分,而這些數(shù)據(jù)是不會(huì)直接共享的。這樣的模型似乎更安全,也不會(huì)以任何方式妨礙企業(yè)收集他們所需要的有用的客戶指標(biāo)。
沒有任何方式能夠阻止某些服務(wù)不透明且持有私有數(shù)據(jù)。這種類型的應(yīng)用程序架構(gòu)似乎是一個(gè)更私密的做大規(guī)模計(jì)算和軟件服務(wù)的方法——一種更接近于開放信息交換意愿的互聯(lián)網(wǎng), 任何人都可以輕松地向其他人發(fā)布內(nèi)容,并控制可以發(fā)布和訪問的內(nèi)容是由網(wǎng)絡(luò)用戶共同決定的,而不是由擁有服務(wù)器的私人實(shí)體決定的。