從“云”到“霧”:云計算將死亡 取而代之的是分布式的點對點網(wǎng)絡(luò)
編者按:在云計算發(fā)展一片火熱的時候,英國數(shù)字咨詢公司RedBadger的技術(shù)主管ViktorCharypar卻在VentureBeat上發(fā)文表示,云服務(wù)將會迎來末日。并指出點對點網(wǎng)絡(luò)將會是將來的發(fā)展方向。文章由36氪編譯。云將會走向
如果你聽說過BitTorrent(比特流),那么下面這些內(nèi)容聽起來應(yīng)該會很熟悉。在BitTorrent上,網(wǎng)絡(luò)用戶不需要任何中央機構(gòu)授權(quán)就可以將大數(shù)據(jù)文件分成更小的塊或片段(每個塊都有一個唯一的ID)。要下載一個文件,你只需要一個“神奇”數(shù)字,也就是一個哈希(hash),即內(nèi)容的指紋就行了。然后,你的BitTorrent客戶端將會按照“內(nèi)容指紋”找到那些擁有文件片段的用戶,并從他們那里把一個個文件片段下載下來,直到你擁有所有的片段。
一個有趣的點是如何去匹配用戶。BitTorrent使用了一種名為Kademlia的協(xié)議。在Kademlia,網(wǎng)絡(luò)上的每個對等點都有一個唯一的ID號,其長度與唯一的塊ID相同。它會將一個帶有特定ID的塊存儲在一個節(jié)點上,該節(jié)點的ID與該塊的ID“最接近”。塊和網(wǎng)絡(luò)對等點的隨機ID,在整個網(wǎng)絡(luò)中存儲的分布應(yīng)該是相當一致的。不過,塊ID并不需要隨機選擇,而是使用一種加密散列——這是塊本身內(nèi)容的唯一指紋,這是有好處的。保證這些塊是可尋址的。這也使得驗證塊的內(nèi)容更加容易(通過重新計算和比較指紋),并能夠保證用戶不可能下載原始的數(shù)據(jù)之外的其他數(shù)據(jù)。
另一個有趣的特性是,通過將一個塊的ID嵌入到另一個塊的內(nèi)容中,你可以將二者以一種不會被篡改的方式連接在一起。如果鏈接塊的內(nèi)容發(fā)生變化,它的ID將會改變,鏈接也會被破壞。如果修改了嵌入式鏈接,那么包含塊的ID也會隨之改變。
這種將一個區(qū)塊的ID嵌入到另一個區(qū)塊的機制,使得創(chuàng)建這樣的區(qū)塊鏈成為可能(比如為比特幣和其他加密貨幣驅(qū)動的區(qū)塊鏈),甚至是更復(fù)雜的結(jié)構(gòu),通常被稱為有向無環(huán)圖(DirectedAcyclicGraphs),簡稱DAG。(在RalphMerkle發(fā)明了這種鏈接之后,通常被稱為“Merkle鏈接”。所以,如果你聽到有人在談?wù)揗erkelDAGs時,你大概能知道他們在說什么。)MerkleDAG的一個常見例子就是Git存儲庫。Git將提交歷史和所有目錄和文件都保存在一個巨大的MerkleDAG中。
這就導致了基于內(nèi)容尋址的分布式存儲的另一個有趣特性:它是不可變的。內(nèi)容無法改變。取而代之的是,新的修訂被存儲在現(xiàn)有的修訂版本旁邊。在兩次修訂之間沒有變更的塊會被重用,因為根據(jù)定義,它們具有相同的ID。這也意味著相同的文件不能在這樣的存儲系統(tǒng)中復(fù)制,轉(zhuǎn)化為高效的存儲。所以在這個新網(wǎng)絡(luò)上,每一張獨一無二的搞笑圖片都只存在一次(盡管在整個群體中有多個副本)。
像Kademlia,Merkle鏈和MerkleDAG這樣的協(xié)議,給我們提供了建模文件層次和修訂時間線的工具,并在一個大型的P2P網(wǎng)絡(luò)中分享它們。已經(jīng)有一些協(xié)議使用這些技術(shù)來構(gòu)建符合我們需求的分布式存儲。看起來很有希望的是IPFS。
名稱和共享問題
好了,通過以上這些技術(shù),我們可以解決我在開始時提出的一些問題:我們在連接到網(wǎng)絡(luò)的設(shè)備上得到分布式的、高度冗余的存儲,這些設(shè)備可以記錄文件的歷史,并在需要的時候保留所有版本。這(幾乎)解決了可用性、容量、持久性和內(nèi)容驗證問題。它還解決了帶寬問題——因為都是使用點對點傳輸數(shù)據(jù),因此不會出現(xiàn)服務(wù)器承受不了的情況。
我們還需要一個可擴展的計算資源,但這并不難:現(xiàn)在每個人的筆記本電腦和手機都比大多數(shù)應(yīng)用程序所需要的功能更強大(包括相當復(fù)雜的機器學習計算),而且計算通常都是可伸縮的。因此,只要我們能讓每一臺設(shè)備都為用戶做必要的工作,就不會出現(xiàn)大問題。
所以現(xiàn)在我在Slack上看到的搞笑圖片可以來自坐在我旁邊的同事,而不是來自Slack的服務(wù)器(在這個過程中沒有跨越任何“海洋”)。不過,為了發(fā)布一張搞笑照片,我需要更新一個通道(channel)(也就是說,通道將不再是我發(fā)消息之前的樣子了,它將會發(fā)生改變)。這個聽起來相當簡單的事情卻是整個體系中最難的部分。
最困難的部分:實時更新
一個實體的概念會隨著時間的推移而改變,這實際上只是人類專屬的想法,讓世界在我們的頭腦中擁有秩序感和穩(wěn)定。我們還可以把這樣的實體看作是一個身份或名稱,隨著時間的推移,它會呈現(xiàn)出一系列不同的價值(這是靜態(tài)的,不可改變的)。(RichHickey在他的演講中解釋得很好,戳此觀看)。在電腦中模擬信息是一種更自然的方式,會產(chǎn)生更自然的結(jié)果。如果我告訴你一件事,我就再也不能改變我對你說的話了,也沒辦法讓你忘卻。例如,美國總統(tǒng)是誰,不會隨時間而改變;只是會被同樣性質(zhì)(身份和名字)的其他事實(人)所取代。在Git的示例中,一個ref(分支或標記)可以在不同的時間點指向(持有一個ID和一個值)不同的提交,并提交一個提交來替換當前所持有的值。Slack通道也代表了一種身份,隨著時間的推移,它的價值也在不斷增長。
真正的問題是,我們并不是唯一一個擁有通道的人。很多人試圖發(fā)布消息和改變通道,有時是同時進行,需要有人來決定結(jié)果應(yīng)該是什么。
在中心化的系統(tǒng)中,當前幾乎所有的web應(yīng)用程序,都有一個中央實體來決定這個結(jié)果,并對事件進行序列化。然而,在一個分布式系統(tǒng)中,每個人都是平等的,因此需要有一種機制來確保網(wǎng)絡(luò)上能夠達成共識。
對于一個真正的分布式網(wǎng)絡(luò)來說,要想解決這個問題,最困難的問題就是我們今天正在使用的所有應(yīng)用。它不僅會影響并發(fā)更新,還會影響其他需要“實時”更新的更新——隨著時間的推移,“真相的單一來源”正在發(fā)生變化。這個問題對于數(shù)據(jù)庫來說尤其困難,它也會影響到其他關(guān)鍵服務(wù),比如DNS。以分散的方式為特定的塊ID或一系列ID注冊一個人的名字意味著每個參與者都需要同意一個現(xiàn)有的名稱有一個特定的含義,否則兩個不同的用戶就可以看到兩個不同的文件在同一個名稱下。基于內(nèi)容的尋址解決了機器的問題(記住一個名字只能指向一個特定的匹配內(nèi)容),而不是人類的問題。
在處理分布式的共識方面,有一些主要的策略。其中一個問題是,選擇一個相對較小的“群體”經(jīng)理,他們的機制是選出一個決定真相的“領(lǐng)導者”(如果你感興趣的話,看看Paxos和Raft協(xié)議)。所有的變化都要經(jīng)過這些經(jīng)理。這實質(zhì)上是一個集中式的系統(tǒng),可以彌補網(wǎng)絡(luò)中的中央決策實體或中斷(“分區(qū)”)的丟失。
另一種方法是像比特幣區(qū)塊鏈這樣的基于驗證的系統(tǒng),在這種系統(tǒng)中,通過讓用戶解決一個“難題”來編寫一個更新(例如,在Merkle鏈中添加一個有效的區(qū)塊)來達成共識。這個“難題”很難解決,但很容易就能查到,如果沖突仍然存在,還需要一些額外的規(guī)則來解決。其他幾個分布式的區(qū)塊鏈使用了基于驗證的共識,同時減少了解題所需的能源需求。如果你感興趣的話,你可以在BitFury這份白皮書中讀到的相關(guān)的證據(jù)。
針對具體問題的另一種方法是圍繞著CRDT——無沖突的復(fù)制數(shù)據(jù)類型,這在特定情況下根本不會遭受共識問題的困擾。最簡單的例子是一個遞增的計數(shù)器。如果所有更新只是“添加一條”,只要我們確保每次更新只應(yīng)用一次,順序就不重要,結(jié)果將是相同的。
這個問題似乎沒有一個明確的答案,可能永遠也不會只有一個答案,但有很多聰明的人正在努力解決這個問題,而且已經(jīng)有很多有趣的解決方案可供選擇。你只可以對其進行權(quán)衡。這種取舍通常體現(xiàn)在你“瞄準”的群體的規(guī)模上,并從你愿意讓渡的共識中挑選出的一種特性——可用性或一致性(或者,從技術(shù)上講,是網(wǎng)絡(luò)劃分,但在一個高度分布的系統(tǒng)中,這似乎很難避免,就像我們正在討論的系統(tǒng)一樣)。大多數(shù)應(yīng)用程序似乎都支持可用性而不是即時的一致性——只要狀態(tài)在合理的時間內(nèi)是一致的即可。
公共文件網(wǎng)絡(luò)中的隱私問題
需要解決的一個明顯問題是隱私問題。即如何在不公開的情況下將內(nèi)容存儲在分布式的集群中呢?如果它能夠隱藏東西,那么內(nèi)容地址存儲是一個不錯的選擇,因為為了找到某樣東西,你需要知道它的內(nèi)容的散列。所以本質(zhì)上我們有三個層次的隱私:公共的、隱藏的和私密的。對于第三個問題的答案似乎是在密碼學中-對存儲的內(nèi)容進行強加密并且要有“外在”的共享密鑰(比如用紙分享、NFC設(shè)備傳輸或者掃描二維碼等)。
依賴于加密技術(shù)一開始可能聽起來很冒險(畢竟,黑客總是會發(fā)現(xiàn)漏洞),但實際上并沒有比我們今天做的更糟糕。事實上,這在實踐中有可能會更好。企業(yè)和政府通常以無法與公眾分享的方式存儲敏感數(shù)據(jù)(包括數(shù)據(jù)所涉及的個人)。相反,只有擁有這些數(shù)據(jù)的組織所雇用的數(shù)量不多的員工才能夠訪問,而且至少在密碼方面受到保護。通常情況下,如果你能訪問存儲這些數(shù)據(jù)的系統(tǒng),你就可以擁有所有這些數(shù)據(jù)。
但是,如果我們轉(zhuǎn)而以一種本質(zhì)上是公開的方式來存儲私人數(shù)據(jù),那么我們就不得不保護它(使用強大的加密技術(shù)),這樣對任何獲得訪問權(quán)限的人來說都是不好的。這個想法與安全相關(guān)軟件的開發(fā)者開源代碼的初衷是一樣的,這樣任何人都可以查看并發(fā)現(xiàn)問題。知道安全系統(tǒng)是如何工作的,不應(yīng)該幫助你打破它。
這種對訪問的控制一個有趣特性是,一旦你授予某人訪問某些數(shù)據(jù)的權(quán)限,他們就會永遠對數(shù)據(jù)進行修改。當然,你可以隨時更改加密密鑰。這也并不比我們今天的情況更糟,盡管它可能并不明顯:只要獲得一些數(shù)據(jù)的訪問權(quán)限,任何人都可以復(fù)制它。
這一領(lǐng)域的有趣挑戰(zhàn)是,在一群需要隨時間推移而改變的人群中建立一個能夠驗證身份并共享私有數(shù)據(jù)的良好系統(tǒng)。例如,在一個私有的Git存儲庫中有一組協(xié)作者。這絕對可以通過一些私鑰密碼和旋轉(zhuǎn)密鑰的組合實現(xiàn),但讓用戶獲得流暢的體驗可能是一項挑戰(zhàn)。
從云到霧
盡管要解決一些難題,我們從云計算中遷移出去,將會是一個非常令人興奮的未來。首先,在技術(shù)方面,我們應(yīng)該從點對點網(wǎng)絡(luò)中獲得相當多的改進。內(nèi)容可尋址存儲可以在不受信任的授權(quán)情況下,提供對內(nèi)容本身的加密驗證,并進行永久的托管(只要有人對它感興趣),我們應(yīng)該能看到其速度的顯著提升,即使是在遠離數(shù)據(jù)中心的發(fā)展中世界的邊緣(甚至是在另一個星球上)。
在某個時候,甚至連數(shù)據(jù)中心都可能成為歷史。消費設(shè)備變得如此強大,無處不在,計算能力和存儲空間幾乎隨處可見。
對于運行web應(yīng)用程序的企業(yè)來說,這一變化將會節(jié)省巨大的成本。企業(yè)也將能夠減少對宕機風險的關(guān)注,更多地關(guān)注增加客戶價值,讓所有人受益。我們?nèi)匀恍枰仆泄芊?wù)器,但它們只是眾多同類服務(wù)器中的一種。我們還可以看到更多樣化的應(yīng)用程序,在這些應(yīng)用程序中,并非所有的應(yīng)用程序都是一樣的——在同一個應(yīng)用程序中,有面向消費者的和后臺的,而差別只是訪問權(quán)限不同而已。
對企業(yè)和客戶來說,另一個巨大的好處是對客戶數(shù)據(jù)的處理。當不再需要集中存儲大量的客戶信息時,丟失這些數(shù)據(jù)的風險就會降低。軟件工程界的領(lǐng)導者們(如Erlang的創(chuàng)始人JoeArmstrong,他的談話很值得關(guān)注)長期以來一直認為,在互聯(lián)網(wǎng)上,客戶向企業(yè)的程序發(fā)送數(shù)據(jù)的設(shè)計是一種退化,企業(yè)應(yīng)該向客戶發(fā)送程序,以讓他們能夠執(zhí)行私人的數(shù)據(jù),而這些數(shù)據(jù)不會被直接共享。這樣的模式似乎更安全,并且也不會以任何方式阻止企業(yè)收集他們所需的有用的用戶指標。
而且,當前沒有什么方式能阻止混合的服務(wù)模式,這些服務(wù)不透明,并保留了私人數(shù)據(jù)。
這種類型的應(yīng)用程序架構(gòu)似乎是一種更自然的方式,來提供大規(guī)模計算和軟件服務(wù),而且也更接近于開放信息交換的想法,任何人都可以方便地向他人轉(zhuǎn)發(fā)內(nèi)容,并控制可以發(fā)布和訪問的內(nèi)容,而不是由擁有服務(wù)器的私有實體來控制。
對我來說,這是非常令人興奮的。這就是為什么我想要組建一個小團隊,在幾周內(nèi),用上面提到的一些技術(shù)來構(gòu)建一個簡單的移動應(yīng)用,來證明概念,并展示可以通過點對點網(wǎng)絡(luò)來做些什么。目前我所擁有的唯一一個足夠小的想法,能夠相對快速、足夠有趣,足以證明這種方法的特性是一個點對點的、真正無服務(wù)器的克隆版Twitter,但這并不特別令人興奮。
原標題:從“云”到“霧”:云計算將死亡,取而代之的是分布式的點對點網(wǎng)絡(luò)
免責聲明:本文僅代表作者個人觀點,與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。
我要收藏
個贊
-
2017年云計算市場營收增長24%,達1800億美元
2018-01-10市場 -
人人稱道的云計算,市場發(fā)展仍存幾大障礙
-
當春運遇上云計算
2018-01-10當春運遇上云計算
-
注冊核安全工程師注冊證到底長啥樣 你見過嗎?
-
鍋爐|最干凈的燃煤鍋爐
2017-10-23gh_f69f95f1b242,中國電力設(shè)備管理協(xié)會 -
【設(shè)備講堂】講解光伏電站電氣二次設(shè)計詳解
-
國家標準《智能電網(wǎng)調(diào)度控制系統(tǒng)技術(shù)規(guī)范第二部分:術(shù)語》已發(fā)布并實施
-
盤點|2017年實施的電力相關(guān)行業(yè)標準(DL、NB)
-
大電網(wǎng)靜態(tài)穩(wěn)定態(tài)勢評估的大數(shù)據(jù)融合方法
-
2017年云計算市場營收增長24%,達1800億美元
2018-01-10市場 -
人人稱道的云計算,市場發(fā)展仍存幾大障礙
-
當春運遇上云計算
2018-01-10當春運遇上云計算