五分鐘學後端技術:一篇文章告訴你如何學習雲計算!

来源:https://www.cnblogs.com/xll1025/archive/2020/04/02/12622962.html
-Advertisement-
Play Games

作者:劉超 轉自【劉超的通俗雲計算】 什麼是雲計算 早在十年前,市場上就出現了很多和雲計算相關的崗位,當時正是雲計算技術最火熱的時代,不管是BAT還是華為等企業都開始佈局雲計算,於是OpenStack研發、容器研發、底層開發等相關崗位相應地也越來越多,雖然這幾年大數據和AI的風頭已經完全壓過了雲計算 ...


作者:劉超
轉自【劉超的通俗雲計算】

什麼是雲計算

早在十年前,市場上就出現了很多和雲計算相關的崗位,當時正是雲計算技術最火熱的時代,不管是BAT還是華為等企業都開始佈局雲計算,於是OpenStack研發、容器研發、底層開發等相關崗位相應地也越來越多,雖然這幾年大數據和AI的風頭已經完全壓過了雲計算,但是這一門技術仍然在現如今的技術體系中占有很重要的位置。那麼,到底什麼是雲計算,就是我們每一個要學習雲計算技術的朋友要瞭解的事情了,根據百度百科的介紹

大數據(big data),IT行業術語,是指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大數據時代》 [1] 中大數據指不用隨機分析法(抽樣調查)這樣捷徑,而採用所有數據進行分析處理。大數據的5V特點(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。 [2]

思維導圖

雲計算

雲計算的發展史

物理機時代

雲計算的整個過程,用一個詞來講就是“分久必合,合久必分”。

雲計算其實主要解決了四個方面的內容:計算,網路,存儲,應用。前三者是資源層面的,最後是應用層面的。

計算是CPU和記憶體,為啥?1+1這個最簡單的演算法是把1放在記憶體裡面,運行加法是CPU做的,做完了結果2又保存在記憶體裡面。
網路就是你插根網線能上網。
存儲就是你下個電影有地方放。本次討論就是圍繞這四個部分來講的。
 在原始社會,大家最愛用的是物理設備:

伺服器用的是物理機,例如戴爾,惠普,IBM,聯想等物理伺服器,隨著硬體設備的進步,物理伺服器越來越強大了,64核128G記憶體都算是普通配置。
網路用的是硬體交換機和路由器,例如思科的,華為的,從1GE到10GE,現在有40GE和100GE,帶寬越來越牛。
存儲方面有的用普通的磁碟,也有了更快的SSD盤。容量從M,到G,連筆記本電腦都能配置到T,更何況磁碟陣列。
 如果部署應用直接使用物理機,看起來很爽,總有種土豪的感覺,卻又大大的缺點:

人工運維:如果你在一臺伺服器上安裝軟體,把系統安裝壞了,怎麼辦?只有重裝。當你想配置一下交換機的參數,需要串口連上去進行配置。當你想增加一塊磁碟,總要買一塊插進伺服器。這些都需要人工來,而且很大可能要求機房。你們公司在北五環,機房在南六環,這酸爽。
浪費資源:其實你只想部署一個小小的網站,卻要用128G的記憶體。混著部署吧,就有隔離性的問題。
 隔離性差:你把好多的應用部署在同一臺物理機上,他們之間搶記憶體,搶cpu,一個寫滿了硬碟,另一個就沒法用了,一個弄掛了內核,另一個也同時掛了,如果部署兩個相同的應用,埠還會衝突,動不動就會出錯。
 於是有了第一次合久必分的過程,叫做虛擬化。所謂虛擬化,就是把實的變成虛的。

虛擬機的誕生

物理機變為虛擬機:cpu是虛擬的,記憶體是虛擬的,內核是虛擬的,硬碟是虛擬的。
物理交換機變為虛擬交換機:網卡是虛擬的,交換機是虛擬的,帶寬也是虛擬的。
物理存儲變成虛擬存儲:多塊硬碟虛擬成一大塊。
 虛擬化很好的解決了上面的三個問題:

人工運維:虛擬機的創建和刪除都可以遠程操作,虛擬機被玩壞了,刪了再建一個分鐘級別的。虛擬網路的配置也可以遠程操作,創建網卡,分配帶寬都是調用介面就能搞定的。
浪費資源:虛擬化了以後,資源可以分配的很小很小,比如1個cpu,1G記憶體,1M帶寬,1G硬碟,都可以被虛擬出來。
隔離性差:每個虛擬機有獨立的cpu, 記憶體,硬碟,網卡,不同虛擬機的應用互不幹擾。
但是虛擬化還有以下的缺點,通過虛擬化軟體創建虛擬機,需要人工指定放在哪台機器上,硬碟放在哪個存儲設備上,網路的VLAN ID,帶寬具體的配置,都需要人工指定。所以單單使用虛擬化的運維工程師往往有一個Excel表格,有多少台機器,每台機器部署了哪些虛擬機。所以,一般虛擬化的集群數目都不是特別的大。

在虛擬化階段,領跑者是Vmware,可以實現基本的計算,網路,存儲的虛擬化。

當然這個世界有閉源,就有開源,有windows就有linux,有apple就有andord,有Vmware,就有Xen和KVM。在開源虛擬化方面,Xen方面Citrix做的不錯,後來Redhat在KVM發力不少。

對於網路虛擬化,有Openvswitch,可以通過命令創建網橋,網卡,設置VLAN,設置帶寬。

對於存儲虛擬化,對於本地盤,有LVM,可以將多個硬碟變成一大塊盤,然後在裡面切出一小塊給用戶。

為瞭解決虛擬化階段剩餘的問題,於是有了分久必合的過程。這個過程我們可以形象的稱為池化,也就是說虛擬化已經將資源分的很細了,但是對於如此細粒度的資源靠Excel去管理,成本太高,能不能打成一個大的池,當需要資源的時候,幫助用戶自動的選擇,而非用戶指定。所以這個階段的關鍵點:調度器Scheduler。

公有雲和私有雲

於是vmware有了自己的vcloud。

於是基於Xen和KVM的私有雲平臺CloudStack,後來Citrix將其收購後開源。

當這些私有雲平臺在用戶的數據中心裡面賣的其貴無比,賺的盆滿缽滿的時候。有其他的公司開始了另外的選擇,這就是AWS和Google,開始了公有雲領域的探索。

AWS最初就是基於Xen技術進行虛擬化的,並且最終形成了公有雲平臺。也許AWS最初只是不想讓自己的電商領域的利潤全部交給私有雲廠商吧,於是自己的雲平臺首先支撐起了自己的業務,在這個過程中,AWS自己嚴肅的使用了自己的雲計算平臺,使得公有雲平臺不是對於資源的配置更加友好,而是對於應用的部署更加友好,最終大放異彩。

如果我們仔細觀察就會發現,私有雲和公有雲使用的是類似的技術,卻在產品設計上是完全不同的兩種生物。私有雲廠商和公有雲廠商也擁有類似的技術,卻在產品運營上呈現出完全不同的基因。

私有雲廠商都是賣資源的,所以往往在賣私有雲平臺的時候往往伴隨著賣計算,網路,存儲設備。在產品設計上,私有雲廠商往往強調又長又詳盡,但是客戶幾乎不會使用的計算,網路,存儲的技術參數,因為這些參數可以用來和友商對標的過程中占盡優勢。私有雲的廠商幾乎沒有自己的大規模應用,所以私有雲廠商的平臺做出來是給別人用的,自己不會大規模使用,於是產品往往圍繞資源展開,而不會對應用的部署友好。

公有雲的廠商往往都是有自己的大規模應用需要部署的,所以其產品的設計,可以將常見的應用部署所需要的模塊作為組件提供出來,用戶可以像拼積木一樣,拼接一個適用於自己應用的架構。公有雲廠商不必要關心各種技術參數的PK,不必關心是否開源,是否相容各種虛擬化平臺,相容各種伺服器設備,網路設備,存儲設備。你管我用什麼,客戶部署應用方便就好。

OpenStack的誕生

當然公有雲的第一名AWS活的很爽,第二名Rackspace就不太爽了,沒錯,互聯網行業嘛,基本上就是一家獨大。第二名如何逆襲呢?開源是很好的辦法,讓整個行業大家一起為這個雲平臺出力,兄弟們,大家一起上。於是Rackspace與美國航空航天局(NASA)合作創始了開源雲平臺OpenStack。OpenStack現在發展的和AWS有點像了,所以從OpenStack的模塊組成,可以看到雲計算池化的方法。

OpenStack包含哪些組件呢?

計算池化模塊Nova:OpenStack的計算虛擬化主要使用KVM,然而到底在那個物理機上開虛擬機呢,這要靠nova-scheduler。

網路池化模塊Neutron:OpenStack的網路虛擬化主要使用Openvswitch,然而對於每一個Openvswitch的虛擬網路,虛擬網卡,VLAN,帶寬的配置,不需要登錄到集群上配置,Neutron可以通過SDN的方式進行配置。

存儲池化模塊Cinder:OpenStack的存儲虛擬化,如果使用本地盤,則基於LVM,使用哪個LVM上分配的盤,也是用過scheduler來的。後來就有了將多台機器的硬碟打成一個池的方式Ceph,則調度的過程,則在Ceph層完成。

有了OpenStack,所有的私有雲廠商都瘋了,原來VMware在私有雲市場實在賺的太多了,眼巴巴的看著,沒有對應的平臺可以和他抗衡。現在有了現成的框架,再加上自己的硬體設備,你可以想象到的所有的IT廠商的巨頭,全部加入到社區裡面來,將OpenStack開發為自己的產品,連同硬體設備一起,殺入私有雲市場。

網易當然也沒有錯過這次風口,上線了自己的OpenStack集群,網易蜂巢基於OpenStack自主研發了IaaS服務,在計算虛擬化方面,通過裁剪KVM鏡像,優化虛擬機啟動流程等改進,實現了虛擬機的秒級別啟動。在網路虛擬化方面,通過SDN和Openvswitch技術,實現了虛擬機之間的高性能互訪。在存儲虛擬化方面,通過優化Ceph存儲,實現高性能雲盤。

但是網易並沒有殺進私有雲市場,而是使用OpenStack支撐起了自己的應用,這是互聯網的思維,沒錯。僅僅是資源層面彈性是不夠的,還需要開發出對應用部署友好的組件。例如資料庫,負載均衡,緩存等,這些都是應用部署必不可少的,也是網易在大規模應用實踐中,千錘百煉過的。這些組件稱為PaaS。

從IAAS到PAAS

前面一直在講IaaS層的故事,也即基礎設施即服務,基本上在談計算,網路,存儲的事情。現在應該說說應用層的事情了。

IaaS的定義比較清楚,PaaS的定義就沒那麼清楚了,有的把資料庫,負載均衡,緩存作為PaaS服務,有的把大數據Hadoop, Spark平臺作為PaaS服務,有的講應用的安裝與管理,例如Puppet, Chef, Ansible作為PaaS服務。

其實PaaS主要用於管理應用層的,我總結兩部分:一部分是你自己的應用應當自動部署,比如Puppet, Chef, Ansible, Cloud Foundry等,可以通過腳本幫你部署,一部分是你覺得複雜的通用應用不用部署,比如資料庫,緩存,大數據平臺,可以在雲平臺上一點即得。

要麼就是自動部署,要麼不用部署,總的來說就是應用層您也少操心,就是PaaS的作用。當然最好是都不用部署,一鍵可得,所以公有雲平臺將通用的服務都做成了PaaS平臺。另一些應用,是您自己開發的,除了你自己,其他人都不知道,所以您可以用工具變成自動部署。

有了PaaS最大的優點,就是可以實現應用層的彈性伸縮。比如雙十一來了,10個節點要變成100個節點,如果使用物理設備,再買90台機器固然來不及,僅僅只有IaaS實現資源的彈性是不夠的,再創建90台虛擬機,也是空的啊,還是需要運維人員一臺一臺的部署。所以有了PaaS就好了,一臺虛擬機啟動後,馬上運行自動部署腳本,進行應用的安裝,90台機器自動安裝好了應用,才是真正的彈性伸縮。

當然這種部署方式也有一個問題,就是無論Puppet, Chef, Ansible把安裝腳本抽象的再好,說到底也是基於腳本的,然而應用所在的環境千差萬別,文件路徑的差別,文件許可權的差別,依賴包的差別,應用環境的差別,Tomcat, PHP, Apache等軟體版本的差別,JDK,Python等版本的差別,是否安裝了一些系統軟體,是否占用了哪些埠,都可能造成腳本執行的不成功。所以看起來是一旦腳本寫好,就能夠快速複製了,但是一旦環境稍有改變,就需要把腳本進行新一輪的修改,測試,聯調。例如在數據中心寫好的腳本,移到AWS上就不一定直接能用,在AWS上聯調好了,遷移到Google Cloud上去也可能再會出問題。

容器的誕生

於是容器應運而生。容器是Container,Container另一個意思是集裝箱,其實容器的思想就是要變成軟體交付的集裝箱。集裝箱的特點,一是打包,二是標準。設想沒有集裝箱的時代,如果從A將貨物運到B,中間要經過三個碼頭,換三次船的話,每次貨物都要卸下船來,擺的七零八落,然後再換船的時候,需要重新整齊擺好,所以沒有集裝箱的時候,船員們都能夠在岸上待幾天再走。然而有了集裝箱,所有的貨物都打包在一起了,並且集裝箱的尺寸全部一致,所以每次換船的時候,整體一個箱子搬過去就可以了,小時級別就能完成,船員再也不能上岸長時間休息了。所以設想A就是程式員,B就是用戶,貨物就是代碼及運行環境,中間的三個碼頭分別是開發,測試,上線。

假設代碼的運行環境如下:

1.        Ubuntu操作系統

2.        創建用戶hadoop

3.        下載解壓縮JDK 1.7在某個目錄下

4.        將這個目錄加入JAVA_HOME和PATH的環境變數裡面

5.        將環境變數的export放在hadoop用戶的home目錄下的.bashrc文件中

6.        下載並解壓縮tomcat 7

7.        將war放到tomcat的webapp路徑下麵

8.        修改tomcat的啟動參數,將Java的Heap Size設為1024M

看,一個簡單的Java網站,就需要考慮這麼多零零散散的東西,如果不打包,就需要在開發,測試,生產的每個環境上查看保證環境的一致,甚至要將這些環境重新搭建一遍,就像每次將貨物打散了重裝一樣麻煩,中間稍有差池,比如開發環境用了JDK 1.8,而線上是JDK 1.7,比如開發環境用了root用戶,線上需要使用hadoop用戶,都可能導致程式的運行失敗。

容器如何對應用打包呢?還是要學習集裝箱,首先要有個封閉的環境,將貨物封裝起來,讓貨物之間互不幹擾,互相隔離,這樣裝貨卸貨才方便。好在ubuntu中的lxc技術早就能做到這一點,這裡主要使用了兩種技術,一種是看起來是隔離的技術,稱為namespace,也即每個namespace中的應用看到的是不同的IP地址,用戶空間,進程號等。另一種是用起來是隔離的,稱為cgroup,也即明明整台機器有很多的CPU,記憶體,而一個應用只能用其中的一部分。

有了這兩項技術,集裝箱的鐵盒子我們是焊好了,接下來是決定往裡面放什麼的時候了。最簡單粗暴的方法,就是將上面列表中所有的都放到集裝箱裡面。但是這樣太大了,因為虛擬機的鏡像就是這樣的,動輒幾十G,如果你安裝一個乾乾靜靜的ubuntu操作系統,什麼都不裝,就很大了。這其實相當於把船也放到了集裝箱裡面,答案當然是NO.

所以撇下第一項操作系統,剩下的所有的加起來,也就幾百M,就輕便多了。所以一臺伺服器上的容器是共用操作系統內核的,容器在不同機器之間的遷移不帶內核,這也是很多人聲稱容器是輕量級的虛擬機的原因。輕不白輕,自然隔離性就差了,一個集裝箱把船壓漏水了,所有的集裝箱一起沉。

另一個需要撇下的就是隨著應用的運行而產生並保存在本地的數據,多以文件的形式存在,例如資料庫文件,文本文件。這些文件會隨著應用的運行,越來越大,如果這些數據也放在容器裡面,會讓容器變得很大,影響容器在不同環境的遷移。而且這些數據在開發,測試,線上環境之間的遷移是沒有意義的,生產環境不可能用測試環境的文件,所以往往這些數據也是保存在容器外面的存儲設備上。也是為什麼人們稱容器是無狀態的。

至此集裝箱焊好了,貨物也裝進去了,接下來就是如何將這個集裝箱標準化,從而在哪艘船上都能運輸。這裡的標準一個是鏡像,一個是容器的運行環境。所謂的鏡像,就是將你焊好集裝箱的那個時刻,將集裝箱的狀態保存下來,就像孫悟空說定,集裝箱裡面就定在了那一刻,然後將這一刻的狀態保存成一系列文件。這些文件的格式是標準的,誰看到這些文件,都能還原當時定住的那個時刻。將鏡像還原成運行時的過程,就是讀取鏡像文件,還原那個時刻的過程,也就是容器的運行的過程。除了大名鼎鼎的Docker,還有其他的容器,例如AppC,Mesos Container,都能運行容器鏡像。所以說容器不等於Docker。

總而言之,容器是輕量級的,隔離差的,適用於無狀態的,基於鏡像標準實現跨主機,跨環境的隨意遷移。

有了容器,使得PaaS層對於用戶自身應用的自動部署變得快速而優雅。容器快,快在了兩方面,第一是虛擬機啟動的時候要先啟動操作系統,容器不用啟動操作系統,因為是共用內核的。第二是虛擬機啟動後使用腳本安裝應用,容器不用安裝應用,因為已經打包在鏡像裡面了。所以最終虛擬機的啟動是分鐘級別,而容器的啟動是秒級。容器咋這麼神奇。其實一點都不神奇,第一是偷懶少幹活了,第二是提前把活乾好了。

因為容器的啟動快,人們往往不會創建一個個小的虛擬機來剛剛部署應用,因為這樣太費時間了,而是創建一個大的虛擬機,然後在大的虛擬機裡面再劃分容器,而不同的用戶不共用大的虛擬機,可以實現操作系統內核的隔離。

這又是一次合久必分的過程。由IaaS層的虛擬機池,劃分為更細粒度的容器池。

容器的粒度更加細,管理起來更難管,甚至是手動操作難以應對的。假設你有100台物理機,其實規模不是太大,用Excel人工管理是沒問題的,但是一臺上面開10台虛擬機,虛擬機的個數就是1000台,人工管理已經很困難了,但是一臺虛擬機裡面開10個容器,就是10000個容器,你是不是已經徹底放棄人工運維的想法了。

所以容器層面的管理平臺是一個新的挑戰,關鍵字就是自動化:

自發現:容器與容器之間的相互配置還能像虛擬機一樣,記住IP地址,然後互相配置嗎?這麼多容器,你怎麼記得住一旦一臺虛擬機掛了重啟,IP改變,應該改哪些配置,列表長度至少萬行級別的啊。所以容器之間的配置通過名稱來的,無論容器跑到哪台機器上,名稱不變,就能訪問到。
自修複:容器掛了,或是進程宕機了,能像虛擬機那樣,登陸上去查看一下進程狀態,如果不正常重啟一下麽?你要登陸萬台docker了。所以容器的進程掛了,容器就自動掛掉了,然後自動重啟。
彈性自伸縮 Auto Scaling:當容器的性能不足的時候,需要手動伸縮,手動部署麽?當然也要自動來。
如果有了容器的管理平臺,又是一次分久必合。

容器管理平臺

當前火熱的容器管理平臺有三大流派:

一個是Kubernetes,我們稱為段譽型。段譽(Kubernetes)的父親(Borg)武功高強,出身皇族(Google),管理過偌大的一個大理國(Borg是Google數據中心的容器管理平臺)。作為大理段式後裔,段譽的武功基因良好(Kubernetes的理念設計比較完善),周圍的高手雲集,習武環境也好(Kubernetes生態活躍,熱度高),雖然剛剛出道的段譽武功不及其父親,但是只要跟著周圍的高手不斷切磋,武功既可以飛速提升。

一個是Mesos,我們稱為喬峰型。喬峰(Mesos)的主要功夫降龍十八掌(Mesos的調度功能)獨步武林,為其他幫派所無。而且喬峰也管理過人數眾多的丐幫(Mesos管理過Tweeter的容器集群)。後來喬峰從丐幫出來,在江湖中特例獨行(Mesos的創始人成立了公司Mesosphere)。喬峰的優勢在於,喬峰的降龍十八掌(Mesos)就是在丐幫中使用的降龍十八掌,相比與段譽初學其父的武功來說,要成熟很多。但是缺點是,降龍十八掌只掌握在少數的幾個丐幫幫主手中(Mesos社區還是以Mesosphere為主導),其他丐幫兄弟只能遠遠崇拜喬峰,而無法相互切磋(社區熱度不足)。

一個是Swarm,我們稱為慕容型。慕容家族(Swarm是Docker家族的集群管理軟體)的個人功夫是非常棒的(Docker可以說稱為容器的事實標準),但是看到段譽和喬峰能夠管理的組織規模越來越大,有一統江湖的趨勢,著實眼紅了,於是開始想創建自己的慕容鮮卑帝國(推出Swarm容器集群管理軟體)。但是個人功夫好,並不代表著組織能力強(Swarm的集群管理能力),好在慕容家族可以借鑒段譽和喬峰的組織管理經驗,學習各家公司,以彼之道,還施彼身,使得慕容公子的組織能力(Swarm借鑒了很多前面的集群管理思想)也在逐漸的成熟中。

雲計算方面核心技術有哪些?

作者:冰島社區-陳昊
鏈接:https://www.zhihu.com/question/353443905/answer/877956605
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

雲計算是一種以數據和處理能力為中心的密集型計算模式,它融合了多項ICT技術,是傳統技術“平滑演進”的產物。其中以虛擬化技術、分散式數據存儲技術、編程模型、大規模數據管理技術、分散式資源管理、信息安全、雲計算平臺管理技術、綠色節能技術最為關鍵。

1、虛擬化技術

 虛擬化是雲計算最重要的核心技術之一,它為雲計算服務提供基礎架構層面的支撐,是ICT服務快速走向雲計算的最主要驅動力。可以說,沒有虛擬化技術也就沒有雲計算服務的落地與成功。隨著雲計算應用的持續升溫,業內對虛擬化技術的重視也提到了一個新的高度。與此同時,我們的調查發現,很多人對雲計算和虛擬化的認識都存在誤區,認為雲計算就是虛擬化。事實上並非如此,虛擬化是雲計算的重要組成部分但不是全部。

  從技術上講,虛擬化是一種在軟體中模擬電腦硬體,以虛擬資源為用戶提供服務的計算形式。旨在合理調配電腦資源,使其更高效地提供服務。它把應用系統各硬體間的物理劃分打破,從而實現架構的動態化,實現物理資源的集中管理和使用。虛擬化的最大好處是增強系統的彈性和靈活性,降低成本、改進服務、提高資源利用效率。

  從表現形式上看,虛擬化又分兩種應用模式。一是將一臺性能強大的伺服器虛擬成多個獨立的小伺服器,服務不同的用戶。二是將多個伺服器虛擬成一個強大的伺服器,完成特定的功能。這兩種模式的核心都是統一管理,動態分配資源,提高資源利用率。在雲計算中,這兩種模式都有比較多的應用。

2、分散式數據存儲技術

  雲計算的另一大優勢就是能夠快速、高效地處理海量數據。在數據爆炸的今天,這一點至關重要。為了保證數據的高可靠性,雲計算通常會採用分散式存儲技術,將數據存儲在不同的物理設備中。這種模式不僅擺脫了硬體設備的限制,同時擴展性更好,能夠快速響應用戶需求的變化。

  分散式存儲與傳統的網路存儲並不完全一樣,傳統的網路存儲系統採用集中的存儲伺服器存放所有數據,存儲伺服器成為系統性能的瓶頸,不能滿足大規模存儲應用的需要。分散式網路存儲系統採用可擴展的系統結構,利用多台存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易於擴展。

  在當前的雲計算領域,Google的GFS和Hadoop開發的開源系統HDFS是比較流行的兩種雲計算分散式存儲系統。

  GFS(Google File System)技術:谷歌的非開源的GFS(GoogleFile System)雲計算平臺滿足大量用戶的需求,並行地為大量用戶提供服務。使得雲計算的數據存儲技術具有了高吞吐率和高傳輸率的特點。

  HDFS(Hadoop Distributed File System)技術:大部分ICT廠商,包括Yahoo、Intel的“雲”計劃採用的都是HDFS的數據存儲技術。未來的發展將集中在超大規模的數據存儲、數據加密和安全性保證、以及繼續提高I/O速率等方面。

3、編程模式

  從本質上講,雲計算是一個多用戶、多任務、支持併發處理的系統。高效、簡捷、快速是其核心理念,它旨在通過網路把強大的伺服器計算資源方便地分發到終端用戶手中,同時保證低成本和良好的用戶體驗。在這個過程中,編程模式的選擇至關重要。雲計算項目中分散式並行編程模式將被廣泛採用。

  分散式並行編程模式創立的初衷是更高效地利用軟、硬體資源,讓用戶更快速、更簡單地使用應用或服務。在分散式並行編程模式中,後臺複雜的任務處理和資源調度對於用戶來說是透明的,這樣用戶體驗能夠大大提升。MapReduce是當前雲計算主流並行編程模式之一。MapReduce模式將任務自動分成多個子任務,通過Map和Reduce兩步實現任務在大規模計算節點中的高度與分配。

  MapReduce是Google開發的java、Python、C++編程模型,主要用於大規模數據集(大於1TB)的並行運算。MapReduce模式的思想是將要執行的問題分解成Map(映射)和Reduce(化簡)的方式,先通過Map程式將數據切割成不相關的區塊,分配(調度)給大量電腦處理,達到分散式運算的效果,再通過Reduce程式將結果彙整輸出。

4、大規模數據管理

  處理海量數據是雲計算的一大優勢。那麼如何處理則涉及到很多層面的東西,因此高效的數據處理技術也是雲計算不可或缺的核心技術之一。對於雲計算來說,數據管理面臨巨大的挑戰。雲計算不僅要保證數據的存儲和訪問,還要能夠對海量數據進行特定的檢索和分析。由於雲計算需要對海量的分散式數據進行處理、分析,因此,數據管理技術必需能夠高效的管理大量的數據。

  Google的BT(BigTable)數據管理技術和Hadoop團隊開發的開源數據管理模塊HBase是業界比較典型的大規模數據管理技術。

  BT(BigTable)數據管理技術:BigTable是非關係的資料庫,是一個分散式的、持久化存儲的多維度排序Map.BigTable建立在 GFS,Scheduler, Lock Service和MapReduce之上,與傳統的關係資料庫不同,它把所有數據都作為對象來處理,形成一個巨大的表格,用來分佈存儲大規模結構化數據。 Bigtable的設計目的是可靠的處理PB級別的數據,並且能夠部署到上千台機器上。

  開源數據管理模塊HBase:HBase是Apache的Hadoop項目的子項目,定位於分散式、面向列的開源資料庫。HBase不同於一般的關係資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。作為高可靠性分散式存儲系統,HBase在性能和可伸縮方面都有比較好的表現。利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。

5、分散式資源管理

  雲計算採用了分散式存儲技術存儲數據,那麼自然要引入分散式資源管理技術。在多節點的併發執行環境中,各個節點的狀態需要同步,並且在單個節點出現故障時,系統需要有效的機制保證其它節點不受影響。而分散式資源管理系統恰是這樣的技術,它是保證系統狀態的關鍵。

  另外,雲計算系統所處理的資源往往非常龐大,少則幾百台伺服器,多則上萬台,同時可能跨躍多個地域。且雲平臺中運行的應用也是數以千計,如何有效地管理這批資源,保證它們正常提供服務,需要強大的技術支撐。因此,分散式資源管理技術的重要性可想而知。

  全球各大雲計算方案/服務提供商們都在積極開展相關技術的研發工作。其中Google內部使用的Borg技術很受業內稱道。另外,微軟、IBM、Oracle/Sun等雲計算巨頭都有相應解決方案提出。

6、信息安全

  調查數據表明,安全已經成為阻礙雲計算發展的最主要原因之一。數據顯示,32%已經使用雲計算的組織和45%尚未使用雲計算的組織的ICT管理將雲安全作為進一步部署雲的最大障礙。因此,要想保證雲計算能夠長期穩定、快速發展,安全是首要需要解決的問題。

  事實上,雲計算安全也不是新問題,傳統互聯網存在同樣的問題。只是雲計算出現以後,安全問題變得更加突出。在雲計算體系中,安全涉及到很多層面,包括網路安全、伺服器安全、軟體安全、系統安全等等。因此,有分析師認為,雲安全產業的發展,將把傳統安全技術提到一個新的階段。

  現在,不管是軟體安全廠商還是硬體安全廠商都在積極研發雲計算安全產品和方案。包括傳統殺毒軟體廠商、軟硬防火牆廠商、IDS/IPS廠商在內的各個層面的安全供應商都已加入到雲安全領域。相信在不久的將來,雲安全問題將得到很好的解決.

7、雲計算平臺管理

  雲計算資源規模龐大,伺服器數量眾多並分佈在不同的地點,同時運行著數百種應用,如何有效地管理這些伺服器,保證整個系統提供不間斷的服務是巨大的挑戰。雲計算系統的平臺管理技術,需要具有高效調配大量伺服器資源,使其更好協同工作的能力。其中,方便地部署和開通新業務、快速發現並且恢復系統故障、通過自動化、智能化手段實現大規模系統可靠的運營是雲計算平臺管理技術的關鍵。

  對於提供者而言,雲計算可以有三種部署模式,即公共雲、私有雲和混合雲。三種模式對平臺管理的要求大不相同。對於用戶而言,由於企業對於ICT資源共用的控制、對系統效率的要求以及ICT成本投入預算不盡相同,企業所需要的雲計算系統規模及可管理性能也大不相同。因此,雲計算平臺管理方案要更多地考慮到定製化需求,能夠滿足不同場景的應用需求。

  包括Google、IBM、微軟、Oracle/Sun等在內的許多廠商都有雲計算平臺管理方案推出。這些方案能夠幫助企業實現基礎架構整合、實現企業硬體資源和軟體資源的統一管理、統一分配、統一部署、統一監控和統一備份,打破應用對資源的獨占,讓企業雲計算平臺價值得以充分發揮。

博客

Java技術倉庫《Java程式員複習指南》

https://github.com/h2pl/Java-Tutorial

整合全網優質Java學習內容,幫助你從基礎到進階系統化複習Java

面試指南

全網最熱的Java面試指南,共200多頁,非常實用,不管是用於複習還是準備面試都是不錯的。
在公眾號【Java技術江湖】回覆“PDF”即可免費領取。

寫在最後

如果覺得本文對你有幫助的話,請你也不要吝嗇你的“好看”哈,轉發朋友圈就是對我最大的支持啦,你們的支持是對我最大的鼓勵。

對本系列文章有什麼建議和意見,也歡迎留言告訴我,期待你的回饋。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 可惡的新冠病毒攻擊人類,搞得IT就業形勢相當不好?好在有鐘南山院士帶領我們提前開展好了防護工作! java作為基礎平臺安裝在各種移動設備,PC,小型機,分散式伺服器集群,各種不同的操作系統上。所以,對java平臺層面的攻擊也是最多的。 我是李福春,我在準備面試,今天的題目是: Java平臺的註入攻擊 ...
  • 問題描述 有n(2≤n≤20)塊晶元,有好有壞,已知好晶元比壞晶元多。 每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果(即此結果與被測試晶元實際的好壞無關)。 給出所有晶元的測試結果,問哪些晶元是好晶元。 ...
  • 一、創建項目(本文以Idea基於Maven構建的項目為例) New——>Project 筆者這裡是選擇自己本地的Maven及配置 最後點擊Finish即可 二、在配置文件中添加依賴包 pom.xml配置文件中添加Mybatis、JDBC驅動、log4j日誌管理的包依賴 完整代碼如下: <?xml v ...
  • 項目簡介 項目來源於: "https://gitee.com/glotion/servlet jsp_news" 本系統基於 JSP+Servlet+C3P0+Mysql 。涉及技術少,易於理解,適合 JavaWeb初學者 學習使用。 難度等級:簡單 技術棧 編輯器 IntelliJ IDEA 20 ...
  • 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。 示例: 輸入:(2 -> 4 -> ...
  • 一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程式可以訪問、檢測和修改它本身狀態或行為的一種能力(自省)。這一概念的提出很快引發了電腦科學領域關於應用反射性的研究。它首先被程式語言的設計領域所採用,併在Lisp和麵向對象方面取得了成績。 python面向對象中的反射:通過字元 ...
  • [TOC] 本文內所有實現的代碼均附在文末,有需要可以參考。~~(好奇寶寶們可以粘貼下來跑一下~~ 多線程程式評價標準 安全性: ​ 安全性就是不損壞對象。也就是保證對象內部的欄位的值與預期相同。 生存性: ​ 生存性是指無論什麼時候,必要的處理都一定能夠執行。失去生存性最典型的例子就是“死鎖”。 ...
  • 用vector實現鄰接表 vector <int> G[100]; //表示有100個頂點的圖的鄰接表 G[u].push_back(v); //從頂點u 向頂點v 畫邊,即在相當於創建一個二維數組G[100][i] //搜索與頂點u 相鄰的頂點v for( int i = 0; i < G[u]. ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...