1. 程式人生 > >區塊鏈和雲端計算之間有何關係?

區塊鏈和雲端計算之間有何關係?

雖然雲端計算蓬勃發展了10來年,雲端計算是按需供給的理念還不被大部分人理解。人們習慣稱為雲端計算技術。如果把雲端計算稱為技術,準確的表述應該是雲端計算的技術,是為了現實對資源按需分配而應用的技術。這些技術不但包括了計算、網路、儲存、安全等基礎IT技術,還包括了所有涉及資訊的技術,這些技術支撐了各種資源的按需分配。

區塊鏈也不是什麼新東西,也有10來年的歷史,只是從今年爆紅。區塊鏈也不是技術,本質上就是一種無權威化的信任體系。同樣,如果還是把區塊鏈稱為技術,也應該是區塊鏈的技術。主要包括各種演算法如雜湊演算法和安全演算法、加密技術、P2P網路技術等。

按需分配的理念和無權威化的信任體系,好像並不能直接對比,沒有直接關係,也就不存在誰取代誰的問題。但是區塊鏈本身就是一種資源,有按需供給的需求,是雲端計算的一個組成部分。所以,在IaaS、PaaS、SaaS的基礎上後來增加了新的“即服務”比如DaaS(資料庫即服務)等的同時,我們還可以創造出BaaS (區塊鏈即服務)。

但是,沒有直接關係並不是沒有關係,雲端計算的技術和區塊鏈的技術之間是可以相互融合的。今天就分析一下這種技術關係。

計算

雲端計算主要是以CPU為核心的複雜邏輯計算,而區塊鏈是以GPU或ASIC為核心的簡單線性計算。CPU是一個全能選手,主要實現各種複雜的應用架構。而GPU或ASIC擅長大量簡單平行計算,來競爭獲取工作量證明。區塊鏈內的大量“礦機”是有擅長簡單平行計算的GPU或ASIC組成。GPU並不能取代現有的以CPU為主的應用計算服務。

但是雲端計算還可以提供人工智慧(AI)計算服務。和區塊鏈相似,為了實現AI服務,雲端計算就需要大量並行簡單計算的資源。如果各種以GPU為主的礦機大量閒置,我們可以通過改造軟體和網路的方式來實現分散式的AI計算服務。但現在就想讓礦機停止挖礦,提供AI的計算服務是不可能的。現在加密貨幣紅的發紫,礦機們都在全力挖礦,挖礦帶來的收益遠遠遠遠高於出租GPU帶來的收益,不會有空餘資源可以被雲端計算利用。所以在很長的一段時間內,雲端計算內還需要單獨購置AI計算能力,不可能利用區塊鏈裡的礦機能力。

網路

雲端計算內的網路一般認為是一個在大二層網路基礎上構建複雜的應用網路,而區塊鏈是一個扁平架構的P2P網路。雲端計算的網路為了實現應用的複雜網路拓撲,完全採用為應用進行定製的方式,每個計算單元之間是通過“路由”為核心來實現複雜的邏輯關係。而區塊鏈的網路存粹就是一個建立在公共網路的P2P網路。在這個網路裡,每個計算單元的網路地位都是平等的。在一個徹底扁平的網路裡,是以快速傳播資訊為目的的。不可能實現雲端計算應用複雜的網路架構。

如果將來礦機資源大量閒置,還可以作為AI的計算單元,也不是一下子就能華麗轉身。從AI應用的網路角度上看,現有的P2P網路完全也是不符合的。到時候需要有新的網路技術把這些東西串接起來,一定不會還是簡單的P2P網路。具體是什麼,只有這一天來臨了,才知道。

儲存

雲端計算內的儲存有很多種,有基於檔案的、基於物件的、基於塊的。這些儲存作為一種資源,往往是獨立存在的,一般採用共享的方式,由應用來選擇。而區塊鏈裡的儲存是作為鏈裡各節點的儲存空間,一般就是本機所帶的普通廉價硬碟,獨立存在。區塊鏈裡儲存的價值不在於儲存本身,而是在於相互連結的不可更改的塊。

最大的區別是區塊鏈的檔案系統可以寫和讀資料,但資料一旦寫入就不能修改和刪除。

雲端計算內的儲存和區塊鏈內的儲存都是由普通儲存介質組成。只是相應管理物理介質的“檔案系統”有所差異。同時還會採用海量的獨立副本來確保資料的不可修改性和資料的完整性。區塊鏈儲存的重點不在是”塊“,而是在於“鏈”。通過鏈來確保記錄內容的不可修改性,是一種特殊的儲存服務。雲端計算裡確實也需要這樣的儲存服務。如果一定讓我來寫關於區塊鏈應用的白皮書,我覺得這才是真正的應用點。比如結合”平安城市“,將資料放在這種型別的儲存裡,利用不可修改性,讓視訊、語音、檔案等作為公認有效的法律依據。

雲端計算裡的區塊鏈的儲存服務實現有2種實現方法,第一種是將資料塊直接記錄在區塊鏈裡,第二種是將記錄的資料塊進行雜湊,將雜湊值記錄在區塊鏈裡,但真正的內容還是記錄在普通儲存裡或雲端。第一種方法實現起來很容易,直接將內容寫入區塊鏈即可,但需要海量的儲存,每個記錄內容都有海量的副本。如果這樣,將來每個鏈內節點的儲存需求就不是現在的幾百個G,而是大到海量。所以,現實這種方案是不可行的。而第二種方案採用控制和內容分離,就像在第二篇文章《打“假”區塊鏈應用(1)》中介紹的基於區塊鏈的DNS一樣,區塊鏈裡只記錄每個內容塊的雜湊值,就不需要讓每個鏈內節點擁有海量的儲存,而真正的內容是記錄在傳統的儲存中。一旦儲存內容被修改,所對應的雜湊值也發生變化,和區塊鏈內的雜湊值就不能匹配,這樣的行為是被禁止的,確保了儲存內容的不可修改性。這才是區塊鏈和雲端計算的有效結合。

安全

雲端計算裡的安全主要是確保應用能夠安全、穩定、可靠的執行。這種安全屬於傳統安全領域範疇。而區塊鏈內的安全是確保每個資料塊不被篡改,資料塊的記錄內容不被沒有私鑰的使用者讀取。利用這一點,如果和上面介紹的基於區塊鏈的安全儲存產品結合,就能設計出的加密儲存裝置。

管理和協同

雲端計算和區塊鏈裡的管理方法和資源協同完全是不一樣的。雲端計算實際上是通過集中的控制器進行有中心化的管理。雖然資源可以分散式提供,但管理一定是集中的。所有資源的分配、排程和應用都是被集中管理。而區塊鏈採用無中心的管理方式,所有的節點都是一樣的,就沒有必要進行管理,一切都是自發和自動的。所以當區塊鏈的資源要轉化成為雲端計算資源的一部分的時候,除了網路,管理也是必須重構的。