雲計算,大數據,人工智能

我本身的方向並不是雲計算,但是我們這個行業,並不是搞什麼方向就只學習這個方向,即便不能切實的應用某項技術,玩玩也是一件很有意思的事情。在很多的公司,如果你做爲一個技術從業者,你的技術寬度很窄,大家會Diss你的,慢慢地,你會發現沒有人和你玩。接下來談談我對於雲計算的理解:

在瞭解雲計算技術之前,先要知道雲計算的目標:

雲計算在設計之初,主要是爲了對計算資源,網絡資源,存儲資源的管理

虛擬化:

我們先談談虛擬化技術:假如,我們花費100元在阿里雲購買一臺服務器,我們彷彿就獲得了一臺計算機,,我們想要使用遠程工具登錄到我們的計算機上進行相關的部署,而我們從阿里雲購買的這臺計算機,要知道只有100元,怎麼可能買得到計算機呢?還要知道阿里雲裏面的每一臺計算機在採購的時候都是非常昂貴的,但是我們就是花100元獲得了計算機的使用權。這是怎麼做到的呢?這裏用到了虛擬化技術:

基於虛擬化技術的虛擬化軟件可以創建一臺虛擬的電腦,這臺電腦提供電腦的所有的功能,但是你看不到其物體。這有點移動支付的味道,錢真實的到賬了,但是你就是沒有看到鈔票。

實際上啊。阿里雲將一臺臺大型的計算機,劃分成了一個又一個的小模塊,客戶的每一次購買,阿里雲都是將數據中心的物理設備(計算機)虛擬出來一小塊給客戶,虛擬化的技術能夠保證不同客戶的電腦看起來是隔離的,比如我的100G是我的,你的100G是你的,但是實際上,這200G的存儲在一塊很大很大的磁盤上。

實現虛擬化最早的公司是VMware,VMware是閉源的,還有兩個開源的虛擬化軟件,Xen,KVM。使用虛擬化軟件能夠虛擬出來計算機,雖然虛擬化軟件能夠解決將一個大型機(更多是大型機集羣)虛擬出多個計算機,供多人使用,但是虛擬化軟件能夠管理的集羣規模有限制,一般不能很大(最多百臺),而且一般的虛擬化軟件創建一臺虛擬機,需要人工指定這臺虛擬電腦放在哪裏。這裏使用過VMware軟件的應該知道,每一次新建虛擬機的時候,都必須要指定你的虛擬機放在哪個磁盤上。由於①人工,②管理的集羣有限兩個弊端,出現雲化技術。

 雲化:

如果每一次虛擬出電腦,都需要去指定該電腦要放置的位置並做相應的配置,幾乎是不可能的事情,我們需要將其機器化,自動化,人們發明了 各種各樣的算法,算法的名字叫做Scheduler(調度)

就是說在數據中心裏的物理機集羣中,設置一個調度中心,這個調度中心管理整個數據中心的所有物理機,當用戶提交計算資源的申請的時候,這個調度中心自動的處理用戶的請求,虛擬出符號用戶要求的計算機,並完成相應的配置,這個調度中心支持管理的服務器在萬臺,百萬臺。

這就是雲化,可以理解爲加強版的虛擬化技術,如果一個物理機集羣,達到了雲化的階段,我們就可以稱之爲雲計算了。

公有云,私有云:

雲計算大致分爲公有云和私有云,混合云爲私有云和公有云的連接,我們這裏不做討論,所謂私有云:

①私有云:把虛擬化和雲化的這套軟件部署在別人的數據中心裏面。使用私有云的用戶往往很有錢,自己買地建機房、自己買服務器,然後讓雲廠商部署在自己這裏

②公有云:把虛擬化和雲化軟件部署在雲廠商自己數據中心裏面的,用戶不需要很大的投入,只要註冊一個賬號,就能在一個網頁上點一下創建一臺虛擬電腦。比如:AWS 即亞馬遜的公有云;國內的阿里雲、騰訊雲

亞馬遜爲什麼要做公有云呢?原來亞馬遜是國外的一個較大的電商,國外的電商也有類似於國內的Double Eleven的場景,大家同一時刻,衝上去買東西,這是我們熟悉的高併發場景,需要巨大的計算資源支持,所以亞馬遜需要一個雲計算平臺。當出現高併發的情況的時候,立馬虛擬化一些計算機來應對高併發情況,過了高併發階段,馬上釋放這些資源去做別的事情。

然而虛擬化軟件太貴了,亞馬遜不願意掏這個錢,也不願受制於虛擬化軟件廠商,於是在開源虛擬化軟件 Xen,KVM的基礎上開發了自己的一套雲化軟件,後來亞馬遜的雲平臺越來越牛。

雖然,亞馬遜使用了開源的虛擬化技術,但是雲化的代碼是閉源的,很多公司看到亞馬遜共有云很掙錢,但是苦於技術難度大投入大。後來,公有云的第二,Rackspace開放了雲化的源代碼,做雲計算的公司紛紛涌入進來。

雲計算的分層:Iaas,Pass,

計算、網絡、存儲我們常稱爲基礎設施 Infranstracture,有了雲計算之後,我們能夠非常靈活的獲取一臺計算機(包含計算,網絡,存儲資源)因此雲計算做到了基礎即服務,而且這個服務還具有彈性,不使用的時候釋放,使用的時候創建, 這個階段的彈性稱爲資源層面的彈性。

IaaS 平臺之上又加了一層,用於管理資源以上的應用彈性的問題,這一層通常稱爲 PaaS(Platform As A Service)。

docker容器技術:最大的應用就是在雲計算的方向的Paas中,實現用戶應用的在多臺機器的部署,是實現自動化部署用戶應用的工具。

PaaS層的作用:完成用戶個性化應用的自動部署,通用的應用服務不用部署(實際上是雲平臺幫你部署了)

在PaaS層用戶如何完成個性化應用的快速部署? 使用的是容器的技術。也既保存鏡像和還原鏡像。

這兩步需要封閉的環境,封閉的環境有兩個技術支持:   第一個隔離的技術,稱爲 Namespace,也即每個 Namespace 中的應用看到的是不同的 IP 地址、用戶空間、程號等。 第二個隔離的技術,稱爲 Cgroups,也即明明整臺機器有很多的 CPU、內存,而一個應用只能用其中的一部分

大數據和雲計算之間的聯繫: 在PaaS層中一個通用的複雜的應用就是大數據平臺, 數據沒有用,但是數據裏面有一個重要的東西,叫做信息,數據十分雜亂,經過梳理和清洗,才能夠稱爲是信息,從信息中總結出規律出來,稱爲知識,知識應用於實踐,就成了智慧。下面是圖:

數據如何完成一次旅行?從數據到智慧?

  • 數據收集
  • 數據傳輸
  • 數據存儲
  • 數據處理和分析
  • 數據檢索和挖掘

【數據收集】的方式有兩種:  

拿:抓取,或者是爬取,比如搜素引擎就是這麼做的,它把網上的所有的信息都下載到它的數據中心,然後你一搜才能搜出來。比如你去搜索的時候,結果會是一個列表,這個列表爲什麼會在搜索引擎的公司裏面?就是因爲他把數據都拿下來了,但是你一點鏈接,點出來這個網站就不在搜索引擎它們公司了。比如說新浪有個新聞,你拿百度搜出來,你不點的時候,那一頁在百度數據中心,一點出來的網頁就是在新浪的數據中心了

推送,有很多終端可以幫我收集數據。比如說小米手環,可以將你每天跑步的數據,心跳的數據,睡眠的數據都上傳到數據中心裏面。 多臺機器,完成數據的收集操作。

【數據傳輸】:一般會通過隊列進行傳輸,因爲數據量實在是太大了,系統處理不過來,只好排隊,慢慢處理。這讓我想到了kafka。 數據量非常大的時候,一個內存裏面的隊列一個內存裏面的隊列肯定會被大量的數據擠爆掉,於是就產生了基於硬盤的分佈式隊列,這樣隊列可以多臺機器同時傳輸,隨你數據量多大,只要我的隊列足夠多,管道足夠粗,就能夠撐得住

【數據存儲】:這讓我想到了HDFS,一臺文件系統肯定是放不下的,所以需要一個很大的分佈式文件系統:

數據處理和分析:原始數據雜亂無章,有很多垃圾數據在裏面,需要清洗和過濾,這讓我想起了MapReduce。terasort對一個TB的數據進行排序,單機處理需要幾個小時,但是並行處理需要209秒。 數據量越來越大,很多不大的公司都需要處理相當多的數據,這些小公司沒有那麼多的機器怎麼辦?雲計算來解決。

數據檢索和挖掘:檢索就是搜索,所謂外事不決問 Google,內事不決問百度。內外兩大搜索引擎都是將分析後的數據放入搜索引擎,因此人們想尋找信息的時候,一搜就有了。另外就是挖掘,僅僅搜索出來已經不能滿足人們的要求了,還需要從信息中挖掘出相互的關係。

比如財經搜索,當搜索某個公司股票的時候,該公司的高管是不是也應該被挖掘出來呢?如果僅僅搜索出這個公司的股票發現漲的特別好,於是你就去買了,其時其高管發了一個聲明,對股票十分不利,第二天就跌了,這不坑害廣大股民麼?所以通過各種算法挖掘數據中的關係,形成知識庫,十分重要。 數據量越來越大,很多不大的公司都需要處理相當多的數據,這些小公司沒有那麼多的機器怎麼辦?

雲計算來解決。很多的小公司都會在自己的雲上安裝大數據,乾脆雲平臺,將其部署到PaaS,將其作爲一個通用的應用。現在的公有云上,基本上都有大數據的解決方案了。如此一來,小公司不需要採購一千臺機器,只要在公有云上一點擊,千臺機器出來了,而且上面已經部署好了,大數據平臺,只要把數據放進去就行了。大數據和雲計算兩者完美的結合在了一起。

Saas:軟件即服務,比如說人工智能程序。爲什麼智能程序是軟件即服務呢?而不是像大數據解決方案那樣作爲PaaS呢,因爲後者是一個集羣,涉及到了PaaS中,而人工智能程序是程序,而且這個程序是大量的數據訓練出來的,小公司並沒有那麼大的數據訓練,如果用戶單獨安裝一套,結果往往很差。雲計算廠商往往積累了大量的數據,於是雲計算廠商就在裏面安裝一套,暴露一個服務的接口。 當一個大數據公司積累了大量數據,會使用一些人工智能的算法提供一些服務;一個人工智能公司,也不可能沒有大數據平臺支撐。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章