標籤:

想從事雲計算方面,需要涉獵哪些技術,具體包括語言,系統,開發平台等?


隨便說幾點自己的意見,呵呵

首先,對於雲計算來說,運維和開發都是很重要的,聽過一種說法,雲計算拼得是就是運維,這句話雖然有點誇張,但也並非全無道理,從你的問題來看,你應該問得是開發方面。

其次,正如Flysky所說的,雲計算話題很大,平常所說的大多數是指IaaS,PaaS和SaaS,但是也有人將Hadoop也歸為雲計算,這個跟之前的XaaS還是有很大區別的。如果想要學習Hadoop,那就比較簡單了,Linux,Java。。。

第三,現有有很多開源的雲計算平台,IaaS的有OpenStack、Eucalyptus、CloudStack、OpenNebula等,PaaS的有vmware的CloudFoundry、RedHat的OpenShift, SaaS的不大清楚,請其他知友來介紹一下,這些都基本可以免費下載下來,自己安裝部署搭建雲計算平台。我覺得自己多玩玩會有助於加深對這些技術的了解。而且這些平台的源碼都是公開的,可以更加深入學習雲計算背後的技術。

第四,至於技術準備,首先我認為Linux知識是必須的,基本所有的開源雲計算平台都是基於Linux的,如果對Linux不熟悉,那麼現在就開始學習使用吧。語言方面我認為只要熟悉一門語言就可以了,其他的可以慢慢學,如果你看這些開源的雲計算代碼可以發現,OpenStack使用Python寫的,CloudFoundry和OpenShift則基本是由Ruby,Eucalyptus和CloudStack是Java,OpenNebula是C++。現在比較熱門的OpenStack和CloudFoundry都是腳本語言寫的,或許可以看出腳本語言在雲計算中的重要性吧。

第五,虛擬化技術對於雲計算來說是很重要的,IaaS的基礎就是虛擬化技術,更具體來說就是Xen和KVM,所以這方面的知識也是應該學習的,不用深入到Xen和KVM的源代碼實現層面,但是基本的使用和libvirt api 編程還是需要掌握的。PaaS不一定需要虛擬化,但是PaaS和IaaS的結合我覺得是一個趨勢,以CloudFoundry為例,儘管它是PaaS,其本身也被設計運行在通用硬體上,但是CloudFoundry BOSH工具將它和IaaS(更準確地說是和虛擬化技術)完美地整合到一起,這也是我認為虛擬化技術重要的原因。

第六,雲計算除了虛擬化技術之外,存儲技術,尤其是分散式存儲也是相當重要的。例如OpenStack的swift,開源分散式存儲系統ceph等,這方面我本人了解得比較少,希望有其他知友分享一下這方面的知識。

記得OS大牛Bryan Cantrill說過,大致意思是雲計算的技術問題都可以歸根為操作系統的技術問題,個人覺得還是有一定道理的~


學院開「雲計算」這門課的老師說過一句話,雲計算無非是新瓶裝舊酒。如果要搞,學好已有的知識,足夠了,具體知識@jefflee 說得很詳細,贊一個。

說句題外話,雖然現在雲計算很火,但是否真的是革命性技術還兩說。陳浩曾經對雲計算有如下評論:

Cloud Computing – 這是一個靠炒作出現的東西。這個東西也就是說,我們可以使用不同的調備,比如電腦,平板電腦,手機,移動設備隨時隨地做想做的事。Google的Chrome筆記本的廣告展示了這項技術,但是,把工作結果放在雲端的人會有多少呢。更多的人更喜歡的是去使用那些自己可以控制的電腦或平台。Google在這點上做的明顯不如Amazon,像Amazon EC2平台,你可以在世界上任何一個角落隨時隨地的去啟動你那台遠程的系統。(更新(2011/1/29):解釋一下,關於雲計算,在寫下這篇文章的時候我本來有點拿不定主意的,後來回顧了一下歷史,如COM啊,ActiveX啊,EJB啊,當時感覺都是很強的東西,但是最終也只是被炒作的。雲計算,我不知道未來怎麼樣,從今天來看,這項技術在今天存在炒作的情況——中移動雲,阿里雲,到處都是雲,在雲面前,神馬都是浮雲了。)

這裡有篇新聞,也可看下:http://www.chinaeinet.com/2012/0112/13008.html


題主問的是「從事雲計算方面,需要涉獵哪些技術」,要回答這個問題,先需要了解「雲計算」。

  • 什麼是雲計算?

為滿足日益龐大的計算、存儲任務,設計的各種相對廉價、分散式的系統。

以上是本人的理解,不是照本宣科。這個解釋可以理解為:

第一,雲計算是巨大的需求而設計的,不能算炒概念,當然,林子大了什麼鳥都有,很多小廠商的確在炒概念。那麼需求在哪裡?Google、Baidu是不是有很多人同時在搜索,那是不是計算量龐大?應該是毫無異議的吧。亞馬遜、淘寶是不是很多人在買東西,是不是計算和存儲都很大?

所以,Google或阿里們就要設計系統來解決這些問題啊。

第二個重要的點是,他必須是廉價的,為什麼要廉價呢?不能像中國移動那樣買個IBM大型機搞定一切嗎?不能,Google和阿里們做的是:長尾理論中的尾巴市場(你需要了解什麼是長尾理論),直白的說,就是以前大佬們瞧不起的付不起多少錢的但數量龐大的屁民生意。一句話:要便宜。你要是用大型機,賠的姥姥家了,至於大型機的什麼各種可靠性指標怎麼辦,(⊙﹏⊙) 你這個屁民給你免費用就不錯了,你還要求那麼多。所以雲計算通常都是一堆pc+linux+Open Sources+....反正怎麼便宜怎麼來。

第三必須是分散式的,這個就不解釋了,互聯網生意呀。

  • 需要涉獵哪些技術?

那麼我來「正式」的回答這個問題。

雲計算是正方興未艾,大廠商們都在倒騰自己的玩意,所以沒有所謂正統的雲計算技術要學習。但是,你可以看看Google、阿里、臉書、推特這些極度依賴雲計算的廠商,他們在怎麼玩?

他們需要超級快、超級大的存儲,所以他們在玩NoSql,內存資料庫等,我就不羅列哪些產品了,這個玩意發展太快了,一不小心一年後有人看見這個答案就說我out了。

他們還需要很多廉價機器同時計算,就是分散式計算框架咯,所以你也需要去找那些產品學一學。

  • 具體包括語言,系統,開發平台等

目前(2016)來說,系統無疑是Linux,開發平台沒有具體、語言沒有具體,所以一切看你上哪條賊船。

但不要誤解雲計算不成熟,他很成熟,不過他仍然在快速的發展。

題主如果是入門者,我建議:

語言上學習Java;

系統上Linux基本操作會就可以了(運維是不需要你操心的);

開發平台,這個其實就是你要學習一堆的框架庫,用他們來寫你的應用,具體哪些,自己搜吧,一年一個變;

  • 你說的雲計算和正統的按需購買的雲計算解釋不同啊?

額,是的,雲計算正統的解釋是按需購買,可以參看知乎各位大俠的解釋。我這樣解釋其實目的在於符合題主關心的「我需要學什麼」這個問題,因為問這個問題的目的是學到東西去找工作,公司的面試官關心你學的雲計算是否符合他們的需求,至於按需購買那時市場部門關心的。


其實現在在做雲計算的東西,概念性太多了。

後台就是更新的虛擬化。所謂的全世界訪問都一樣只是傳說。你買的時候在哪個數據中心,你以後也就在那個數據中心了。


那就是雲計算還是不成熟,具體做的是關於操作系統的?那從事做雲計算相關的工作的話,具體需要哪些硬性的軟體技術呢?會一門語言,對Linux系統精通?


雲計算關鍵技術包括虛擬化、分散式存儲、分散式計算、多租戶等,接下來為大家一一介紹:

虛擬化,虛擬化技術是雲計算基礎架構的基石,是指將一台計算機虛擬為多台邏輯計算機,在一台計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

分散式存儲,面對數據爆炸的時代,集中式存儲已經無法滿足海量數據的存儲需求,分散式存儲應運而生。GFS是谷歌推出的一款分散式文件系統,可以滿足大型、分散式、對大量數據進行訪問的應用的需求,GFS具有很好的硬體容錯性,可以把數據存儲到成百上千台伺服器上面,並在硬體出錯的情況下盡量保證數據的完整性。

分散式計算,面對海量的數據,傳統的單指令單數據流順序執行的方式已經無法滿足快速數據處理的要求,在這們的背景下,谷歌提出了並行編程模型MapReduce,讓任何人都可以在短時間內迅速獲得海量計算能力,它允許開發者在不具備並行開發經驗的前提下,也能夠開發出分散式的並行程序,並讓其同時運行在數百台機器上,在短時間內完成海量數據的計算。

多租戶,它的技術目的在於使大量用戶能夠共享同一堆棧的軟硬體資源,每個用戶按需使用資源,能夠對軟體服務進行客戶化配置,而不影響其他用戶的使用。

雲計算時代,我們對雲計算也要有所了解,一定要知道,雲計算的基本特徵是什麼? - 雲計算 多智時代


推薦閱讀:

在七牛工作是什麼樣的體驗和感受?
IDC和雲計算是一樣的嗎?
雲存儲工程師的技能樹是怎樣的?
雲計算行業中的影響是否被過分誇大了?
浙江特色小鎮未來將會作為一種什麼樣的存在?

TAG:雲計算 |