首頁 - 關于我們 - 新聞活動 - 不是技術也(yě)能看懂(dǒng)雲計算(suàn),大(dà)數據,人(rén)工智能

不是技術也(yě)能看懂(dǒng)雲計算(suàn),大(dà)數據,人(rén)工智能

2020-6-3新聞

我今天要講這(zhè)三個(gè)話(huà)題,一個(gè)是雲計算(suàn),一個(gè)大(dà)數據,一個(gè)人(rén)工智能,我爲什(shén)麽要講這(zhè)三個(gè)東西呢(ne)?因爲這(zhè)三個(gè)東西現在非常非常的(de)火,它們之間好像互相有關系,一般談雲計算(suàn)的(de)時(shí)候也(yě)會提到大(dà)數據,談人(rén)工智能的(de)時(shí)候也(yě)會提大(dà)數據,談人(rén)工智能的(de)時(shí)候也(yě)會提雲計算(suàn)。所以說感覺他(tā)們又相輔相成不可(kě)分(fēn)割,如果是非技術的(de)人(rén)員(yuán)來(lái)講可(kě)能比較難理(lǐ)解說這(zhè)三個(gè)之間的(de)相互關系,所以有必要解釋一下(xià)。

一、雲計算(suàn)最初是實現資源管理(lǐ)的(de)靈活性

我們首先來(lái)說雲計算(suàn),雲計算(suàn)最初的(de)目标是對(duì)資源的(de)管理(lǐ),管理(lǐ)的(de)主要是計算(suàn)資源,網絡資源,存儲資源三個(gè)方面。

1.1 管數據中心就像配電腦(nǎo)

什(shén)麽叫計算(suàn),網絡,存儲資源呢(ne)?就說你要買台筆記本電腦(nǎo)吧,你是不是要關心這(zhè)台電腦(nǎo)什(shén)麽樣的(de)CPU啊?多(duō)大(dà)的(de)内存啊?這(zhè)兩個(gè)我們稱爲計算(suàn)資源。

這(zhè)台電腦(nǎo)要能上網吧,需要有個(gè)網口可(kě)以插網線,或者有無線網卡可(kě)以連接我們家的(de)路由器,您家也(yě)需要到運營商比如聯通(tōng),移動,電信開通(tōng)一個(gè)網絡,比如100M的(de)帶寬,然後會有師傅弄一根網線到您家來(lái),師傅可(kě)能會幫您将您的(de)路由器和(hé)他(tā)們公司的(de)網絡連接配置好,這(zhè)樣您家的(de)所有的(de)電腦(nǎo),手機,平闆就都可(kě)以通(tōng)過您的(de)路由器上網了(le)。這(zhè)就是網絡。

您可(kě)能還(hái)會問硬盤多(duō)大(dà)啊?原來(lái)硬盤都很小,10G之類的(de),後來(lái)500G,1T,2T的(de)硬盤也(yě)不新鮮了(le)。(1T是1024G),這(zhè)就是存儲。

對(duì)于一台電腦(nǎo)是這(zhè)個(gè)樣子的(de),對(duì)于一個(gè)數據中心也(yě)是同樣的(de)。想象你有一個(gè)非常非常大(dà)的(de)機房(fáng),裏面堆了(le)很多(duō)的(de)服務器,這(zhè)些服務器也(yě)是有CPU,内存,硬盤的(de),也(yě)是通(tōng)過類似路由器的(de)設備上網的(de)。這(zhè)個(gè)時(shí)候的(de)一個(gè)問題就是,運營數據中心的(de)人(rén)是怎麽把這(zhè)些設備統一的(de)管理(lǐ)起來(lái)的(de)呢(ne)?

1.2 靈活就是想啥時(shí)要都有,想要多(duō)少都行

管理(lǐ)的(de)目标就是要達到兩個(gè)方面的(de)靈活性。哪兩個(gè)方面呢(ne)?比如有個(gè)人(rén)需要一台很小很小的(de)電腦(nǎo),隻有一個(gè)CPU,1G内存,10G的(de)硬盤,一兆的(de)帶寬,你能給他(tā)嗎?像這(zhè)種這(zhè)麽小規格的(de)電腦(nǎo),現在随便一個(gè)筆記本電腦(nǎo)都比這(zhè)個(gè)配置強了(le),家裏随便拉一個(gè)寬帶都要100M。然而如果去一個(gè)雲計算(suàn)的(de)平台上,他(tā)要想要這(zhè)個(gè)資源的(de)時(shí)候,隻要一點就有了(le)。

所以說它就能達到兩個(gè)方面靈活性。

  • 第一個(gè)方面就是想什(shén)麽時(shí)候要就什(shén)麽時(shí)候要,比如需要的(de)時(shí)候一點就出來(lái)了(le),這(zhè)個(gè)叫做(zuò)時(shí)間靈活性。

  • 第二個(gè)方面就是想要多(duō)少呢(ne)就有多(duō)少,比如需要一個(gè)很小很小的(de)電腦(nǎo),可(kě)以滿足,比如需要一個(gè)特别大(dà)的(de)空間,以雲盤爲例,似乎雲盤給每個(gè)人(rén)分(fēn)配的(de)空間動不動就就很大(dà)很大(dà),随時(shí)上傳随時(shí)有空間,永遠(yuǎn)用(yòng)不完,這(zhè)個(gè)叫做(zuò)空間靈活性。

空間靈活性和(hé)時(shí)間靈活性,也(yě)即我們常說的(de)雲計算(suàn)的(de)彈性。

爲了(le)解決這(zhè)個(gè)彈性的(de)問題,經曆了(le)漫長(cháng)時(shí)間的(de)發展。

1.3 物(wù)理(lǐ)設備不靈活

首先第一個(gè)階段就是物(wù)理(lǐ)機,或者說物(wù)理(lǐ)設備時(shí)期。這(zhè)個(gè)時(shí)期相當于客戶需要一台電腦(nǎo),我們就買一台放在數據中心裏。物(wù)理(lǐ)設備當然是越來(lái)越牛,例如服務器,内存動不動就是百G内存,例如網絡設備,一個(gè)端口的(de)帶寬就能有幾十G甚至上百G,例如存儲,在數據中心至少是PB級别的(de)(一個(gè)P是1024個(gè)T,一個(gè)T是1024個(gè)G)。

然而物(wù)理(lǐ)設備不能做(zuò)到很好的(de)靈活性。首先它不能夠達到想什(shén)麽時(shí)候要就什(shén)麽時(shí)候要、比如買台服務器,哪怕買個(gè)電腦(nǎo),都有采購(gòu)的(de)時(shí)間。突然用(yòng)戶告訴某個(gè)雲廠商,說想要開台電腦(nǎo),如果使用(yòng)物(wù)理(lǐ)服務器,當時(shí)去采購(gòu)啊就很難,如果說供應商啊關系一般,可(kě)能采購(gòu)一個(gè)月(yuè),供應商關系好的(de)話(huà)也(yě)需要一個(gè)星期。用(yòng)戶等了(le)一個(gè)星期後,這(zhè)時(shí)候電腦(nǎo)才到位,用(yòng)戶還(hái)要登錄上去開始慢(màn)慢(màn)部署自己的(de)應用(yòng),時(shí)間靈活性非常差。第二是空間靈活性也(yě)不行,例如上述的(de)用(yòng)戶,要一個(gè)很小很小的(de)電腦(nǎo),現在哪還(hái)有這(zhè)麽小型号的(de)電腦(nǎo)啊。不能爲了(le)滿足用(yòng)戶隻要一個(gè)G的(de)内存是80G硬盤的(de),就去買一個(gè)這(zhè)麽小的(de)機器。但是如果買一個(gè)大(dà)的(de)呢(ne),因爲電腦(nǎo)大(dà),就向用(yòng)戶多(duō)收錢,用(yòng)戶說他(tā)隻用(yòng)這(zhè)麽小的(de)一點,如果讓用(yòng)戶多(duō)付錢就很冤。

1.4 虛拟化(huà)靈活多(duō)了(le)

有人(rén)就想辦法了(le)。第一個(gè)辦法就是虛拟化(huà)。用(yòng)戶不是隻要一個(gè)很小的(de)電腦(nǎo)麽?數據中心的(de)物(wù)理(lǐ)設備都很強大(dà),我可(kě)以從物(wù)理(lǐ)的(de)CPU,内存,硬盤中虛拟出一小塊來(lái)給客戶,同時(shí)也(yě)可(kě)以虛拟出一小塊來(lái)給其他(tā)客戶,每個(gè)客戶都隻能看到自己虛的(de)那一小塊,其實每個(gè)客戶用(yòng)的(de)是整個(gè)大(dà)的(de)設備上其中的(de)一小塊。虛拟化(huà)的(de)技術能使得(de)不同的(de)客戶的(de)電腦(nǎo)看起來(lái)是隔離的(de),我看著(zhe)好像這(zhè)塊盤就是我的(de),你看這(zhè)呢(ne)這(zhè)塊盤就是你的(de),實際情況可(kě)能我這(zhè)個(gè)10G和(hé)您這(zhè)個(gè)10G是落在同樣一個(gè)很大(dà)很大(dà)的(de)這(zhè)個(gè)存儲上的(de)。

而且如果事先物(wù)理(lǐ)設備都準備好,虛拟化(huà)軟件虛拟出一個(gè)電腦(nǎo)是非常快(kuài)的(de),基本上幾分(fēn)鐘(zhōng)就能解決。所以在任何一個(gè)雲上要創建一台電腦(nǎo),一點幾分(fēn)鐘(zhōng)就出來(lái)了(le),就是這(zhè)個(gè)道理(lǐ)。

這(zhè)個(gè)空間靈活性和(hé)時(shí)間靈活性就基本解決了(le)。

1.5 虛拟世界的(de)賺錢與情懷

在虛拟化(huà)階段,最牛的(de)公司是Vmware,是實現虛拟化(huà)技術比較早的(de)一家公司,可(kě)以實現計算(suàn),網絡,存儲的(de)虛拟化(huà),這(zhè)家公司很牛,性能也(yě)做(zuò)得(de)非常好,然後虛拟化(huà)軟件賣的(de)也(yě)非常好,賺了(le)好多(duō)的(de)錢,後來(lái)讓EMC(世界五百強,存儲廠商第一品牌)給收購(gòu)了(le)。

但是這(zhè)個(gè)世界上還(hái)是有很多(duō)有情懷的(de)人(rén)的(de),尤其是程序員(yuán)裏面,有情懷的(de)人(rén)喜歡做(zuò)一件什(shén)麽事情呢(ne)?開源。這(zhè)個(gè)世界上很多(duō)軟件都是有閉源就有開源,源就是源代碼。就是說某個(gè)軟件做(zuò)的(de)好,所有人(rén)都愛(ài)用(yòng),這(zhè)個(gè)軟件的(de)代碼呢(ne),我封閉起來(lái)隻有我公司知道,其他(tā)人(rén)不知道,如果其他(tā)人(rén)想用(yòng)這(zhè)個(gè)軟件,就要付我錢,這(zhè)就叫閉源。但是世界上總有一些大(dà)牛看不慣錢都讓一家賺了(le)去。大(dà)牛們覺得(de),這(zhè)個(gè)技術你會我也(yě)會,你能開發出來(lái),我也(yě)能,我開發出來(lái)就是不收錢,把代碼拿出來(lái)分(fēn)享給大(dà)家,全世界誰用(yòng)都可(kě)以,所有的(de)人(rén)都可(kě)以享受到好處,這(zhè)個(gè)叫做(zuò)開源。

比如最近蒂姆·伯納斯·李就是個(gè)非常有情懷的(de)人(rén),2017年,他(tā)因“發明(míng)萬維網、第一個(gè)浏覽器和(hé)使萬維網得(de)以擴展的(de)基本協議(yì)和(hé)算(suàn)法”而獲得(de)2016年度的(de)圖靈獎。圖靈獎就是計算(suàn)機界的(de)諾貝爾獎。然而他(tā)最令人(rén)敬佩的(de)是,他(tā)将萬維網,也(yě)就是我們常見的(de)www的(de)技術無償貢獻給全世界免費使用(yòng)。我們現在在網上的(de)所有行爲都應該感謝他(tā)的(de)功勞,如果他(tā)将這(zhè)個(gè)技術拿來(lái)收錢,應該和(hé)比爾蓋茨差不多(duō)有錢。

例如在閉源的(de)世界裏有windows,大(dà)家用(yòng)windows都得(de)給微軟付錢,開源的(de)世界裏面就出現了(le)Linux。比爾蓋茨靠windows,Office這(zhè)些閉源的(de)軟件賺了(le)很多(duō)錢,稱爲世界首富,就有大(dà)牛開發了(le)另外一種操作系統Linux。很多(duō)人(rén)可(kě)能沒有聽(tīng)說過Linux,很多(duō)後台的(de)服務器上跑的(de)程序都是Linux上的(de),比如大(dà)家享受雙十一,支撐雙十一搶購(gòu)的(de)系統,無論是淘寶,京東,考拉,都是跑在Linux上的(de)。

再如有apple就有安卓。apple市值很高(gāo),但是蘋果系統的(de)代碼我們是看不到的(de)。于是就有大(dà)牛寫了(le)安卓手機操作系統。所以大(dà)家可(kě)以看到幾乎所有的(de)其他(tā)手機廠商,裏面都裝安卓系統,因爲蘋果系統不開源,而安卓系統大(dà)家都可(kě)以用(yòng)。

在虛拟化(huà)軟件也(yě)一樣,有了(le)Vmware,這(zhè)個(gè)軟件非常非常的(de)貴。那就有大(dà)牛寫了(le)兩個(gè)開源的(de)虛拟化(huà)軟件,一個(gè)叫做(zuò)Xen,一個(gè)叫做(zuò)KVM,如果不做(zuò)技術的(de),可(kě)以不用(yòng)管這(zhè)兩個(gè)名字,但是後面還(hái)是會提到。

1.6 虛拟化(huà)的(de)半自動和(hé)雲計算(suàn)的(de)全自動

虛拟化(huà)軟件似乎解決了(le)靈活性問題,其實不全對(duì)。因爲虛拟化(huà)軟件一般創建一台虛拟的(de)電腦(nǎo),是需要人(rén)工指定這(zhè)台虛拟電腦(nǎo)放在哪台物(wù)理(lǐ)機上的(de),可(kě)能還(hái)需要比較複雜(zá)的(de)人(rén)工配置,所以使用(yòng)Vmware的(de)虛拟化(huà)軟件,需要考一個(gè)很牛的(de)證書(shū),能拿到這(zhè)個(gè)證書(shū)的(de)人(rén),薪資是相當的(de)高(gāo),也(yě)可(kě)見複雜(zá)程度。所以僅僅憑虛拟化(huà)軟件所能管理(lǐ)的(de)物(wù)理(lǐ)機的(de)集群規模都不是特别的(de)大(dà),一般在十幾台,幾十台,最多(duō)百台這(zhè)麽一個(gè)規模。這(zhè)一方面會影(yǐng)響時(shí)間靈活性,雖然虛拟出一台電腦(nǎo)的(de)時(shí)間很短,但是随著(zhe)集群規模的(de)擴大(dà),人(rén)工配置的(de)過程越來(lái)越複雜(zá),越來(lái)越耗時(shí)。另一方面也(yě)影(yǐng)響空間靈活性,當用(yòng)戶數量多(duō)的(de)時(shí)候,這(zhè)點集群規模,還(hái)遠(yuǎn)達不到想要多(duō)少要多(duō)少的(de)程度,很可(kě)能這(zhè)點資源很快(kuài)就用(yòng)完了(le),還(hái)得(de)去采購(gòu)。所以随著(zhe)集群的(de)規模越來(lái)越大(dà),基本都是千台起步,動辄上萬台,甚至幾十上百萬台,如果去查一下(xià)BAT,包括網易,包括谷歌(gē),亞馬遜,服務器數目都大(dà)的(de)吓人(rén)。這(zhè)麽多(duō)機器要靠人(rén)去選一個(gè)位置放這(zhè)台虛拟化(huà)的(de)電腦(nǎo)并做(zuò)相應的(de)配置,幾乎是不可(kě)能的(de)事情,還(hái)是需要機器去做(zuò)這(zhè)個(gè)事情。

人(rén)們發明(míng)了(le)各種各樣的(de)算(suàn)法來(lái)做(zuò)這(zhè)個(gè)事情,算(suàn)法的(de)名字叫做(zuò)調度(Scheduler)。通(tōng)俗一點的(de)說,就是有一個(gè)調度中心,幾千台機器都在一個(gè)池子裏面,無論用(yòng)戶需要多(duō)少CPU,内存,硬盤的(de)虛拟電腦(nǎo),調度中心會自動在大(dà)池子裏面找一個(gè)能夠滿足用(yòng)戶需求的(de)地方,把虛拟電腦(nǎo)啓動起來(lái)做(zuò)好配置,用(yòng)戶就直接能用(yòng)了(le)。這(zhè)個(gè)階段,我們稱爲池化(huà),或者雲化(huà),到了(le)這(zhè)個(gè)階段,才可(kě)以稱爲雲計算(suàn),在這(zhè)之前都隻能叫虛拟化(huà)。

1.7 雲計算(suàn)的(de)私有與公有

雲計算(suàn)大(dà)緻分(fēn)兩種,一個(gè)是私有雲,一個(gè)是公有雲,還(hái)有人(rén)把私有雲和(hé)公有雲連接起來(lái)稱爲混合雲,我們暫且不說這(zhè)個(gè)。私有雲就是把虛拟化(huà)和(hé)雲化(huà)的(de)這(zhè)套軟件部署在别人(rén)的(de)數據中心裏面,使用(yòng)私有雲的(de)用(yòng)戶往往很有錢,自己買地建機房(fáng),自己買服務器,然後讓雲廠商部署在自己這(zhè)裏,Vmware後來(lái)除了(le)虛拟化(huà),也(yě)推出了(le)雲計算(suàn)的(de)産品,并且在私有雲市場(chǎng)賺的(de)盆滿缽滿。所謂公有雲就是虛拟化(huà)和(hé)雲化(huà)軟件部署在雲廠商自己數據中心裏面的(de),用(yòng)戶不需要很大(dà)的(de)投入,隻要注冊一個(gè)賬号,就能在一個(gè)網頁上點一下(xià)創建一台虛拟電腦(nǎo),例如AWS也(yě)即亞馬遜的(de)公有雲,例如國内的(de)阿裏雲,騰訊雲,網易雲等。

亞馬遜呢(ne)爲什(shén)麽要做(zuò)公有雲呢(ne)?我們知道亞馬遜原來(lái)是國外比較大(dà)的(de)一個(gè)電商,它做(zuò)電商的(de)時(shí)候也(yě)肯定會遇到類似雙11的(de)場(chǎng)景,在某一個(gè)時(shí)刻大(dà)家都沖上來(lái)買東西。當大(dà)家都沖上買東西的(de)時(shí)候,就特别需要雲的(de)時(shí)間靈活性和(hé)空間靈活性。因爲它不能時(shí)刻準備好所有的(de)資源,那樣太浪費了(le)。但也(yě)不能什(shén)麽都不準備,看著(zhe)雙十一這(zhè)麽多(duō)用(yòng)戶想買東西登不上去。所以需要雙十一的(de)時(shí)候,創建一大(dà)批虛拟電腦(nǎo)來(lái)支撐電商應用(yòng),過了(le)雙十一再把這(zhè)些資源都釋放掉去幹别的(de)。所以亞馬遜是需要一個(gè)雲平台的(de)。

然而商用(yòng)的(de)虛拟化(huà)軟件實在是太貴了(le),亞馬遜總不能把自己在電商賺的(de)錢全部給了(le)虛拟化(huà)廠商吧。于是亞馬遜基于開源的(de)虛拟化(huà)技術,如上所述的(de)Xen或者KVM,開發了(le)一套自己的(de)雲化(huà)軟件。沒想到亞馬遜後來(lái)電商越做(zuò)越牛,雲平台也(yě)越做(zuò)越牛。而且由于他(tā)的(de)雲平台需要支撐自己的(de)電商應用(yòng),而傳統的(de)雲計算(suàn)廠商多(duō)爲IT廠商出身,幾乎沒有自己的(de)應用(yòng),因而亞馬遜的(de)雲平台對(duì)應用(yòng)更加的(de)友好,迅速發展成爲雲計算(suàn)的(de)第一品牌,賺了(le)很多(duō)錢。在亞馬遜公布其雲計算(suàn)平台财報之前,人(rén)們都猜測,亞馬遜電商賺錢,雲也(yě)賺錢嗎?後來(lái)一公布财報,發現不是一般的(de)賺錢,僅僅去年,亞馬遜AWS年營收達122億美(měi)元,運營利潤31億美(měi)元。

1.8 雲計算(suàn)的(de)賺錢與情懷

公有雲的(de)第一名亞馬遜過得(de)很爽,第二名Rackspace過的(de)就一般了(le)。沒辦法,這(zhè)就是互聯網行業的(de)殘酷性,多(duō)是赢者通(tōng)吃(chī)的(de)模式。所以第二名如果不是雲計算(suàn)行業的(de),很多(duō)人(rén)可(kě)能都沒聽(tīng)過了(le)。第二名就想,我幹不過老大(dà)怎麽辦呢(ne)?開源吧。如上所述,亞馬遜雖然使用(yòng)了(le)開源的(de)虛拟化(huà)技術,但是雲化(huà)的(de)代碼是閉源的(de),很多(duō)想做(zuò)又做(zuò)不了(le)雲化(huà)平台的(de)公司,隻能眼巴巴的(de)看著(zhe)亞馬遜掙大(dà)錢。Rackspace把源代碼一公開,整個(gè)行業就可(kě)以一起把這(zhè)個(gè)平台越做(zuò)越好,兄弟(dì)們大(dà)家一起上,和(hé)老大(dà)拼了(le)。

于是Rackspace和(hé)美(měi)國航空航天局合作創辦了(le)開源軟件OpenStack,如圖所示OpenStack的(de)架構圖,不是雲計算(suàn)行業的(de)不用(yòng)弄懂(dǒng)這(zhè)個(gè)圖,但是能夠看到三個(gè)關鍵字,Compute計算(suàn),Networking網絡,Storage存儲。還(hái)是一個(gè)計算(suàn),網絡,存儲的(de)雲化(huà)管理(lǐ)平台。

當然第二名的(de)技術也(yě)是非常棒的(de),有了(le)OpenStack之後,果真像Rackspace想象的(de)一樣,所有想做(zuò)雲的(de)大(dà)企業都瘋了(le),你能想象到的(de)所有如雷貫耳的(de)大(dà)型IT企業,IBM,惠普,戴爾,華爲,聯想等等,都瘋了(le)。原來(lái)雲平台大(dà)家都想做(zuò),看著(zhe)亞馬遜和(hé)Vmware賺了(le)這(zhè)麽多(duō)錢,眼巴巴看著(zhe)沒辦法,想自己做(zuò)一個(gè)好像難度還(hái)挺大(dà)。現在好了(le),有了(le)這(zhè)樣一個(gè)開源的(de)雲平台OpenStack,所有的(de)IT廠商都加入到這(zhè)個(gè)社區(qū)中來(lái),對(duì)這(zhè)個(gè)雲平台進行貢獻,包裝成自己的(de)産品,連同自己的(de)硬件設備一起賣。有的(de)做(zuò)了(le)私有雲,有的(de)做(zuò)了(le)公有雲,OpenStack已經成爲開源雲平台的(de)事實标準。

1.9 IaaS, 資源層面的(de)靈活性

随著(zhe)OpenStack的(de)技術越來(lái)越成熟,可(kě)以管理(lǐ)的(de)規模也(yě)越來(lái)越大(dà),并且可(kě)以有多(duō)個(gè)OpenStack集群部署多(duō)套,比如北(běi)京部署一套,杭州部署兩套,廣州部署一套,然後進行統一的(de)管理(lǐ)。這(zhè)樣整個(gè)規模就更大(dà)了(le)。在這(zhè)個(gè)規模下(xià),對(duì)于普通(tōng)用(yòng)戶的(de)感知來(lái)講,基本能夠做(zuò)到想什(shén)麽時(shí)候要就什(shén)麽什(shén)麽藥,想要多(duō)少就要多(duō)少。還(hái)是拿雲盤舉例子,每個(gè)用(yòng)戶雲盤都分(fēn)配了(le)5T甚至更大(dà)的(de)空間,如果有1億人(rén),那加起來(lái)空間多(duō)大(dà)啊。其實背後的(de)機制是這(zhè)樣的(de),分(fēn)配你的(de)空間,你可(kě)能隻用(yòng)了(le)其中很少一點,比如說它分(fēn)配給你了(le)5個(gè)T,這(zhè)麽大(dà)的(de)空間僅僅是你看到的(de),而不是真的(de)就給你了(le),你其實隻用(yòng)了(le)50個(gè)G,則真實給你的(de)就是50個(gè)G,随著(zhe)你文件的(de)不斷上傳,分(fēn)給你的(de)空間會越來(lái)越多(duō)。當大(dà)家都上傳,雲平台發現快(kuài)滿了(le)的(de)時(shí)候(例如用(yòng)了(le)70%),會采購(gòu)更多(duō)的(de)服務器,擴充背後的(de)資源,這(zhè)個(gè)對(duì)用(yòng)戶是透明(míng)的(de),看不到的(de),從感覺上來(lái)講,就實現了(le)雲計算(suàn)的(de)彈性。其實有點像銀行,給儲戶的(de)感覺是什(shén)麽時(shí)候取錢都有,隻要不同時(shí)擠兌,銀行就不會垮。

這(zhè)裏做(zuò)一個(gè)簡單的(de)總結,到了(le)這(zhè)個(gè)階段,雲計算(suàn)基本上實現了(le)時(shí)間靈活性和(hé)空間靈活性,實現了(le)計算(suàn),網絡,存儲資源的(de)彈性。計算(suàn),網絡,存儲我們常稱爲基礎設施Infranstracture, 因而這(zhè)個(gè)階段的(de)彈性稱爲資源層面的(de)彈性,管理(lǐ)資源的(de)雲平台,我們稱爲基礎設施服務,就是我們常聽(tīng)到的(de)IaaS,Infranstracture As A Service。

二、雲計算(suàn)不光(guāng)管資源,也(yě)要管應用(yòng)

有了(le)IaaS,實現了(le)資源層面的(de)彈性就夠了(le)嗎?顯然不是。還(hái)有應用(yòng)層面的(de)彈性。這(zhè)裏舉個(gè)例子,比如說實現一個(gè)電商的(de)應用(yòng),平時(shí)十台機器就夠了(le),雙十一需要一百台。你可(kě)能覺得(de)很好辦啊,有了(le)IaaS,新創建九十台機器就可(kě)以了(le)啊。但是90台機器創建出來(lái)是空的(de)啊,電商應用(yòng)并沒有放上去啊,隻能你公司的(de)運維人(rén)員(yuán)一台一台的(de)弄,還(hái)是需要很長(cháng)時(shí)間才能安裝好的(de)。雖然資源層面實現了(le)彈性,但是沒有應用(yòng)層的(de)彈性,依然靈活性是不夠的(de)。

有沒有方法解決這(zhè)個(gè)問題呢(ne)?于是人(rén)們在IaaS平台之上又加了(le)一層,用(yòng)于管理(lǐ)資源以上的(de)應用(yòng)彈性的(de)問題,這(zhè)一層通(tōng)常稱爲PaaS(Platform As A Service)。這(zhè)一層往往比較難理(lǐ)解,其實大(dà)緻分(fēn)兩部分(fēn),一部分(fēn)我稱爲你自己的(de)應用(yòng)自動安裝,一部分(fēn)我稱爲通(tōng)用(yòng)的(de)應用(yòng)不用(yòng)安裝。

我們先來(lái)說第一部分(fēn),自己的(de)應用(yòng)自動安裝。比如電商應用(yòng)是你自己開發的(de),除了(le)你自己,其他(tā)人(rén)是不知道怎麽安裝的(de),比如電商應用(yòng),安裝的(de)時(shí)候需要配置支付寶或者微信的(de)賬号,才能别人(rén)在你的(de)電商上買東西的(de)時(shí)候,付的(de)錢是打到你的(de)賬戶裏面的(de),除了(le)你,誰也(yě)不知道,所以安裝的(de)過程平台幫不了(le)忙,但是能夠幫你做(zuò)的(de)自動化(huà),你需要做(zuò)一些工作,将自己的(de)配置信息融入到自動化(huà)的(de)安裝過程中方可(kě)。比如上面的(de)例子,雙十一新創建出來(lái)的(de)90台機器是空的(de),如果能夠提供一個(gè)工具,能夠自動在這(zhè)新的(de)90台機器上将電商應用(yòng)安裝好,就能夠實現應用(yòng)層面的(de)真正彈性。例如Puppet, Chef, Ansible, Cloud Foundary都可(kě)以幹這(zhè)件事情,最新的(de)容器技術Docker能更好的(de)幹這(zhè)件事情,不做(zuò)技術的(de)可(kě)以不用(yòng)管這(zhè)些詞。

第二部分(fēn),通(tōng)用(yòng)的(de)應用(yòng)不用(yòng)安裝。所謂通(tōng)用(yòng)的(de)應用(yòng),一般指一些複雜(zá)性比較高(gāo),但是大(dà)家都在用(yòng)的(de),例如數據庫。幾乎所有的(de)應用(yòng)都會用(yòng)數據庫,但是數據庫軟件是标準的(de),雖然安裝和(hé)維護比較複雜(zá),但是無論誰安裝都是一樣。這(zhè)樣的(de)應用(yòng)可(kě)以變成标準的(de)PaaS層的(de)應用(yòng)放在雲平台的(de)界面上。當用(yòng)戶需要一個(gè)數據庫的(de)時(shí)候,一點就出來(lái)了(le),用(yòng)戶就可(kě)以直接用(yòng)了(le)。有人(rén)問,既然誰安裝都一個(gè)樣,那我自己來(lái)好了(le),不需要花錢在雲平台上買。當然不是,數據庫是一個(gè)非常難的(de)東西,光(guāng)Oracle這(zhè)家公司,靠數據庫就能賺這(zhè)麽多(duō)錢。買Oracle也(yě)是要花很多(duō)很多(duō)錢的(de)。然而大(dà)多(duō)數雲平台會提供Mysql這(zhè)樣的(de)開源數據庫,又是開源,錢不需要花這(zhè)麽多(duō)了(le),但是維護這(zhè)個(gè)數據庫,卻需要專門招一個(gè)很大(dà)的(de)團隊,如果這(zhè)個(gè)數據庫能夠優化(huà)到能夠支撐雙十一,也(yě)不是一年兩年能夠搞定的(de)。比如您是一個(gè)做(zuò)單車的(de),當然沒必要招一個(gè)非常大(dà)的(de)數據庫團隊來(lái)幹這(zhè)件事情,成本太高(gāo)了(le),應該交給雲平台來(lái)做(zuò)這(zhè)件事情,專業的(de)事情專業的(de)人(rén)來(lái)自,雲平台專門養了(le)幾百人(rén)維護這(zhè)套系統,您隻要專注于您的(de)單車應用(yòng)就可(kě)以了(le)。

要麽是自動部署,要麽是不用(yòng)部署,總的(de)來(lái)說就是應用(yòng)層你也(yě)要少操心,這(zhè)就是PaaS層的(de)重要作用(yòng)。

雖說腳本的(de)方式能夠解決自己的(de)應用(yòng)的(de)部署問題,然而不同的(de)環境千差萬别,一個(gè)腳本往往在一個(gè)環境上運行正确,到另一個(gè)環境就不正确了(le)。

而容器是能更好的(de)解決這(zhè)個(gè)問題的(de)。

容器是 Container,Container另一個(gè)意思是集裝箱,其實容器的(de)思想就是要變成軟件交付的(de)集裝箱。集裝箱的(de)特點,一是封裝,二是标準。

在沒有集裝箱的(de)時(shí)代,假設将貨物(wù)從 A運到 B,中間要經過三個(gè)碼頭、換三次船。每次都要将貨物(wù)卸下(xià)船來(lái),擺的(de)七零八落,然後搬上船重新整齊擺好。因此在沒有集裝箱的(de)時(shí)候,每次換船,船員(yuán)們都要在岸上待幾天才能走。

有了(le)集裝箱以後,所有的(de)貨物(wù)都打包在一起了(le),并且集裝箱的(de)尺寸全部一緻,所以每次換船的(de)時(shí)候,一個(gè)箱子整體搬過去就行了(le),小時(shí)級别就能完成,船員(yuán)再也(yě)不用(yòng)上岸長(cháng)時(shí)間耽擱了(le)。

這(zhè)是集裝箱“封裝”、“标準”兩大(dà)特點在生活中的(de)應用(yòng)。

那麽容器如何對(duì)應用(yòng)打包呢(ne)?還(hái)是要學習(xí)集裝箱,首先要有個(gè)封閉的(de)環境,将貨物(wù)封裝起來(lái),讓貨物(wù)之間互不幹擾,互相隔離,這(zhè)樣裝貨卸貨才方便。好在 Ubuntu中的(de)LXC技術早就能做(zuò)到這(zhè)一點。

封閉的(de)環境主要使用(yòng)了(le)兩種技術,一種是看起來(lái)是隔離的(de)技術,稱爲 Namespace,也(yě)即每個(gè) Namespace中的(de)應用(yòng)看到的(de)是不同的(de) IP地址、用(yòng)戶空間、程号等。另一種是用(yòng)起來(lái)是隔離的(de)技術,稱爲 Cgroups,也(yě)即明(míng)明(míng)整台機器有很多(duō)的(de) CPU、内存,而一個(gè)應用(yòng)隻能用(yòng)其中的(de)一部分(fēn)。

所謂的(de)鏡像,就是将你焊好集裝箱的(de)那一刻,将集裝箱的(de)狀态保存下(xià)來(lái),就像孫悟空說:“定”,集裝箱裏面就定在了(le)那一刻,然後将這(zhè)一刻的(de)狀态保存成一系列文件。這(zhè)些文件的(de)格式是标準的(de),誰看到這(zhè)些文件都能還(hái)原當時(shí)定住的(de)那個(gè)時(shí)刻。将鏡像還(hái)原成運行時(shí)的(de)過程(就是讀取鏡像文件,還(hái)原那個(gè)時(shí)刻的(de)過程)就是容器運行的(de)過程。

有了(le)容器,使得(de) PaaS層對(duì)于用(yòng)戶自身應用(yòng)的(de)自動部署變得(de)快(kuài)速而優雅。

三、大(dà)數據擁抱雲計算(suàn)

在PaaS層中一個(gè)複雜(zá)的(de)通(tōng)用(yòng)應用(yòng)就是大(dà)數據平台。大(dà)數據是如何一步一步融入雲計算(suàn)的(de)呢(ne)?

3.1 數據不大(dà)也(yě)包含智慧

一開始這(zhè)個(gè)大(dà)數據并不大(dà),你想象原來(lái)才有多(duō)少數據?現在大(dà)家都去看電子書(shū),上網看新聞了(le),在我們80後小時(shí)候,信息量沒有那麽大(dà),也(yě)就看看書(shū),看看報,一個(gè)星期的(de)報紙加起來(lái)才有多(duō)少字啊,如果你不在一個(gè)大(dà)城(chéng)市,一個(gè)普通(tōng)的(de)學校的(de)圖書(shū)館加起來(lái)也(yě)沒幾個(gè)書(shū)架,是後來(lái)随著(zhe)信息化(huà)的(de)到來(lái),信息才會越來(lái)越多(duō)。

首先我們來(lái)看一下(xià)大(dà)數據裏面的(de)數據,就分(fēn)三種類型,一種叫結構化(huà)的(de)數據,一種叫非結構化(huà)的(de)數據,還(hái)有一種叫半結構化(huà)的(de)數據。什(shén)麽叫結構化(huà)的(de)數據呢(ne)?叫有固定格式和(hé)有限長(cháng)度的(de)數據。例如填的(de)表格就是結構化(huà)的(de)數據,國籍:中華人(rén)民共和(hé)國,民族:漢,性别:男(nán),這(zhè)都叫結構化(huà)數據。現在越來(lái)越多(duō)的(de)就是非結構化(huà)的(de)數據,就是不定長(cháng),無固定格式的(de)數據,例如網頁,有時(shí)候非常長(cháng),有時(shí)候幾句話(huà)就沒了(le),例如語音(yīn),視頻(pín)都是非結構化(huà)的(de)數據。半結構化(huà)數據是一些xml或者html的(de)格式的(de),不從事技術的(de)可(kě)能不了(le)解,但也(yě)沒有關系。

數據怎麽樣才能對(duì)人(rén)有用(yòng)呢(ne)?其實數據本身不是有用(yòng)的(de),必須要經過一定的(de)處理(lǐ)。例如你每天跑步帶個(gè)手環收集的(de)也(yě)是數據,網上這(zhè)麽多(duō)網頁也(yě)是數據,我們稱爲Data,數據本身沒有什(shén)麽用(yòng)處,但是數據裏面包含一個(gè)很重要的(de)東西,叫做(zuò)信息Information,數據十分(fēn)雜(zá)亂,經過梳理(lǐ)和(hé)清洗,才能夠稱爲信息。信息會包含很多(duō)規律,我們需要從信息中将規律總結出來(lái),稱爲知識knowledge,知識改變命運。信息是很多(duō)的(de),但是有人(rén)看到了(le)信息相當于白看,但是有人(rén)就從信息中看到了(le)電商的(de)未來(lái),有人(rén)看到了(le)直播的(de)未來(lái),所以人(rén)家就牛了(le),你如果沒有從信息中提取出知識,天天看朋友圈,也(yě)隻能在互聯網滾滾大(dà)潮中做(zuò)個(gè)看客。有了(le)知識,然後利用(yòng)這(zhè)些知識去應用(yòng)于實戰,有的(de)人(rén)會做(zuò)得(de)非常好,這(zhè)個(gè)東西叫做(zuò)智慧intelligence。有知識并不一定有智慧,例如好多(duō)學者很有知識,已經發生的(de)事情可(kě)以從各個(gè)角度分(fēn)析的(de)頭頭是道,但一到實幹就歇菜,并不能轉化(huà)成爲智慧。而很多(duō)的(de)創業家之所以偉大(dà),就是通(tōng)過獲得(de)的(de)知識應用(yòng)于實踐,最後做(zuò)了(le)很大(dà)的(de)生意。

所以數據的(de)應用(yòng)分(fēn)這(zhè)四個(gè)步驟:數據,信息,知識,智慧。這(zhè)是很多(duō)商家都想要的(de),你看我收集了(le)這(zhè)麽多(duō)的(de)數據,能不能基于這(zhè)些數據來(lái)幫我做(zuò)下(xià)一步的(de)決策,改善我的(de)産品,例如讓用(yòng)戶看視頻(pín)的(de)時(shí)候旁邊彈出廣告,正好是他(tā)想買的(de)東西,再如讓用(yòng)戶聽(tīng)音(yīn)樂(yuè)的(de)時(shí)候,另外推薦一些他(tā)非常想聽(tīng)的(de)其他(tā)音(yīn)樂(yuè)。用(yòng)戶在我的(de)應用(yòng)或者網站上随便點點鼠标,輸入文字對(duì)我來(lái)說都是數據,我就是要将其中某些東西提取出來(lái),指導實踐,形成智慧,讓用(yòng)戶陷入到我的(de)應用(yòng)裏面不可(kě)自拔,上了(le)我的(de)網就不想離開,手不停的(de)點,不停的(de)買,很多(duō)人(rén)說雙十一我都想斷網了(le),我老婆在上面不斷的(de)買買買,買了(le)A又推薦B,老婆大(dà)人(rén)說,“哎呀,B也(yě)是我喜歡的(de)啊,老公我要買”。你說這(zhè)個(gè)程序怎麽這(zhè)麽牛,這(zhè)麽有智慧,比我還(hái)了(le)解我老婆,這(zhè)件事情是怎麽做(zuò)到的(de)呢(ne)?

3.2 數據如何升華爲智慧

數據的(de)處理(lǐ)分(fēn)幾個(gè)步驟,完成了(le)才最後會有智慧。

第一個(gè)步驟叫數據的(de)收集。首先得(de)有數據,數據的(de)收集有兩個(gè)方式,第一個(gè)方式是拿,專業點的(de)說法叫抓取或者爬取,例如搜索引擎就是這(zhè)麽做(zuò)的(de),它把網上的(de)所有的(de)信息都下(xià)載到它的(de)數據中心,然後你一搜才能搜出來(lái)。比如你去搜索的(de)時(shí)候,結果會是一個(gè)列表,這(zhè)個(gè)列表爲什(shén)麽會在搜索引擎的(de)公司裏面呢(ne),就是因爲他(tā)把這(zhè)個(gè)數據啊都拿下(xià)來(lái)了(le),但是你一點鏈接,點出來(lái)這(zhè)個(gè)網站就不在搜索引擎它們公司了(le)。比如說新浪有個(gè)新聞,你拿百度搜出來(lái),你不點的(de)時(shí)候,那一頁在百度數據中心,一點出來(lái)的(de)網頁就是在新浪的(de)數據中心了(le)。另外一個(gè)方式就是推送,有很多(duō)終端可(kě)以幫我收集數據,比如說小米手環,可(kě)以将你每天跑步的(de)數據,心跳的(de)數據,睡(shuì)眠的(de)數據都上傳到數據中心裏面。

第二個(gè)步驟是數據的(de)傳輸。一般會通(tōng)過隊列方式進行,因爲數據量實在是太大(dà)了(le),數據必須經過處理(lǐ)才會有用(yòng),可(kě)是系統處理(lǐ)不過來(lái),隻好排好隊,慢(màn)慢(màn)的(de)處理(lǐ)。

第三個(gè)步驟是數據的(de)存儲。現在數據就是金錢,掌握了(le)數據就相當于掌握了(le)錢。要不然網站怎麽知道你想買什(shén)麽呢(ne)?就是因爲它有你曆史的(de)交易的(de)數據,這(zhè)個(gè)信息可(kě)不能給别人(rén),十分(fēn)寶貴,所以需要存儲下(xià)來(lái)。

第四個(gè)步驟是數據的(de)處理(lǐ)和(hé)分(fēn)析。上面存儲的(de)數據是原始數據,原始數據多(duō)是雜(zá)亂無章(zhāng)的(de),有很多(duō)垃圾數據在裏面,因而需要清洗和(hé)過濾,得(de)到一些高(gāo)質量的(de)數據。對(duì)于高(gāo)質量的(de)數據,就可(kě)以進行分(fēn)析,從而對(duì)數據進行分(fēn)類,或者發現數據之間的(de)相互關系,得(de)到知識。比如盛傳的(de)沃爾瑪超市的(de)啤酒和(hé)尿布的(de)故事,就是通(tōng)過對(duì)人(rén)們的(de)購(gòu)買數據進行分(fēn)析,發現了(le)男(nán)人(rén)一般買尿布的(de)時(shí)候,會同時(shí)購(gòu)買啤酒,這(zhè)樣就發現了(le)啤酒和(hé)尿布之間的(de)相互關系,獲得(de)知識,然後應用(yòng)到實踐中,将啤酒和(hé)尿布的(de)櫃台弄的(de)很近,就獲得(de)了(le)智慧。

第五個(gè)步驟就是對(duì)于數據的(de)檢索和(hé)挖掘。檢索就是搜索,所謂外事不決問google,内事不決問百度。内外兩大(dà)搜索引擎都是講分(fēn)析後的(de)數據放入搜索引擎,從而人(rén)們想尋找信息的(de)時(shí)候,一搜就有了(le)。另外就是挖掘,僅僅搜索出來(lái)已經不能滿足人(rén)們的(de)要求了(le),還(hái)需要從信息中挖掘出相互的(de)關系。比如财經搜索,當搜索某個(gè)公司股票(piào)的(de)時(shí)候,該公司的(de)高(gāo)管是不是也(yě)應該被挖掘出來(lái)呢(ne)?如果僅僅搜索出這(zhè)個(gè)公司的(de)股票(piào)發現漲的(de)特别好,于是你就去買了(le),其實其高(gāo)管發了(le)一個(gè)聲明(míng),對(duì)股票(piào)十分(fēn)不利,第二天就跌了(le),這(zhè)不坑害廣大(dà)股民麽?所以通(tōng)過各種算(suàn)法挖掘數據中的(de)關系,形成知識庫,十分(fēn)重要。

3.3 大(dà)數據時(shí)代,衆人(rén)拾柴火焰高(gāo)

當數據量很小的(de)時(shí)候,很少的(de)幾台機器就能解決。慢(màn)慢(màn)的(de)當數據量越來(lái)越大(dà),最牛的(de)服務器都解決不了(le)問題的(de)時(shí)候,就想怎麽辦呢(ne)?要聚合多(duō)台機器的(de)力量,大(dà)家齊心協力一起把這(zhè)個(gè)事搞定,衆人(rén)拾柴火焰高(gāo)。

對(duì)于數據的(de)收集,對(duì)于IoT來(lái)講,外面部署這(zhè)成千上萬的(de)檢測設備,将大(dà)量的(de)溫度,适度,監控,電力等等數據統統收集上來(lái),對(duì)于互聯網網頁的(de)搜索引擎來(lái)講,需要将整個(gè)互聯網所有的(de)網頁都下(xià)載下(xià)來(lái),這(zhè)顯然一台機器做(zuò)不到,需要多(duō)台機器組成網絡爬蟲系統,每台機器下(xià)載一部分(fēn),同時(shí)工作,才能在有限的(de)時(shí)間内,将海量的(de)網頁下(xià)載完畢。

對(duì)于數據的(de)傳輸,一個(gè)内存裏面的(de)隊列肯定會被大(dà)量的(de)數據擠爆掉,于是就産生了(le)基于硬盤的(de)分(fēn)布式隊列,這(zhè)樣隊列可(kě)以多(duō)台機器同時(shí)傳輸,随你數據量多(duō)大(dà),隻要我的(de)隊列足夠多(duō),管道足夠粗,就能夠撐得(de)住。

對(duì)于數據的(de)存儲,一台機器的(de)文件系統肯定是放不下(xià)了(le),所以需要一個(gè)很大(dà)的(de)分(fēn)布式文件系統來(lái)做(zuò)這(zhè)件事情,把多(duō)台機器的(de)硬盤打成一塊大(dà)的(de)文件系統。

再如數據的(de)分(fēn)析,可(kě)能需要對(duì)大(dà)量的(de)數據做(zuò)分(fēn)解,統計,彙總,一台機器肯定搞不定,處理(lǐ)到猴年馬月(yuè)也(yě)分(fēn)析不完,于是就有分(fēn)布式計算(suàn)的(de)方法,将大(dà)量的(de)數據分(fēn)成小份,每台機器處理(lǐ)一小份,多(duō)台機器并行處理(lǐ),很快(kuài)就能算(suàn)完。例如著名的(de)Terasort對(duì)1個(gè)TB的(de)數據排序,相當于1024G,如果單機處理(lǐ),怎麽也(yě)要幾個(gè)小時(shí),但是并行處理(lǐ)209秒就完成了(le)。

所以說大(dà)數據平台,什(shén)麽叫做(zuò)大(dà)數據,說白了(le)就是一台機器幹不完,大(dà)家一起幹。随著(zhe)數據量越來(lái)越大(dà),很多(duō)不大(dà)的(de)公司都需要處理(lǐ)相當多(duō)的(de)數據,這(zhè)些小公司沒有這(zhè)麽多(duō)機器可(kě)怎麽辦呢(ne)?

3.4 大(dà)數據需要雲計算(suàn),雲計算(suàn)需要大(dà)數據

說到這(zhè)裏,大(dà)家想起雲計算(suàn)了(le)吧。當想要幹這(zhè)些活的(de)時(shí)候,需要好多(duō)好多(duō)的(de)機器一塊做(zuò),真的(de)是想什(shén)麽時(shí)候要,想要多(duō)少就要多(duō)少。例如大(dà)數據分(fēn)析公司的(de)财務情況,可(kě)能一周分(fēn)析一次,如果要把這(zhè)一百台機器或者一千台機器都在那放著(zhe),一周用(yòng)一次對(duì)吧,非常浪費。那能不能需要計算(suàn)的(de)時(shí)候,把這(zhè)一千台機器拿出來(lái),然後不算(suàn)的(de)時(shí)候,這(zhè)一千台機器可(kě)以去幹别的(de)事情。誰能做(zuò)這(zhè)個(gè)事兒(ér)呢(ne)?隻有雲計算(suàn),可(kě)以爲大(dà)數據的(de)運算(suàn)提供資源層的(de)靈活性。而雲計算(suàn)也(yě)會部署大(dà)數據放到它的(de)PaaS平台上,作爲一個(gè)非常非常重要的(de)通(tōng)用(yòng)應用(yòng)。因爲大(dà)數據平台能夠使得(de)多(duō)台機器一起幹一個(gè)事兒(ér),這(zhè)個(gè)東西不是一般人(rén)能開發出來(lái)的(de),也(yě)不是一般人(rén)玩得(de)轉的(de),怎麽也(yě)得(de)雇個(gè)幾十上百号人(rén)才能把這(zhè)個(gè)玩起來(lái),所以說就像數據庫一樣,其實還(hái)是需要有一幫專業的(de)人(rén)來(lái)玩這(zhè)個(gè)東西。現在公有雲上基本上都會有大(dà)數據的(de)解決方案了(le),一個(gè)小公司我需要大(dà)數據平台的(de)時(shí)候,不需要采購(gòu)一千台機器,隻要到公有雲上一點,這(zhè)一千台機器都出來(lái)了(le),并且上面已經部署好了(le)的(de)大(dà)數據平台,隻要把數據放進去算(suàn)就可(kě)以了(le)。

雲計算(suàn)需要大(dà)數據,大(dà)數據需要雲計算(suàn),兩個(gè)人(rén)就這(zhè)樣結合了(le)。

四、人(rén)工智能擁抱大(dà)數據

4.1 機器什(shén)麽時(shí)候才能懂(dǒng)人(rén)心

雖說有了(le)大(dà)數據,人(rén)的(de)欲望總是這(zhè)個(gè)不能夠滿足。雖說在大(dà)數據平台裏面有搜索引擎這(zhè)個(gè)東西,想要什(shén)麽東西我一搜就出來(lái)了(le)。但是也(yě)存在這(zhè)樣的(de)情況,我想要的(de)東西不會搜,表達不出來(lái),搜索出來(lái)的(de)又不是我想要的(de)。例如音(yīn)樂(yuè)軟件裏面推薦一首歌(gē),這(zhè)首歌(gē)我沒聽(tīng)過,當然不知道名字,也(yě)沒法搜,但是軟件推薦給我,我的(de)确喜歡,這(zhè)就是搜索做(zuò)不到的(de)事情。當人(rén)們使用(yòng)這(zhè)種應用(yòng)的(de)時(shí)候,會發現機器知道我想要什(shén)麽,而不是說當我想要的(de)時(shí)候,去機器裏面搜索。這(zhè)個(gè)機器真像我的(de)朋友一樣懂(dǒng)我,這(zhè)就有點人(rén)工智能的(de)意思了(le)。

人(rén)們很早就在想這(zhè)個(gè)事情了(le)。最早的(de)時(shí)候,人(rén)們想象,如果要是有一堵牆,牆後面是個(gè)機器,我給它說話(huà),它就給我回應,我如果感覺不出它那邊是人(rén)還(hái)是機器,那它就真的(de)是一個(gè)人(rén)工智能的(de)東西了(le)。

4.2 讓機器學會推理(lǐ)

怎麽才能做(zuò)到這(zhè)一點呢(ne)?人(rén)們就想:我首先要告訴計算(suàn)機人(rén)類的(de)推理(lǐ)的(de)能力。你看人(rén)重要的(de)是什(shén)麽呀,人(rén)和(hé)動物(wù)的(de)區(qū)别在什(shén)麽呀,就是能推理(lǐ)。我要是把我這(zhè)個(gè)推理(lǐ)的(de)能力啊告訴機器,機器就能根據你的(de)提問,推理(lǐ)出相應的(de)回答(dá),真能這(zhè)樣多(duō)好。推理(lǐ)其實人(rén)們慢(màn)慢(màn)的(de)讓機器能夠做(zuò)到一些了(le),例如證明(míng)數學公式。這(zhè)是一個(gè)非常讓人(rén)驚喜的(de)一個(gè)過程,機器竟然能夠證明(míng)數學公式。但是慢(màn)慢(màn)發現其實這(zhè)個(gè)結果,也(yě)沒有那麽令人(rén)驚喜,因爲大(dà)家發現了(le)一個(gè)問題,數學公式非常嚴謹,推理(lǐ)過程也(yě)非常嚴謹,而且數學公式很容易拿機器來(lái)進行表達,程序也(yě)相對(duì)容易表達。然而人(rén)類的(de)語言就沒這(zhè)麽簡單了(le),比如今天晚上,你和(hé)你女(nǚ)朋友約會,你女(nǚ)朋友說:如果你早來(lái),我沒來(lái),你等著(zhe),如果我早來(lái),你沒來(lái),你等著(zhe)。這(zhè)個(gè)機器就比比較難理(lǐ)解了(le),但是人(rén)都懂(dǒng),所以你和(hé)女(nǚ)朋友約會,你是不敢遲到的(de)。

4.3 教給機器知識

所以僅僅告訴機器嚴格的(de)推理(lǐ)是不夠的(de),還(hái)要告訴機器一些知識。但是知識這(zhè)個(gè)事兒(ér),一般人(rén)可(kě)能就做(zuò)不來(lái)了(le),可(kě)能專家可(kě)以,比如語言領域的(de)專家,或者财經領域的(de)專家。語言領域和(hé)财經領域知識能不能表示成像數學公式一樣稍微嚴格點呢(ne)?例如語言專家可(kě)能會總結出主謂賓定狀補這(zhè)些語法規則,主語後面一定是謂語,謂語後面一定是賓語,将這(zhè)些總結出來(lái),并嚴格表達出來(lái)不久行了(le)嗎?後來(lái)發現這(zhè)個(gè)不行,太難總結了(le),語言表達千變萬化(huà)。就拿主謂賓的(de)例子,很多(duō)時(shí)候在口語裏面就省略了(le)謂語,别人(rén)問:你誰啊?我回答(dá):我劉超。但是你不能規定在語音(yīn)語義識别的(de)時(shí)候,要求對(duì)著(zhe)機器說标準的(de)書(shū)面語,這(zhè)樣還(hái)是不夠智能,就像羅永浩在一次演講中說的(de)那樣,每次對(duì)著(zhe)手機,用(yòng)書(shū)面語說:請幫我呼叫某某某,這(zhè)是一件很尴尬的(de)事情。

人(rén)工智能這(zhè)個(gè)階段叫做(zuò)專家系統。專家系統不易成功,一方面是知識比較難總結,另一方面總結出來(lái)的(de)知識難以教給計算(suàn)機。因爲你自己還(hái)迷迷糊糊,似乎覺得(de)有規律,就是說不出來(lái),就怎麽能夠通(tōng)過編程教給計算(suàn)機呢(ne)?

4.4 算(suàn)了(le),教不會你自己學吧

于是人(rén)們想到,看來(lái)機器是和(hé)人(rén)完全不一樣的(de)物(wù)種,幹脆讓機器自己學習(xí)好了(le)。機器怎麽學習(xí)呢(ne)?既然機器的(de)統計能力這(zhè)麽強,基于統計學習(xí),一定能從大(dà)量的(de)數字中發現一定的(de)規律。

其實在娛樂(yuè)圈有很好的(de)一個(gè)例子,可(kě)見一斑

有一位網友統計了(le)知名歌(gē)手在大(dà)陸發行的(de) 9 張專輯中 117 首歌(gē)曲的(de)歌(gē)詞,同一詞語在一首歌(gē)出現隻算(suàn)一次,形容詞、名詞和(hé)動詞的(de)前十名如下(xià)表所示(詞語後面的(de)數字是出現的(de)次數):


a形容詞b名詞c動詞
0孤獨:340生命:500愛(ài):54
1自由:171路:371碎:37
2迷惘:162夜:292哭:35
3堅強:133天空:243死:27
4絕望:84孩子:234飛(fēi):26
5青春:75雨(yǔ):215夢想:14
6迷茫:66石頭:96祈禱:10
7光(guāng)明(míng):67鳥:97離去:10


如果我們随便寫一串數字,然後按照(zhào)數位依次在形容詞、名詞和(hé)動詞中取出一個(gè)詞,連在一起會怎麽樣呢(ne)?

例如取圓周率 3.1415926,對(duì)應的(de)詞語是:堅強,路,飛(fēi),自由,雨(yǔ),埋,迷惘。稍微連接和(hé)潤色一下(xià):

堅強的(de)孩子,

依然前行在路上,

張開翅膀飛(fēi)向自由,

讓雨(yǔ)水(shuǐ)埋葬他(tā)的(de)迷惘。

是不是有點感覺了(le)?當然真正基于統計的(de)學習(xí)算(suàn)法比這(zhè)個(gè)簡單的(de)統計複雜(zá)的(de)多(duō)。

然而統計學習(xí)比較容易理(lǐ)解簡單的(de)相關性,例如一個(gè)詞和(hé)另一個(gè)詞總是一起出現,兩個(gè)詞應該有關系,而無法表達複雜(zá)的(de)相關性,并且統計方法的(de)公式往往非常複雜(zá),爲了(le)簡化(huà)計算(suàn),常常做(zuò)出各種獨立性的(de)假設,來(lái)降低公式的(de)計算(suàn)難度,然而現實生活中,具有獨立性的(de)事件是相對(duì)較少的(de)。

4.5 模拟大(dà)腦(nǎo)的(de)工作方式

于是人(rén)類開始從機器的(de)世界,反思人(rén)類的(de)世界是怎麽工作的(de)。

人(rén)類的(de)腦(nǎo)子裏面不是存儲著(zhe)大(dà)量的(de)規則,也(yě)不是記錄著(zhe)大(dà)量的(de)統計數據,而是通(tōng)過神經元的(de)觸發實現的(de),每個(gè)神經元有從其他(tā)神經元的(de)輸入,當接收到輸入的(de)時(shí)候,會産生一個(gè)輸出來(lái)刺激其他(tā)的(de)神經元,于是大(dà)量的(de)神經元相互反應,最終形成各種輸出的(de)結果。例如當人(rén)們看到美(měi)女(nǚ)瞳孔放大(dà),絕不是大(dà)腦(nǎo)根據身材比例進行規則判斷,也(yě)不是将人(rén)生中看過的(de)所有的(de)美(měi)女(nǚ)都統計一遍,而是神經元從視網膜觸發到大(dà)腦(nǎo)再回到瞳孔。在這(zhè)個(gè)過程中,其實很難總結出每個(gè)神經元對(duì)最終的(de)結果起到了(le)哪些作用(yòng),反正就是起作用(yòng)了(le)。

于是人(rén)們開始用(yòng)一個(gè)數學單元模拟神經元

這(zhè)個(gè)神經元有輸入,有輸出,輸入和(hé)輸出之間通(tōng)過一個(gè)公式來(lái)表示,輸入根據重要程度不同(權重),影(yǐng)響著(zhe)輸出。

于是将n個(gè)神經元通(tōng)過像一張神經網絡一樣連接在一起,n這(zhè)個(gè)數字可(kě)以很大(dà)很大(dà),所有的(de)神經元可(kě)以分(fēn)成很多(duō)列,每一列很多(duō)個(gè)排列起來(lái),每個(gè)神經元的(de)對(duì)于輸入的(de)權重可(kě)以都不相同,從而每個(gè)神經元的(de)公式也(yě)不相同。當人(rén)們從這(zhè)張網絡中輸入一個(gè)東西的(de)時(shí)候,希望輸出一個(gè)對(duì)人(rén)類來(lái)講正确的(de)結果。例如上面的(de)例子,輸入一個(gè)寫著(zhe)2的(de)圖片,輸出的(de)列表裏面第二個(gè)數字最大(dà),其實從機器來(lái)講,它既不知道輸入的(de)這(zhè)個(gè)圖片寫的(de)是2,也(yě)不知道輸出的(de)這(zhè)一系列數字的(de)意義,沒關系,人(rén)知道意義就可(kě)以了(le)。正如對(duì)于神經元來(lái)說,他(tā)們既不知道視網膜看到的(de)是美(měi)女(nǚ),也(yě)不知道瞳孔放大(dà)是爲了(le)看的(de)清楚,反正看到美(měi)女(nǚ),瞳孔放大(dà)了(le),就可(kě)以了(le)。

對(duì)于任何一張神經網絡,誰也(yě)不敢保證輸入是2,輸出一定是第二個(gè)數字最大(dà),要保證這(zhè)個(gè)結果,需要訓練和(hé)學習(xí)。畢竟看到美(měi)女(nǚ)而瞳孔放大(dà)也(yě)是人(rén)類很多(duō)年進化(huà)的(de)結果。學習(xí)的(de)過程就是,輸入大(dà)量的(de)圖片,如果結果不是想要的(de)結果,則進行調整。如何調整呢(ne),就是每個(gè)神經元的(de)每個(gè)權重都向目标進行微調,由于神經元和(hé)權重實在是太多(duō)了(le),所以整張網絡産生的(de)結果很難表現出非此即彼的(de)結果,而是向著(zhe)結果微微的(de)進步,最終能夠達到目标結果。當然這(zhè)些調整的(de)策略還(hái)是非常有技巧的(de),需要算(suàn)法的(de)高(gāo)手來(lái)仔細的(de)調整。正如人(rén)類見到美(měi)女(nǚ),瞳孔一開始沒有放大(dà)到能看清楚,于是美(měi)女(nǚ)跟别人(rén)跑了(le),下(xià)次學習(xí)的(de)結果是瞳孔放大(dà)一點點,而不是放大(dà)鼻孔。

4.6 沒道理(lǐ)但做(zuò)得(de)到

聽(tīng)起來(lái)也(yě)沒有那麽有道理(lǐ),但是的(de)确能做(zuò)到,就是這(zhè)麽任性。

神經網絡的(de)普遍性定理(lǐ)是這(zhè)樣說的(de),假設某個(gè)人(rén)給你某種複雜(zá)奇特的(de)函數,f(x):

不管這(zhè)個(gè)函數是什(shén)麽樣的(de),總會确保有個(gè)神經網絡能夠對(duì)任何可(kě)能的(de)輸入x,其值f(x)(或者某個(gè)能夠準确的(de)近似)是神經網絡的(de)輸出。

如果在函數代表著(zhe)規律,也(yě)意味著(zhe)這(zhè)個(gè)規律無論多(duō)麽奇妙,多(duō)麽不能理(lǐ)解,都是能通(tōng)過大(dà)量的(de)神經元,通(tōng)過大(dà)量權重的(de)調整,表示出來(lái)的(de)。

4.7 人(rén)工智能的(de)經濟學解釋

這(zhè)讓我想到了(le)經濟學,于是比較容易理(lǐ)解了(le)。

我們把每個(gè)神經元當成社會中從事經濟活動的(de)個(gè)體。于是神經網絡相當于整個(gè)經濟社會,每個(gè)神經元對(duì)于社會的(de)輸入,都有權重的(de)調整,做(zuò)出相應的(de)輸出,比如工資漲了(le),菜價也(yě)漲了(le),股票(piào)跌了(le),我應該怎麽辦,怎麽花自己的(de)錢。這(zhè)裏面沒有規律麽?肯定有,但是具體什(shén)麽規律呢(ne)?卻很難說清楚。

基于專家系統的(de)經濟屬于計劃經濟,整個(gè)經濟規律的(de)表示不希望通(tōng)過每個(gè)經濟個(gè)體的(de)獨立決策表現出來(lái),而是希望通(tōng)過專家的(de)高(gāo)屋建瓴和(hé)遠(yuǎn)見卓識總結出來(lái)。專家永遠(yuǎn)不可(kě)能知道哪個(gè)城(chéng)市的(de)哪個(gè)街(jiē)道缺少一個(gè)賣甜豆腐腦(nǎo)的(de)。于是專家說應該産多(duō)少鋼鐵,産多(duō)少饅頭,往往距離人(rén)民生活的(de)真正需求有較大(dà)的(de)差距,就算(suàn)整個(gè)計劃書(shū)寫個(gè)幾百頁,也(yě)無法表達隐藏在人(rén)民生活中的(de)小規律。

基于統計的(de)宏觀調控就靠譜的(de)多(duō)了(le),每年統計局都會統計整個(gè)社會的(de)就業率,通(tōng)脹率,GDP等等指标,這(zhè)些指标往往代表著(zhe)很多(duō)的(de)内在規律,雖然不能夠精确表達,但是相對(duì)靠譜。然而基于統計的(de)規律總結表達相對(duì)比較粗糙,比如經濟學家看到這(zhè)些統計數據可(kě)以總結出長(cháng)期來(lái)看房(fáng)價是漲還(hái)是跌,股票(piào)長(cháng)期來(lái)看是漲還(hái)是跌,如果經濟總體上揚,房(fáng)價和(hé)股票(piào)應該都是漲的(de)。但是基于統計數據,無法總結出股票(piào),物(wù)價的(de)微小波動規律。

基于神經網絡的(de)微觀經濟學才是對(duì)整個(gè)經濟規律最最準确的(de)表達,每個(gè)人(rén)對(duì)于從社會中的(de)輸入,進行各自的(de)調整,并且調整同樣會作爲輸入反饋到社會中。想象一下(xià)股市行情細微的(de)波動曲線,正是每個(gè)獨立的(de)個(gè)體各自不斷交易的(de)結果,沒有統一的(de)規律可(kě)循。而每個(gè)人(rén)根據整個(gè)社會的(de)輸入進行獨立決策,當某些因素經過多(duō)次訓練,也(yě)會形成宏觀上的(de)統計性的(de)規律,這(zhè)也(yě)就是宏觀經濟學所能看到的(de)。例如每次貨币大(dà)量發行,最後房(fáng)價都會上漲,多(duō)次訓練後,人(rén)們也(yě)就都學會了(le)。

4.8 人(rén)工智能需要大(dà)數據

然而神經網絡包含這(zhè)麽多(duō)的(de)節點,每個(gè)節點包含非常多(duō)的(de)參數,整個(gè)參數量實在是太大(dà)了(le),需要的(de)計算(suàn)量實在太大(dà),但是沒有關系啊,我們有大(dà)數據平台,可(kě)以彙聚多(duō)台機器的(de)力量一起來(lái)計算(suàn),才能在有限的(de)時(shí)間内得(de)到想要的(de)結果。

人(rén)工智能可(kě)以做(zuò)的(de)事情非常多(duō),例如可(kě)以鑒别垃圾郵件,鑒别黃(huáng)色暴力文字和(hé)圖片等。這(zhè)也(yě)是經曆了(le)三個(gè)階段的(de)。第一個(gè)階段依賴于關鍵詞黑(hēi)白名單和(hé)過濾技術,包含哪些詞就是黃(huáng)色或者暴力的(de)文字。随著(zhe)這(zhè)個(gè)網絡語言越來(lái)越多(duō),詞也(yě)不斷的(de)變化(huà),不斷的(de)更新這(zhè)個(gè)詞庫就有點顧不過來(lái)。第二個(gè)階段時(shí),基于一些新的(de)算(suàn)法,比如說貝葉斯過濾等,你不用(yòng)管貝葉斯算(suàn)法是什(shén)麽,但是這(zhè)個(gè)名字你應該聽(tīng)過,這(zhè)個(gè)一個(gè)基于概率的(de)算(suàn)法。第三個(gè)階段就是基于大(dà)數據和(hé)人(rén)工智能,進行更加精準的(de)用(yòng)戶畫(huà)像和(hé)文本理(lǐ)解和(hé)圖像理(lǐ)解。

由于人(rén)工智能算(suàn)法多(duō)是依賴于大(dà)量的(de)數據的(de),這(zhè)些數據往往需要面向某個(gè)特定的(de)領域(例如電商,郵箱)進行長(cháng)期的(de)積累,如果沒有數據,就算(suàn)有人(rén)工智能算(suàn)法也(yě)白搭,所以人(rén)工智能程序很少像前面的(de)IaaS和(hé)PaaS一樣,将人(rén)工智能程序給某個(gè)客戶安裝一套讓客戶去用(yòng),因爲給某個(gè)客戶單獨安裝一套,客戶沒有相關的(de)數據做(zuò)訓練,結果往往是很差的(de)。但是雲計算(suàn)廠商往往是積累了(le)大(dà)量數據的(de),于是就在雲計算(suàn)廠商裏面安裝一套,暴露一個(gè)服務接口,比如您想鑒别一個(gè)文本是不是涉及黃(huáng)色和(hé)暴力,直接用(yòng)這(zhè)個(gè)在線服務就可(kě)以了(le)。這(zhè)種形勢的(de)服務,在雲計算(suàn)裏面稱爲軟件即服務,SaaS (Software AS A Service)

于是工智能程序作爲SaaS平台進入了(le)雲計算(suàn)。

五、雲計算(suàn),大(dà)數據,人(rén)工智能過上了(le)美(měi)好的(de)生活

終于雲計算(suàn)的(de)三兄弟(dì)湊齊了(le),分(fēn)别是IaaS,PaaS和(hé)SaaS,所以一般在一個(gè)雲計算(suàn)平台上,雲,大(dà)數據,人(rén)工智能都能找得(de)到。對(duì)一個(gè)大(dà)數據公司,積累了(le)大(dà)量的(de)數據,也(yě)會使用(yòng)一些人(rén)工智能的(de)算(suàn)法提供一些服務。對(duì)于一個(gè)人(rén)工智能公司,也(yě)不可(kě)能沒有大(dà)數據平台支撐。所以雲計算(suàn),大(dà)數據,人(rén)工智能就這(zhè)樣整合起來(lái),完成了(le)相遇,相識,相知。