云時代即將終結,點對點網(wǎng)絡才是未來
一直以來,只要說到運營服務器應用程序,無論是網(wǎng)頁應用程序還是手機應用終端,我們都會認為,未來是云服務的天下。亞馬遜、谷歌和微軟等公司,紛紛研發(fā)新工具,試圖讓服務器應用程序的運營更加簡單和便捷。因此,對于用戶來說,AWS、GCP和Azure似乎就是最好的選擇。畢竟這三大云服務工具,既方便又便宜,能夠輕松實現(xiàn)全自動化以及有彈性的擴展升級。真要說,那還有很多優(yōu)點。
何故認為云時代即將終結呢?原因有以下四點:
第一,它無法滿足長期的擴展升級需求。研發(fā)一款能夠擴展升級和高度普及的優(yōu)質網(wǎng)頁應用程序,尤其是在云服務領域,有著相當大的難度。就算初期成功研發(fā)出了應用程序,那后期的擴展升級也需要大量人力、物力和財力。退一步說,就算你再成功,最后也會到達云技術以及網(wǎng)頁本身的極限。計算機的計算速度和儲存容量,會比網(wǎng)絡帶寬增長得還要快。雖然對大多數(shù)公司來說,現(xiàn)在還不用擔心這個問題,但終究都要面對。現(xiàn)階段,網(wǎng)絡中的數(shù)據(jù)總量正在大幅增加。畢竟我們對分辨率的要求,已經(jīng)從高清變?yōu)?K再變?yōu)?K。很快,虛擬現(xiàn)實數(shù)據(jù)集就會開始普及。
這之所以會成為一個問題,很大程度上是由于我們組織和安排網(wǎng)絡的方式。需要內(nèi)容和程序的客戶很多,但能夠提供這些內(nèi)容和程序的服務器卻很少。舉個例子,如果有人在Slack上分享了一張貓的圖片,而我身邊坐著的20個人都想看,那只能各自下載這張圖。也就是說,同一張圖,服務器得重復發(fā)送20次。
如果現(xiàn)在把服務器移到云中,也就是谷歌或亞馬遜數(shù)據(jù)中心的計算機上,那么這些區(qū)域附近的網(wǎng)絡,需要較大的吞吐量,才有能力處理所有數(shù)據(jù)。同時,還需要大量硬盤驅動器來儲存每個人的數(shù)據(jù),以及大量CPU來將數(shù)據(jù)通過網(wǎng)絡輸送給每個有需要的人。但是,自從流媒體服務興起之后,情況就有點糟糕了。
所有這些活動,都需要大量能源支持,從而使得整個系統(tǒng)效率低下。不僅成本高,還危害環(huán)境。
第二,它過于集中,易受攻擊。集中儲存數(shù)據(jù)和程序的另一大問題,就在于可用性和持久性。如果亞馬遜的數(shù)據(jù)中心遭到流量攻擊,受到小行星或龍卷風等自然災害的影響,那怎么辦呢?或者,不這么夸張,如果它出現(xiàn)了一段時間的電力中斷,那又怎么辦呢?數(shù)據(jù)中心機器上儲存的那些數(shù)據(jù),不僅短時間內(nèi)無法使用,甚至很有可能永久丟失。
或許,有人要說,把這些數(shù)據(jù)分開儲存可以解決問題。但其實,并不會。分開儲存,只會意味著有更多的數(shù)據(jù)中心。沒錯,分開儲存是能降低意外損失的風險。但是,那些真正重要的數(shù)據(jù)呢?如何做到安全儲存?目前,這些數(shù)據(jù)資源,都儲存在Facebook、Google Drive和iCloud這類云端中??扇f一這些公司倒閉了,業(yè)務叫停了,該怎么辦呢?就算他們永遠不會倒閉,那儲存之后使用數(shù)據(jù)也存在限制。因為你必須要借助他們的服務,才能獲得這些數(shù)據(jù)。即便只是想和朋友分享,也還是要通過他們的服務。
第三,它需要我們賦予信任,但卻不給我們提供任何保證。你的朋友如何相信自己收到的內(nèi)容,就是你所發(fā)送的內(nèi)容呢?唯一的方法,就是相信中間人。大多數(shù)情況下,這是沒問題的。但是,我們使用的網(wǎng)站和網(wǎng)絡,均由在國家部門注冊過的法律實體負責運營。而國家部門,完全可以強迫這些法律實體做任何順從自己意愿、符合自己利益的事情。雖然大部分情況下,都是一些幫助打擊犯罪或移除非法內(nèi)容的好事,但與此同時也存在濫用權力的壞事。
就在幾個星期之前,西班牙政府竭盡自己所能利用手中的權力,去阻止加泰羅尼亞地區(qū)的獨立公投。比如說,屏蔽一切指引民眾投票的信息網(wǎng)站。雖然對于大多數(shù)西方人來說,言論自由或許不是最重要的問題,但保證互聯(lián)網(wǎng)的免費和開放,還是值得提倡的。畢竟,從本質上來說,互聯(lián)網(wǎng)就應該免費開放,就應該對用戶最終看到的內(nèi)容和作者最初發(fā)布的內(nèi)容進行核實。
第四,它使得我們以及我們的數(shù)據(jù)成為易被欺騙的對象。互聯(lián)網(wǎng)高度集中最大的弊端,就是個人數(shù)據(jù)信息的積聚。一方面,大型公司的確提供了人們所需要的服務;但另一方面,它們掌握著所有消費者的數(shù)據(jù)信息。這些數(shù)據(jù)信息,足以讓它們推測出消費者的未來行為,比如會買些什么、會給誰投票、會不會買房,甚至想要幾個孩子等等。要知道,有了這些數(shù)據(jù)信息,那些意圖不軌的人用你的名字辦信用卡、辦貸款甚至買房,都是完全有可能的。
當然,或許你認為,提供這些數(shù)據(jù)信息,不會有什么問題。畢竟,這些公司信譽足夠好。你足夠信任他們,從而愿意給出自己的數(shù)據(jù)信息。但其實,問題的關鍵并不在它們。沒錯,它們是可以不用擔心。可萬一,有圖謀不軌的人呢?就在今年初,美國知名征信機構Equifax發(fā)生了非常嚴重的數(shù)據(jù)泄漏事件。具體說來,一共丟失了1.4億用戶的數(shù)據(jù)信息?,F(xiàn)在,這些數(shù)據(jù)全都公之于眾了。可能有人要說,這種事十年一遇。如果我們能再細心、再謹慎一點,其實是可以避免的??涩F(xiàn)在,形勢越來越明晰。像這樣的數(shù)據(jù)泄漏,想要完全避免,是非常困難的事情。但如果直接放任不管,那又非常危險。所以說,唯一可行的解決辦法,就是從一開始就避免集中獲取用戶的數(shù)據(jù)信息。
那么,接替云時代的會是什么?一個在較大程度上以客戶服務器協(xié)議為支撐、以集中授權為安全保障的網(wǎng)絡,不僅存在各種各樣的缺陷,還會帶來難以解決甚至無法解決的問題。因此,我們現(xiàn)在要尋找更加高效的解決方案。在全新模式下,其他任何人都不能儲存你的個人數(shù)據(jù),大型媒體文件分布在整個網(wǎng)絡當中。而且,整個系統(tǒng)是完全點對點的,不再需要服務器。
針對這一塊,我看過不少關于新興技術的文章資料。因此,我深信,點對點,即對等,是未來的必然發(fā)展趨勢。點對點網(wǎng)絡技術之所以存在,就是為了利用各種協(xié)議和策略,替代現(xiàn)有的那些網(wǎng)絡構成要素,解決上文列出的大多數(shù)問題。他們的目標,就是實現(xiàn)高度分布式的數(shù)據(jù)儲存。每位身處該網(wǎng)絡、切實參與進來的客戶,都將以備份形式儲存其中一些數(shù)據(jù)。
如果你之前聽說過比特流(即BitTorrent,一種內(nèi)容分發(fā)協(xié)議),那下面要說的內(nèi)容應該不會陌生。在這種協(xié)議中,共享大型數(shù)據(jù)文件的網(wǎng)絡用戶,會分為較為小型的區(qū)塊(每一塊都有專屬ID),不需要任何形式的集中授權。下載一份文件,就只需要一個“神奇”的數(shù)字。接著,用戶就會找到擁有相同文件的人并且把它們下載下來,直到拿到文件中的所有內(nèi)容。
其中,最有意思的地方,就是如何找到擁有相同文件的人。比特流,使用的是一種叫做Kademlia的協(xié)議。在該協(xié)議下,網(wǎng)絡中的每個點都擁有專屬ID號碼,與專屬區(qū)塊ID長度相同。這個ID能夠在某一節(jié)點上,以最接近區(qū)塊ID的特定ID儲存區(qū)塊內(nèi)的數(shù)據(jù)信息。對于隨機的區(qū)塊ID和網(wǎng)絡端點ID,整個網(wǎng)絡中的儲存分布都應該是一致的。這些區(qū)塊都是可以進行內(nèi)容處理的,因此其中的內(nèi)容驗證起來,也就比較容易。
另外,利用指紋處理內(nèi)容,還有一個有意思的地方,就是將其中一個區(qū)塊的ID嵌入另一個內(nèi)容區(qū)塊,以一種無法篡改的方式將兩大區(qū)塊聯(lián)系起來。如果其中一塊的內(nèi)容發(fā)生改變,那么它的ID就會相應改變,進而二者之間的聯(lián)系也就隨之破裂。一旦內(nèi)在聯(lián)系發(fā)生改變,那么另一區(qū)塊的ID同樣也會發(fā)生改變。
這種ID嵌入機制,有助于生成類似的區(qū)塊鏈(就像為比特幣和其他虛擬貨幣提供支持的區(qū)塊鏈一樣),甚至還能生成有向無環(huán)圖(即Directed Acyclic Graph,以下簡稱DAG)這類更加復雜的結構。這種圖形連接以發(fā)明者拉夫爾·默克爾命名,因此稱為默克爾DAG。其中一個最為典型的例子,就是git本地倉庫。它借助巨型默克爾DAG,將歷史數(shù)據(jù)、所有條目和文件,以區(qū)塊形式儲存起來。
而這就又引出了一個有意思的話題,即基于內(nèi)容處理的分布式數(shù)據(jù)儲存是不可變的。也就是說,儲存在這些區(qū)塊中的內(nèi)容是不會改變的。相反,修改版本的內(nèi)容是緊鄰現(xiàn)有版本儲存的。重復使用修改版本中的內(nèi)容,不會導致區(qū)塊發(fā)生改變,因為它們的ID仍然相同。這就意味著,在這樣一個儲存系統(tǒng)中,目標文件是無法復制的。回到文章最開始的例子,也就是說每張貓的圖片,都是獨一無二的,只會存在一次。
Kademlia這類協(xié)議,加上默克爾區(qū)塊鏈和默克爾DAG,能夠給我們提供多種工具,去形成完備的文件等級層次和修改時間軸,在點對點網(wǎng)絡中進行大規(guī)模分享。現(xiàn)階段,已經(jīng)存在使用這些技術的協(xié)議,能夠根據(jù)我們的需求構建分布式儲存系統(tǒng)。其中,發(fā)展比較好的要數(shù)IPFS。
名字和共享事物存在的問題
那么,說到這里,我們已經(jīng)可以利用這些技術來初步解決上文列出的一些問題。整個過程差不多解決了可用性、容量、持久性和內(nèi)容驗證問題。但與此同時,它還需要解決帶寬問題。由于各個點之間可以相互發(fā)送數(shù)據(jù),因此就不存在大型熱點或瓶頸。
未來,我們需要能夠擴展升級的計算資源,當然這并不是很難。當下,每個人的筆記本電腦和手提電話,都有著五花八門的功能,遠超過大多數(shù)應用程序所需要的功能。比如說,復雜的機器學習計算。因此,從橫向角度來看,計算確實是能夠擴展升級的。只要我們確保所有設備都滿足用戶的必要需求,那就不應該有大問題。
也就是說,在這種情況下,我想看的那張貓的圖片,是來自坐在身邊的同事,而非Slack服務器。當然,如果現(xiàn)在我想要主動分享一張貓的圖片,那首先要做的就是更新特定渠道。沒錯,這一步聽上去是很簡單。但其實,它是最有難度的一個環(huán)節(jié)。
最為困難的環(huán)節(jié):渠道更新某一事物會隨時間變化,只是想讓人們有一個秩序和穩(wěn)定的概念。至于這個事物,我們可以將其看作是一個身份和一個名字,能夠隨著時間推移表現(xiàn)出不同價值。但這些價值,都是靜態(tài)且不可變的。這是一種更加自然的方式,去規(guī)范計算機中的信息,因而有著更加自然的結果。如果我告訴了你一些事情,那既不能改變已經(jīng)告訴你的這個事實,也不能強迫你故意忘記我所說的話。Slack這個渠道,就代表著一個身份。它隨著時間推移表現(xiàn)出來的不同價值,就是逐漸增加的信息。
但真正的問題就在于,在這個渠道中,我們并不是孤立的。想要分享信息、改變渠道的人,實在是太多了。再者有時候,這兩種情況會同時發(fā)生。所以,必須要有人站出來決定最終結果。
在較為集中系統(tǒng)中,會有單一機構來決定這些更新過程,將這些事件序列化。但在分布式系統(tǒng)中,每個人都是平等的。因此,就需要形成一種機制,確保整個網(wǎng)絡就“世界歷史”問題達成一致。
現(xiàn)如今,我們使用的所有應用程序,均由分布式網(wǎng)絡提供支持。而針對這樣一個真正分布式的網(wǎng)絡,最為困難的問題就是達成一致。這不僅影響著并行更新,同時還影響著其他需要出現(xiàn)的更新。對于數(shù)據(jù)庫來說,這個問題尤為困難。與此同時,還會對DNS這類其他重要服務產(chǎn)生影響。以分散方式為特定區(qū)塊ID或ID序列注冊人名,就意味著參與該過程的每個人都需要針對現(xiàn)有名稱及其意義達成一致。否則,就會出現(xiàn)這樣一種情況,即兩位不同用戶看到命名相同的兩份不同文件?;趦?nèi)容進行處理,能夠為機器解決這個問題,但無法為真人解決這個問題。
解決分布式網(wǎng)絡的共識問題,有以下幾種策略。第一種,就是組建一支規(guī)模較小的經(jīng)理團隊,并且進一步選出“團隊領導者”負責決策。過程中發(fā)生的所有變化,都要經(jīng)過經(jīng)理。很顯然,這是一種集中體系。
第二種,就是像比特幣區(qū)塊鏈那樣基于工作量證明的體系。該體系通過各端點共同解決難題,編寫更新方案,在共識問題上有一定保證。其中的難題雖然解決起來比較困難,但檢查起來卻比較容易。如果出現(xiàn)分歧的話,還可以借助一些額外的規(guī)則來解決。不過,也有其他幾種分布式區(qū)塊鏈,使用的是基于權益證明的共識體系。這一體系能夠減少解決某一難題所需要的投入。
第三種,與無沖突復制數(shù)據(jù)類型有關。不過,在這類型的某些案例中,共識問題根本就不會產(chǎn)生什么影響。如果所有的更新都只是“增加一個”,那只要我們保證每次更新都只使用一次,秩序就不重要,因為結果都是一樣的。
總之,到目前為止,這個問題沒有明確答案。經(jīng)過大家的努力,已經(jīng)出現(xiàn)了不少有趣搞笑的解決方案。你只需要根據(jù)自己的具體情況,選擇一種相對較為平衡的方案就行。
網(wǎng)絡環(huán)境中公開文件的隱私問題很明顯,在上文列出的所有問題中,亟需解決的就是隱私問題。既然我們需要在這樣一種點對點分布式網(wǎng)絡中儲存內(nèi)容,那怎么可能不公開這些內(nèi)容呢?如果都能夠隱藏起來的話,那么內(nèi)容處理儲存固然是一個優(yōu)質解決方案。畢竟你想要找到某些內(nèi)容,是需要內(nèi)容“指紋”的。因此,我們需要注意三個不同層次的隱私問題:公開、隱藏和私人。至于第三個,也就是私人隱私,合適的解決方法應該就是加密。
雖然乍一聽,依靠加密來保證內(nèi)容的隱私安全,確實有點冒險。但事實上,它并沒有現(xiàn)在這么糟糕。通常,各家公司和各國政府都以不與公眾共享的方式,來儲存一些較為敏感的數(shù)據(jù),通過加密等方式來保護這些數(shù)據(jù)。能夠看到或使用這些數(shù)據(jù)的人,就只有公司和政府專門雇用的保密人員。而一旦你能接觸到儲存這些數(shù)據(jù)的系統(tǒng),那往往意味著你可以看到全部的私密數(shù)據(jù)。
但如果我們以一種公開的方式儲存私密數(shù)據(jù),那就不得不采取保護措施,防止其他任何人看到或使用這些數(shù)據(jù)。說白了,這與開源一些有關安全的應用程序,是一個道理。
在這個過程中,如果你授予某人獲取數(shù)據(jù)的權利,那他就能永久擁有修改之后的私密數(shù)據(jù)信息。因而,你就需要不斷修改加密密鑰。可現(xiàn)如今的糟糕狀況是,只要某人能夠獲取這些加密數(shù)據(jù)信息,那他就會私下復制一份。
云時代終結,難道霧時代要來臨?盡管需要解決的難題很多,但云時代的終結還是令人興奮。首先,從技術層面上來看,我們應該能夠優(yōu)化點對點網(wǎng)絡技術。基于內(nèi)容處理的數(shù)據(jù)儲存,能夠針對內(nèi)容本身提供加密驗證,不需要獲得可靠授權。即便是在發(fā)展中國家,也能看到較大進步,他們同樣會逐漸摒棄數(shù)據(jù)中心。
在某種程度上,數(shù)據(jù)中心甚至會徹底成為過去式?,F(xiàn)階段,電子消費設備的功能越來越強大。計算功能和儲存功能,幾乎是隨處可見。
對于運營網(wǎng)頁應用程序的公司來說,這種變化應該能夠公司幫助降低成本,減少研發(fā)優(yōu)質數(shù)字產(chǎn)品遇到的難題,把關注重點從降低停工風險轉移到增加客戶價值上去。我們還是需要云端中的服務器,但它們只是若干相似端點中的一部分。
其次,給公司和客戶帶來的另一大好處,就是客戶數(shù)據(jù)的處理問題。既然不需要集中儲存大量信息,那也就不會出現(xiàn)大量數(shù)據(jù)丟失的情況。一直以來,軟件工程專家都認為,客戶向公司程序發(fā)送數(shù)據(jù)這樣一種互聯(lián)網(wǎng)設計,是存在較大缺陷的。與之相反,公司應該向客戶發(fā)送程序,讓他們利用程序來處理自己的私人數(shù)據(jù),避免出現(xiàn)直接分享數(shù)據(jù)信息的情況。雖然這種模式看上去更加安全,但卻無法阻止公司收集自己需要的客戶數(shù)據(jù)。