在6月的Google Developer's Day活動前後,媒體報導了有關雲端運算的事情。有些也冠上了滿誇大的標題,說雲端運算是Google的武器...或是IT的明日之星...等等的。但其實這也和「Web2.0」這個名詞的出現一樣,多半有廠商在後面的推廣,舊酒新瓶裝。但實際上,各位也是從以前到現在就都在「雲」上,只是Google將自己的三個核心技術,與網路的使用者們,一起包裝成新的名詞叫做雲端運算。
9月10號凌晨3點的時候,CERN的大型強子對撞機(LHC)投入了第一個質子束,一個月後就要進行第一次對撞。LHC一年能夠產生15PB(15,000,000GB)的資料量,如果以一張DVD9來算的話,那就是166萬張了。但要怎樣能夠將這些偵測器得到的原始資料進行龐大的運算?這個時候就要靠著分散式運算來得到結果。而其中一種分散式運算的技術,我們稱做格網計算。
我希望透過這篇文章,讓大家了解電腦的運算歷史,以及未來每個人手上的電腦,又會被放在世界的哪裡。
運算(Computing)的歷史
運算(Computing),又被譯為計算。也因此用來計算的機器,當然就稱做為計算機了。但在台灣的譯名,放在手上輸入數字那種才叫計算機(大陸叫做計算器),而Computer就是電腦了。計算的意義便是,有一群資料,透過一個流程將這些資料進行加減乘除,或是更複雜的數學運算,來得到想要的結果。
在討論計算的歷史的時候,同樣地也等於討論到計算機及電腦硬體的歷史。從算盤,到巴斯卡計算器,再到真空管電腦,直到現在的IC電腦,電腦計算的速度可以說是指數成長。而在IC電腦已經這樣普及的時候,人們也早就習慣研究數位化的計算方法(演算法),並且將資料數位化後進行計算,在將這些計算後的數位資料,又轉回人可以理解的圖形或是文字資料。
這個時候CPU的設計也慢慢地開始從一台電腦只有一個CPU,到有多個CPU。在1970年代左右,計算的重心是放在超級電腦(Supercomputer)上。此時所發展出來的平行計算(Parallel Computing)的能力,足夠代表一個國家的科技水平甚至是戰爭科技。在當時也只有擁有超級電腦的國家,才有能力進行精確的彈道計算。換個角度不難可以想像,資訊科技及戰爭是相輔相成的方式互相成長。我們通常以FLOPS(FLoating point Operations Per Second),也就是每秒能夠進行的浮點數運算數量,來代表電腦的運算能力。今年六月的時候,IBM的Roadrunner以1375.8TFLOPS創造驚人的數字,也就是說這個超級電腦每秒可以進行一千多兆次浮點運算,而其他的超級電腦也有5~600TFLOPS。讀者們還是可以想像,這些超級電腦從以前到現在,大多數都還是在美國。
而我們計算的資料,也與以往大有不同。早期透過人工可以輸入,計算並理解的資料,100KB就已經是龐然大數。然而現在的資料量動則就已經上GB或是TB,已經不可能在透過人工的方式輸入。而這個時候許多自動化的輸入輸出裝置也相當普及,許多公司如IBM早已生產上百萬台磁碟儲存系統,每台都可以儲存上百TB的資料。另一方面像LHC所使用的偵測器,也能夠在很短的時間累積大量的數位資料。
很快地我們就發現,這樣的上TFLOPS的計算能量也無法完全滿足我們想要計算的資料量。
所以從二次世界大戰帶來了網際網路之後,運算開始走向許多台電腦一起進行,而並非以前的單打獨鬥。也因此從平行計算逐漸開始有了不同的分支,一個是利用網路將多台電腦串在一起,我們稱做分散式計算(Distributed Computing),另一個是原本的多CPU技術(SMP),逐漸往多核心(Multicore)的技術發展。分散式計算,根據分散及構成方式不同,在分做網際網路運算(Internet Computing),叢集運算(Cluster Computing),格網運算(Grid Computing),P2P運算(P2P Computing),以下就讓我來介紹這些運算方式。
Internet運算和雲端運算
在我過去的文章曾經討論到,在還沒開始Web 2.0的時代之前,人們的在瀏覽器上的輸入,不管是填寫的表單也好,或者是搜尋的關鍵字也好,都已經是構成大量輸入的動作,但這些資料並沒有啥關連性。在Google還沒成名的時候,很多人就已經投入搜尋引擎的研發。後來Google卻將這個技術建構得非常紮實,讓這些資料有索引,也讓這些資料關連越來越密集。儘管2004的時候尚無網際網路運算這個名詞,卻可以視作現在雲端運算的前身。
由於網際網路實在過於龐大,無法以一般的方式進行測量,只能夠提及這個代表性的計畫,Seti@HOME。Seti@HOME計算的目的是收集宇宙的電波,並進行快速富立葉轉換的演算,來變成電腦可以分析的資料,藉此來發現有沒有外星人的存在。利用BOINC的分散式計算系統,透過全球33萬台電腦,在今年八月的時候達到了528TFLOPS,相當於上述的超級電腦。而LHC也有使用BOINC進行一部份的計算。
可以想像全世界的電腦一定多過於這個數字,就知道未來雲端計算能夠發揮的能量有多大。
而現在不管Yahoo還是微軟,都與Google一起爭奪這個龐大資源。因為雲端運算不僅牽扯到全世界的電腦,也包括全世界的使用者。如果能做出更好的平台,更好的服務,讓更多使用者涉入,那就有更多的商機。
儘管雲端運算看起來像是驚人的科技,但也有缺點。要將世界的電腦組合成有用的資源,除了像BOINC平台去進行特定計算或跑特殊的程式,以目前的科技還無法這樣隨心所欲。我們還無法做到讓使用者想執行的程式,想解決的問題,都變成拿地球上所有電腦去跑。也因此,不管現在這科技三巨頭怎樣做,都還是以自身的經費所建置的運算資源來達成。也因此從這些公司口中所說的「雲端」到底是否有真正運用到網際網路上的電腦,還是一個大問號。但不可否認的是,他們耗盡研發能量,經費構成的運算資源,都會讓全世界的人有機會「使用」,甚至是免費的,這樣就不是一般的中小企業做得到的。此外以一個企業的經費到底能夠產生多少運算能量,也一定有個上限。
儘管如此,雲端運算能夠讓眾人自由甚至免費使用,還是一個相當大的誘因。其使用能夠帶給企業更多的利潤,這也是企業所希望的。人類日常生活的資訊會因為他們手上所持有的裝置(手機,PDA),或是電腦的規格慢慢提高,而能夠產生更多的輸入,企業能夠去整理分析這些資料,並且創造更好的服務回饋給人類,我想是會讓生活更好。
所以雲端運算,重點並不是在其運算能力,而是應用與服務。這個目的與原本的網際網路是相同的,也因此大家從以前到現在,都一直是在雲上。
當然換個角度,對於學術而言,就不見得是要求服務,而是真正的運算能力。現在的科技能發揮多大,就要讓他能夠多大,是一直以來資訊科學領域的人員都在努力的事。真正在進行運算的是誰?誰願意在雲下呢?
格網運算
格網運算的發展
比較起上面雲端運算,另一個分支就是著重高效能,串連各個CPU的運算能力,而非著重在服務上,我們稱做叢集運算。然而叢集運算也有部分技術,構成現在雲端運算的底層,像是負載平衡或是備援技術,都在我的文章中有說明過。而叢集技術,也已經成為現在超級電腦的核心技術,否則光靠一台電腦也無法達到上TFLOPS的水準。如何榨出CPU的每一分運算能力,如何擠出銅導線的每一分傳輸能力,都是在叢集或是高效能運算的主題中討論。
叢集運算雖然效能強勁,但成本也高昂,並不是一般的民生水平能負擔的起。因此以商用硬體(Commodity Hardware)所組裝的電腦,便慢慢變成另一個主流。這個情況在國內的大學也常見,教授不見得買得起一整組叢集,反而是逐次分批購買小電腦,再以軟體的方式合併在一起使用。而許多應用在叢集電腦上的函式庫或作業系統,也慢慢地改變並且移到這些商用電腦上執行。其中Unix作業系統,就是從大型工作站,慢慢演進成現在一般人都可以使用的最好例子。
另一個叢集運算的缺點,也在於需要完全同規格的硬體。不同的硬體,不同的環境,很難組合在一起運作。軟體上也有同樣問題,為了效能,可能針對作業系統的版本,使用的函式庫來限制,讓不同的站點(Site)之間必須開發許多的轉換程式才能整合。此外,跨網路區域,例如說大學與大學之間,連線與使用的時候都會遇到安全性的問題。為了解決這些問題,於是又衍生了另一個技術,稱做格網技術。
格網這個名詞,在英文中,比較多被用在電力格網(Power Grid)這樣的名詞中。也有人稱為網格。而在格網運算的始祖Ian Foster的論文中,便把格網計算的遠景,形容為就像電力或水力一樣,想要用的時候打開就有。然而格網運算,常會被拿來與叢集運算比較。從叢集運算起家的老教授們,也常常地難以理解既然沒那樣快,又為何需要格網技術。
在格網運算中常常會提到虛擬組織(VO, Virtual Organization),與W3C的技術規格。其實格網運算就是利用現有的叢集運算以及Web觀念當作底層,也有人說格網技術是下一代的Web 3.0。但格網技術是完全不同的目的,最主要還是增加資源的利用性,而並非只是求一個效能。
也因此,資源的收集,控制,服務,就成了格網中介軟體(Middleware)要完成的事。我們可以試著將這樣的觀念想像為漏斗,漏斗的下方是資源,由中央的中介軟體進行收集,再由更上層的軟體去應用。而這樣的觀念也逐漸擴充到別的領域,包括資料格網(Data Grid)。中間所有的協定,都以W3C所制訂的規格為主,如HTTP,XML等。也因此這樣設計的中介軟體,可以用來管理上萬台甚至數十萬台電腦,並且將其納入運算或儲存資源裡。
不管是美洲,歐洲,東亞都有許多的格網計畫及組織。這些組織各自在物理,化學,生物上都有許多極佳的表現。其中一個就是由現在熱門的大型強子對撞機計畫所發展出的歐盟e化科學格網計畫(EGEE),目前已經有250個站點,四萬多個CPU同時進行運算,其運算量已經超過一個國家所能夠產生的。台灣也有許多格網計畫,像是中研院的TWGrid,以及清華大學的Unigrid。而國家高速網路計算中心也推動了許多格網計畫,如醫療格網,氣喘格網,超級視訊格網...等。
但談到這邊,我們又不禁感到疑惑,
「這些格網計畫與我何干?」
「我並沒有聽過太多這些東西啊?」
「我的生活並沒有因為格網而變得比較美好。」
格網技術現在都還在研究階段,不管是業界,或是民生,要使用到格網技術帶來的便利,還要相當長的一陣子。
下一代的P2P運算
P2P的重要性
談到P2P大概會有許多人會想到驢子(eMule)與BT(BitTorrent),而且許多人在用的Foxy,迅雷,甚至使用者也不知道這些是P2P的軟體。在使用上,使用者完全有個直接的想法就是「下載」,即便過多的查詢封包會縮短他們網路設備的壽命。我認為資訊科技能夠讓使用者有這樣大量的需求,並不是在於技術本身,而是使用者能夠透過這些技術獲得什麼。使用者會希望透過P2P技術下載,也不外乎是因為這些網路上有著最多免費或盜版的資源。許多電影,音樂等需要著作權才能生存的組織不斷地與許多反盜版組織合作,甚至利用伺服器散播假檔;但許多P2P技術,分享方式,論壇,鄉民人力不斷投入...雙方的大戰就這樣持續已久。
實際上,現在所有流行的P2P技術,都還是最簡單的Flooding(像洪水一樣擴散訊息),並不包括任何控制訊息數量的方法。更別提是否使用到哪種很有效的P2P Overlay結構,可以讓關鍵字搜尋更聰明,或者是提高覆蓋度來讓搜尋更快。至今(2008),許多P2P技術仍在論文的階段,即使有了些成果,也都還是不穩定的技術。
我們所面對的真實問題
舉個例子,如果今天每個人的電腦,都很夠很穩定地儲存自己寫的部落格(而且自家電腦又快,不用等某X小站龜速的回應),只要你敢寫,永遠不會不見。那再加上如果有個地方,用很簡單的方法訂閱,讓大家可以「看見」自己寫了新的部落格文章,那有多好,是吧!
那對服務提供的業者呢?一來,業者不需要承擔資料消失的風險,因為「有種方法」可以讓資料永續存在,不因用戶重裝電腦而消失。二來,業者只要定期地去分析分類索引,做個首頁讓想要看的人可以快速地連到「某台電腦」並且讀取網頁就好了。這個某台電腦在哪裡,已經是一個大問號。而這個問號的背後,又遇到一個情況,那就是如果一個台灣人想要讀一個在美國的好友的部落格,因為相隔甚遠,勢必要遇到一些讀取緩慢甚至失敗的問題。
而最後的疑問還是,根本無人可以保證上一段話「」裡的那兩點。沒有方法可以保證資料的存在性,也沒有方法可以在提供資料的用戶關機後還能夠確保資料被讀取。
該怎樣解決?這個時候便讓我想起攻殼機動隊電影版第一集裡的一句話:「網路是無遠弗屆的」
我們接下來再來討論這個問題。
我們接下來再來討論這個問題。
群聚性
我個人相信,未來的幾年,P2P技術一定會慢慢地與Web和Mobile技術結合在一起。人們會慢慢開始發現,他們每一個連結並散到網路上的訊息,都會讓他們在各個層面發現與自己類似的人。舉例說,當你在使用Last.FM的播放器,將你聽過的歌曲資訊傳到網路上,雖然只是一個小動作,但其實使用者在聽歌的時候,無非也只是想要認識能夠一起聽歌的人,不然就是希望可以找到更多免費且類似的歌曲。人們不管是使用哪種服務,總是希望可以螞蟻雄兵,藉群眾來獲得更大的效益。
而一間公司是否能有效率地使用用戶端資源,也就變成這間公司的一個最大的命脈。儘管他們有非常多的創意,當服務資訊瞬間累積的時候,他們也會發現根本毫無能力可以儲存,分析,計算。而那些能夠分析的公司,也通常是大企業,因為他們有雄厚的資本額可以建立這些分析的機制。當初Google也是藉著搜尋技術以及廣告而起家,才能有資本;而許多小公司,連技術都不見得可以拼得過,又能夠累積多少用戶來強調他們的廣告能見度,藉此吸引廠商?想要藉著新技術,或是以老鼠會的方式來招攬人頭客戶的方式根本行不通。
我想,真正能夠顧及使用者需求,並讓使用者享受功能的時候也付出,才是歷久不衰的道路。而如今,我認為P2P的網路結構正是符合這種意義,並且有效率的方法之一。在設計服務的同時,不妨也思考一下這些提供資訊的節點互相連結的方式。別用別單純地Flooding的方式,期待使用者的訊息慢慢地傳到分析用的伺服器,或許也可以思考怎樣構成一個有結構的網路(多維度,圓環狀,階層化...等)來加速同類型使用者的群聚性。從另一個角度說,就像是訊息傳遞的更快的社群。
中介資料
一方面讓網路產生群聚性,而另一方面,使用者就要積極地產生資料,來讓網路能夠分析並且群聚。
在我寫到Web2.0有關的幾篇文章裡有提到,Web 2.0便是有這樣的特性,讓使用者不斷地去輸入以便產生資料。這樣的資料我們稱做中介資料(Metadata),也就是描述資料的資料。
舉例來說,你撰寫了一篇遊記,這篇文章裡有十個關鍵字,都是這篇遊記裡的重點地點,像是「台北」「新竹」。你上傳了一些照片,裡面有這些照片的座標。那麼這個時候,搜尋引擎就分析這些中介資料,來讓大家在搜尋台北和新竹的時候能找到你。而這不僅加速了搜尋引擎的效率,因為他不見得一定要掃瞄整篇文章才能做索引,同時也加速了這篇文章定位的準確性。
在舉個分享檔案的常見例子。假設我是一個喜歡電影的人,而我在我的興趣裡寫說「電影」。如果是以往,我要找到跟我有同樣興趣的人,並且互相交換電影,那就是先在交友網站認識後,剛好也發現對方也在開驢子或BT。但如果分享軟體本身就整合了Social的功能,使用者平常在編輯自己的相關資料的時候,也同樣地更能增加下載軟體的群聚性,增加下載速度。
如何整合
格網的優點是整合,而P2P的優點是搜尋,鬆散。比起以往使用某一種格網使用的傳輸協定,去包裝P2P的傳輸協定,未來整合的方式比較著重在將格網層的資源要求,轉換為P2P層的資源要求。舉例來說,如果有人對格網服務要求一個檔案,那這個服務便馬上要對下層的P2P網路進行搜尋,看誰有這個檔案。也因此P2P網路就比需採用更快的Structured Overlay,並且與上層的格網服務作緊密的整合。整合SuperPeer或許是一個加快網路查詢的方法,但也會給SuperPeer太大的負擔,因此這樣類型的節點,要能夠地轉移。
而檔案要如何保持存在網路上,也是一個問題。目前有相當多的研究都是著重在複寫(Replication)演算法上,許多複寫演算法要能夠探知整個網路的狀況,檔案的存在度,是非常繁瑣的作法。而我相信未來的電腦無論cpu,網路速度都會提昇,將網路的中介資料切割後再逐漸掃描,會是一個趨勢。
結論
在未來,每個人手上都會有一台以上的電腦。大家都會有手機,桌上型電腦,甚至數位相框,電冰箱...等家電也都是電腦。而這些電腦一旦串連起來,將會產生相當龐大的計算能力。你手上的電腦,將是維持世界運轉的一小小動力之一,當你使用一個方便服務的時候,也可以想想有些資料是從你的手機上貢獻出來的。


很棒的文章!
回覆刪除[...] Kiwi.雲端運算、格網運算與P2P運算 [...]
回覆刪除