你用過哪種雲計算服務,實際感覺怎樣?比如 Amazon EC2
目前在我們自己的網站中使用AWS的EC2/EBS/S3,部署在新加坡的data center,國內訪問速度還可以。EC2最大的優勢是可伸縮性非常好,支持scale up和scale out:
- scale up: 你可以以一個micro instance開始,當訪問量逐漸增大時,將instance type改為medium/large/xlarge(注意32bit只能往32bit上遷移,所以一開始盡量64bit)。(操作非常簡單,只需ec2-stop-instances, ec2-modify-instance-attribute, ec2-start-instance就能在幾十秒中完成「硬體」的升級)。
- scale out: 當單台滿足不了服務要求時,可以在幾十秒內迅速創建並部署新的instance。
- 在某些日期或者某些時段流量會激增的網站,如netflix(http://www.netflix.com/),用戶會集中在晚上觀看視頻,因此在晚8點-10點間使用的instance數量可能是白天的幾倍甚至幾十倍。
- 用戶在訪問網站的過程中會觸發複雜的,計算密集的操作,如vimeo(http://vimeo.com/),當用戶生成video的時候需要做渲染,因此瞬間可能開啟很多instance處理,處理完畢後立刻terminate。
對於startup來說,EC2(AWS)能1)讓你的團隊專註於產品開發本身,而不是購買硬體,配置和維護硬體等等繁雜的工作;2)減少初始投入;3)使網站的發展趕得上用戶的發展。
James Zhang寫過一個很棒的AWS介紹,相信能有助於你進一步理解AWS(http://feilong.me/wp-content/uploads/2010/12/Amazon-AWS-introduction-by-James-Zhang.pdf)。我們嘗試使用Google App Engine.
優點:1. 不用自己去搭環境,申請一個app-id寫幾行代碼就能部署了。2. 自動負載均衡。能夠在訪問量激增的情況下仍然提供服務。3. 穩定性還不錯。中間經歷過幾次維護,現在感覺每個月大約幾個小時吧。哪個服務沒有維護呢?自己買虛擬主機更需要經常停機維護了。4. 有免費的quota,調試期間以及低訪問量的app可以達到免費。缺點:1. 被綁定了。沒有SQL,用的是BigTable, 想要遷移比較麻煩一點。2. 寫操作特別慢。大約需要100ms的樣子。讀操作也不快,幾十ms。頻繁寫會導致響應變慢,同時cpu消耗也比較大,花錢如流水。不過google也提供了memcache的功能,可以緩解一下。
3. 編程模型有些複雜,得理解不少概念,順著GAE的性子去做。4. 開發的應用的默認域名*.http://appspot.com已經有幸被牆選中了。Microsoft Windows Azure。
包括一系列服務,最主要的是計算服務(Fabric Computing)和資料庫存儲服務(SQL Azure)。(1)計算服務
那一塊是基於 http://ASP.NET 的,Visual Studio 2010 有專門的插件,裝好後部署調試就很方便。代碼上和 http://ASP.NET 基本無異,後台需要做運算的時候,直接創建對應的 Worker Role 或者 Web Role,然後編寫業務邏輯代碼,靈活度比較高。(2)資料庫存儲
之前叫 SDS (SQL Data Services),現在改名為 SQL Azure。SQL Azure 提供了類似 T-SQL 的介面,在 Microsoft SQL Server 2008 R2 版甚至可以直接像訪問本地資料庫一樣訪問雲資料庫。
(3)調試
當運行一個項目之後,調試器會啟動一個監控程序,顯示當前服務使用了哪些 Role,以及他們的任務分配。(4)總結很看好資料庫那一塊。因為雲資料庫封裝了資料庫的邏輯部署,用戶只需要通過一條 SQL 語句,就可以高效地對海量數據進行查詢。Microsoft 很早就有了並行運算框架,叫 Dryad。後來有了語言級查詢,叫 LINQ。前兩年,又有了一個集成在一起的東西,叫 DryadLINQ。DryadLINQ 目的是通過提供一個 SQL-like interface,然後實現對關係型海量數據的查詢,包括投影、選擇、連接、集合運算。DryadLINQ 自稱可以用 3 行代碼實現 MapReduce 的整個過程。但是後來,可能是因為 DryadLINQ 對數據源的支持僅限於 Windows HPC Server(不是很確定),轉而近兩年熱推 SQL Azure。把AWS EC2當VPS用的情況已經有很多人都說過了。我說說我自己用過的、目前還沒有被其他答案提到過的AWS的其他服務。
* Elastic MapReduce(EMR):自動 provision(抱歉我不知道這個詞的中文是啥)一大堆機器(一個集群),並部署一套 Hadoop/MapR 的 MapReduce 服務,同時可以按需安裝Hive、Pig等軟體。通過網頁管理界面提交應用到集群之後,可以在網頁上實時看到進度。做大數據處理非常方便~
* Simple Storage Service(S3):對象存儲服務。在 EMR 上把數據跑完之後可以把輸出數據放到 S3 上慢慢調戲。但是從 EMR 集群的 HDFS 上往 S3 上拷貝數據是個極其極其極其痛苦的過程。所以一般都用 Hive/HBase 什麼的當場把數據對付完就不要了。另外在下載小電影風聲鶴唳的美帝開個 EC2 實例掛 BT,下完了傳到 S3 上再拖到本地即快速又安全。
* RDS:只用過MySQL的。感覺還很不成熟。主要是貴貴貴貴貴貴貴貴貴。而且沒什麼可以 Tuning 的空間。資料庫只要有個百來G的用RDS簡直就是要完蛋。目前來看還是優先考慮自己建一個 EC2 實例然後掛個巨大的 Provisioned IO EBS 卷比較實惠。
* VPC:曾經某個小組作業要搭一個 Web Service。某 A 開了 EMR 把數據跑完之後放在自己賬號下的 HBase 上。某 B 把前端 Web Service 放在自己的 EC2 實例上。然後我們就用 VPC(試圖)把兩個人的賬號下的 EC2 實例放到一個子網裡。簡直快折騰瘋了。只能說用還是能用的,但是 Web 管理界面做的不是很直觀,需要不停的查文檔。
* EC2:還是說說 EC2 吧。EC2 最「彈性」的特點當數 AutoScaling 了。可以自己設定一系列警報:譬如當某參數到達某閾值的時候按照某配置再開5個實例。相應的也可以通過監測參數自動關閉實例。這裡的參數可以是 AWS 預設的常規參數(CPU佔用率,磁碟IO,網路吞吐等等),也可以是通過 API 自行推送的參數。這裡也算是用到了 CloudWatch 服務吧。
* EBS:這個應該算是 EC2 的一部分。提供一些可以到處掛載的卷。其實我覺得多數情況下使用 EC2 實例自帶的 Instance Storage 就能解決很多問題了……但是 AWS 在新建 EC2 實例的時候默認不掛載附送的 Instance Storage 不知是何居心。EBS 這玩意兒要是用完了請迅速做好快照(Snapshot)然後刪掉。不然分分鐘就能整出幾百刀的賬單來。不要問我是怎麼知道的。
* Spot Instance(EC2):這個絕對要單獨拿出來說。除了 AWS 以外,我目前還試用過 Azure、GCE和阿里雲的 IaaS 服務。但提供類似 Spot Instance 的僅有 AWS 一家(錯了請指出)。Spot Instance,即考慮到伺服器資源在各個時段和地區的利用率都是不一樣的,如果有利用率低的情況 AWS 就可以把空閑的伺服器資源以一個很低的價格提供給對地區或時間並不敏感的應用。比如我要弄一個20個實例的 EMR 集群去跑一些數據。實際運行時間可能也就幾個小時,但是我可能幾天之後才會用到這個結果。那我就可以在 Spot Instance 里查看我需要的實例類型在哪個區域和哪個時間段有最低的價格,並在相應的時間和地區開實例跑應用。考慮到 Spot Instance 的價格往往低至常規的 On-Demand(按需使用)價格的1/10,靈活使用Spot Instance可以節省大量預算。
AWS大法好!都試用過。GAE:熟悉Java和Python的人可以快速上手,學習簡單,API都不複雜。想隨便玩玩搭建個人網站的人會非常喜歡
AWS:相比GAE需要的學習時間長點,因為其提供的服務實在太多了,都很強大。如果要在其上部署應用的話還是需要一點系統知識,畢竟要自己管理虛擬機。還有AWS是通過web service發布,所以服務的使用與語言無關,目前有很多第三方工具包支持各種語言,用起來會很舒服。
Azure:微軟風格,提供了一套開發模型,熱愛.NET的程序員應該會很喜歡,從測試、開發都有一套工具和流程heroku:
推薦。heroku 上面你想要的語言 runtime 一般它都有,比如 nodejs python ruby。
在 heroku 上面,使用 c/c++ addon 比在其他平台上都要方便,可以隨意 compile 並使用。免費額度對於玩具應用來說也很足夠。
appfog:
不推薦。現在(2014-03-05)貌似已經開始收費了,沒有免費額度了。之前我用 nodejs 在上面部署一個應用,compile 不了,所以放棄了使用。比起 heroku 來說,並沒有感覺到優勢。
gae:
還行。
gae 的話,我只用過 python。但是用 gae,會限制你的遷出。因為 gae 上面涉及到了很多 gae 相關的私有技術,比如 datastore,cronjob 這些。gae 的資料庫操作很貴。但是很穩定,而且 Dashboard 很清晰。
sae:
感覺不錯。我用過上面的 php 和 python。感覺 python 有點後媽養的感覺,很多的新支持都是針對 php 的,文檔也是 php 的比較齊全。
sae 跟 gae 一樣,只可以使用 python 原生代碼的庫,如果涉及到 c 拓展,就沒戲了。
sae 的速度很穩定性還是很贊的,mysql 的主從它也自動幫忙做了。綁定域名的話,如果不想備案就要付雙倍的流量費,不過這是小問題啦。一直在使用Amazon EC2,基礎型的免費1年,之後按流量計費;目前全當虛擬機使了.美國西部的速度還是相對不錯的,PING值在200左右;出自Amazon名門,穩定性自然也不用說.
我們公司用一家雲計算服務供應商做有限元計算。計算速度很快,但下載數據很慢,好在同城,所以計算完成後開車帶著硬碟過去拷。
谷歌:
防火牆系統嚴密,默認只開啟22號埠,需要自己在防火牆那裡添加tcp,udp對應的埠。相對比較麻煩;好處是送你300美元限2個月內用完,超級爽 ;另外谷歌亞太的機房據說是在台灣,目前台灣的機房還是市面上比較少的亞馬遜AWS:
可部署國家選擇很多:日本韓國美國巴西愛爾蘭etc;好處是有免費一年的體驗,非常划算Moguhost:
主打韓國BGP 有openvz還有kvm的,對國內的ping很低80 for averageConoha:
日本東京,新加坡,美國三個機房,東京新推出512MB套餐月付40CNY,很划算,官方說限量賣這個512MB的;注意新加坡和美國一個價,比東京要貴;優點是不計算流量VPSならConoHa|登録者數8萬人突破Vultr:
日本美國德國英國荷蘭澳洲新加坡etc很多國家可選擇,但國人太多,新加坡線是剛推出的,路由追蹤顯示要繞經日本才到新加坡;各個機房的ping for average 在200-300左右;5美元768MB內存 一個月vultr.comDigitalocean:
大致與vultr相同,有印度和紐約的機房,都是按照小時計費,比較方便中國的阿里雲等需要備案。。就沒有體驗過上一家公司是開發GAE應用的,自己也搞了個EC2,自己感覺這兩個各有各的優點,GAE的優點就不說了,樓上已經有了詳細的說明,相對於EC2來說GAE更像雲計算,而EC2僅僅只是一台不超賣的VPS而已,而且很貴,順帶說下GAE的寫操作問題,其實也不是沒有優化的空間,只要你順著GAE來,性能上不成問題,記得善用google提供的工具
對於普通開發者和快速增長的應用開發者來說,EC2讓APP應用迅猛發展提供了助力器,現在很多APP STORE上的應用都是基於EC2構建。其實要感受EC2有多好,自己建個用戶去試試就知道,現在基本不用文檔都能很好的搭建基礎服務,特別是有了marketplace以後,更是讓後台服務的搭建變得更加輕易,包括商業應用軟體。
可以說,EC2已經不簡簡單單的為開發者服務,而且已經在構建更加強大的計算雲生態系統,讓一切用戶和服務商都在這套系統中生存。Amazon EC2的IO能力跟CPU計算能力成正比,所以micro instance的話只能是用來玩玩的,wordpress的一個插件就能讓micro instance的CPU飆到100%。Micro Instance某些情況下還比不上shared。實際使用EC2 Micro instance一年的人的感覺。
很多回答都已經過時了,雲計算行業發展太快了。
2014-2015年來看,如果是國內用戶,想使用IaaS(虛擬機)的話,青雲(http://www.qingcloud.com)是個不錯的選擇;想使用PaaS(php運行環境)的話,SAE(http://sae.sina.com.cn)是個不錯的選擇。
不光使用過Amazon EC2,還是用過Lambda,Kinesis,DynamoDB,IoT等等其他服務,感覺AWS不僅僅是IaaS,他的很多服務都已經超出了IaaS的界限,所以不太好定義它是IaaS還是PaaS或是其他,簡單的說它是雲計算服務,我的規律是,我的業務架構里哪些有痛點了或感覺麻煩了,就看看AWS有哪些服務可以解決。
先談一下EC2的感受:EC2+ELB+Autoscaling簡直就是絕配,ELB接收外部請求,EC2處理業務邏輯,Autoscaling做自動伸縮。總結起來,高可用,負載均衡,彈性,自動化這些高檔的詞無形中都已經實現了。
再談談Lambda,估計這就是從物理機器-&>虛擬機-&>容器-&>函數發展的趨勢吧,Lambda確實是無伺服器架構的典範,直接寫代碼,免運維,事件觸發這是對軟體開發模式的一次重大的變革。
DynamoDB同樣也是無伺服器架構的一個重要組件,自定義吞吐、無需關心容量限制、NoSQL簡直是互聯網應用的最愛。
IoT解決了大規模連接設備的並發連接和海量數據的傳輸,他的很有特色的設備影子真實解決了我們再設備時常斷網情況下的設備的控制難題。
SAE: 新浪出品的,目前需要邀請碼(或者說申請)。支持php 與mysql,另外還有一些帶有新浪特色的服務(如新浪微博)。目前也有不少「開源」項目的SAE版本http://sae.sina.com.cn/
自己近段時間在使用AWS EC2。雲計算服務沒有好不好,只有是否合適。從個人以及初創團隊角度看,評價一個雲計算服務除了價格以及機器配置賬面數據,更多的應該考慮該平台的其他配套服務,如海量存儲服務、緩存服務、負載均衡服務、郵件服務等。從這個維度來看,業界的翹楚當推Amazon Web Services (AWS) 「因為總所周知的原因,只能為Google App Engine感到遺憾……」服務怎麼樣,用一下就知道了。題主可以在EC2上面搭建一個VPS玩玩(http://liudanking.com/beautiful-life/aws-ec2-wordpress_blog/),目前綁定信用卡可以免費用一年。
正在用Windows Azure, 如果有windows上的開發經驗,上手很容易;提供REST API,也提供了SDK, 支持C#, PHP, JAVA; 和EC2最大的不同:Azure是platform as service, EC2是infostructure as service
Amazon的EC2,Micro instance有一年的免費使用期,而且主機位置可以設置在新加坡或是東京,國內的訪問速度不錯。以目前的Amazon的計價來看,Micro instance的包年收費比起國外其他VPS(像是Linode),價格上小有優勢。再加上伺服器地理位置上的靈活性,所以總體來說是非常吸引人的。
以上Micro instance主要是針對個人用戶的,對於創業公司來說靈活的擴展性讓EC2相對其他VPS服務更有明顯的優勢。只用過GAE,EC2有機會用下
使用過GAE,amazon ec2沒用過,但是從現在的資料和用戶的反應來說應該還是很不錯的,但是在國內使用可能稍微麻煩點
簡單用過 appengine,EC2,S3
長期用在 production env 不太靠譜,國內響應還是慢。產品初期用非常方便,部署簡單最近一直在使用新浪的sae,環境支持java php python。去年七月份在上面搭建了一套php應用,多應用之間還可以共享數據服務,速度還可以,申請了sae的中級開發者認證,每月送1w5的雲豆,目前使用幾乎全免費。資料庫服務目前為mysql,如果經常使用,操作累死phpadmin,並且提供了memcache模塊,但不得不吐槽,sae在memcache模塊維護的時候真是出現很多問題。總體來說表現還是可以的。另外說說備案的事,sae目前有備案的服務,可以在sae的備案平台上申請備案,填好相關信息之後,初審通過去相關的地點拍照,進行二次審核就好了,還是蠻快的。建議提早備案,備案完成後在進行域名綁定,否則走海外線路,流量double,而且海外服務經常伺服器50*了,真是搞出不少問題。
推薦閱讀: