最近常被一些媒體拿雲端出來亂炒,把所有網路服務都試為雲端服務,所有傳統網站突然就變成雲端網站,大家都號稱自己擁有雲端技術,然後大幅報導全球將引爆雲端商機,我看了是一頭霧水,在這裡分享一下個人所知道的雲端運算.
緣由
在雲端運算發展以前,其實已有Grid computing , Utility computing 等架構,因此平行運算、on demand service的概念早就存在,但以前的系統大都為企業和組織內部使用,直到雲端運算才開始有對外完全開放且統一的架構.
而雲端運算的技術是始於Google、Yahoo、Amazon這類超大型網站服務公司在想解決大型網路架構效能所演進而成的技術,追朔其歷史,應該始於2007年10月,Google與IBM開始在美國大學校園,包括卡內基美隆大學、麻省理工學院、史丹佛大學、加州大學柏克萊分校及馬里蘭大學等,推廣雲端運算的計畫,這項計劃希望能降低分散式運算技術在學術研究方面的成本,並為這些大學提供相關的軟硬體設備及技術支援(包括數百台個人電腦及BladeCenter與System x伺服器,這些運算平台將提供1600個處理器,支援包括Linux、Xen、Hadoop等開放原始碼平台)。而學生則可以透過網路開發各項以大規模運算為基礎的研究計畫。[1]
大型網站面臨的問題
在2000年左右,絕大部分的網站用的都是three tiers architecture,大型網站則是N tiers,其概念還是把各網站功能拆解成一台台的伺服器,一般基本的規劃如下:
Web server 2台 , 2 CPU ,4 G RAM
AP server 2台 , 2 CPU , 4G RAM
Mail server 2台 , 2 CPU,4 G RAM
Database 2台, 4 CPU , 8G RAM
File server 2台
Storage : NAS / SAN 5T
一次購買2台主要是要做load balance 及 Cluster,來提高網站的stability、 avalibility與scalability.
若再加上Firewall 、DNS server、 Switch、 router 等網路設備,一開始就得投入不少資金購買設備。
隨著網站會員增加,主要的server loading不勝負荷,通常就會開始購買額外的Server,而Database就要看需求增加CPU或採分散式資料庫架構,並增加許多Cache的function 來降低Loading
因此一般中型網站經拆解後,其伺服器數量可能變成如下:
Web server 10台
AP server 8台
Mail server 2台
Master Database 2台(8 CPU) + sub-Database X 4台 (2 CPU)
File server 4台
Storage : SAN 20T
這時問題就發生了
1. 各Server 資源使用不均
透過監控軟體可以發現,80%的server CPU loading 低於 30% 但 20%的 Server CPU 大都維持在60%
2. Database Cost過高
把所有網站的資料都存在資料庫在初期ok,但一旦資料一多,每個存取都相當耗系統資源,當然可以做資料庫效能調校、資料表切割、資料快取、分散式架構,但由於Database的license 通常不便宜,這樣的擴增相當燒錢。
3. Storage 的效能不足
在大量的資料存取下,Storage Disk I/O 居然也吃緊,必須準備更多的Storage 來分散存放資料
問題解決方式
我想這類問題在超大型網站Google Yahoo 上早就發生,看看他們是怎麼解決的
1. 將硬體虛擬化,導入平行運算
虛擬化的好處是可以讓一些閒置Server也可以運用,而且維護方便,不用停機。目前常看到的解決方案為 : XEN、VMware、Hyper-V
平行運算可以讓一些複雜吃資源的運算在短時間完成,不會讓某特定做運算的Server lock住導致整體效能變差,目前常用的解決方案 : Hadoop MapReduce、 Sector、google Mapreduce
由於伺服器虛擬化且可以平行運算,Google 早期都採用PC等級的電腦充當伺服器,大家可參考下列影片,很難想像這就是雲端的前身
2. 分散式資料及noSQL 架構
主流資料庫大都為RDBMS關聯性資料庫架構,其好處式資料易於維護、有Transaction Rollback功能、可以有多重索引、資料完整性及準確性高,但缺點是擴增不易、成本高、對於大量存取資料效能不佳,因此RDBMS比較適合在金融、EC、Dataware house、ERP…等商業應用上,而網頁的資料,並不需要那麼精準,但非常需要效率,所以衍生出下列分散式資料架構及noSQL資料庫
分散式檔案架構
Google File system :
Goolge 於2003年發表的一篇論文,使用分散容錯的架構在許多便宜的HDD上取代當時昂貴的Storage,並大幅提升存取效率 [2]
Hadoop HDFS :
Apache Hadoop架構下的分散式檔案架構,可以搭配Hive及 Pig 來存取資料[3][4]
noSQL Database:
Google Bigtable :
為了能高速讀取及搜尋Peta Bytes級資料而研發出的資料庫架構[5]
Hadoop Hbase :
Hadoop架構下的資料庫架構,可搭配Hive或Pig[6]
Apache Cassandra :
由facebook 開發並釋出的open source NoSQL 資料庫架構, Twitter 與Digg 也都採用此架構 [7]
也是一個open source 的noSQL database[8]
當然分散式檔案架構也有其致命缺點,其耗用原始資料3倍的空間儲存資料,可謂用空間換取時間,但卻有效的改善了網站的效率及擴充性,更重要的是這樣的架構只要在PC及一般的硬碟上跑就可以,相當經濟
而雲端運算平台的選用,個人看來以Hadoop為首選,但並竟是開放源碼的架構,在安裝及設定上都頗麻煩,目前有商業化套件 Cloudera http://www.cloudera.com/ 可供選用,目前還是免費下載的喔
如果對RDBMS及HDFS的效能比較有興趣,可以參考這篇文章,10 Ways To Complement the Enterprise RDBMS Using Hadoop
演化- 雲端服務
既然雲端運算的架構如此強大又容易擴充,若將其商業化建立雲端中心共企業或ISV使用,勢必有一定的商機,因此演化出3種營運模式
1. IaaS : 可以視為虛擬主機租用,但由於彈性高,可以根據CPU使用率來計價,可以細到以使用小時來計價,如Amazon EC2.
2. PaaS : 在雲端架構下建立的Platform, 提供ISV來上傳在平台規範下開發的軟體
3. SaaS : 即以前的ASP,但建構在雲端架構下
原本以經濟與效率為取向的雲端運算,轉為商用後,變成了雲端資料中心,提共更穩定更省電更高效能的環境,目前還有雲端貨櫃中心(Container Computer)[9][圖一]的產品,以低耗能高密度高校能為訴求,一個貨櫃可以擺放576台Server,販售對象為想建立私有雲應付大量運算的大型企業、醫院、國家組織、研究單位…等,但如果是一般網站經營者,可以思考改租用雲端服務或架設分散式架構來節省營運成本,個人建議先從VMware及Hadoop著手研究吧!!
圖一: 可以擺放576台server的貨櫃 圖片來源 : iThome
[1]Wiki : http://zh.wikipedia.org/zh-tw/雲端運算
[2]GFS 論文 http://labs.google.com/papers/gfs.html
[3] HDFS http://hadoop.apache.org/hdfs/
[4] Run PC 初探Hadoop開放原始碼平台環境 http://www.runpc.com.tw/content/cloud_content.aspx?id=105318
[5]Bigtable http://labs.google.com/papers/bigtable.html
[6]Hbase http://hbase.apache.org/
[7]Cassandra http://zh.wikipedia.org/zh-tw/Cassandra
[8]HyperTable http://trac.nchc.org.tw/cloud/wiki/HyperTable
[9]雲端貨櫃 http://www.ithome.com.tw/itadm/article.php?c=58652
延伸閱讀
Baseline “How Google work”http://www.baselinemag.com/c/a/Infrastructure/How-Google-Works-1/e
ebiz “10 Ways To Complement the Enterprise RDBMS Using Hadoop”http://www.ebizq.net/blogs/enterprise/2009/09/10_ways_to_complement_the_ente.php
沒有留言:
張貼留言