最近公司接觸Windows Azure, 在苦苦摸索一個多月后,感受頗豐,故在此分享,與博友們分享一點經驗。
第一篇講一些基本的概念和所需要使用的軟件。
1、什么是Azure?
Azure是比較新的一個概念,為什么說是概念而不是說產品呢,因為Azure的技術基礎是相對比較成熟的,現在不管是Amazon的, 還是Microsoft的, 還是Google,開始做雲都是很快做起來的,而不是說要搞個三五年的研究才出來這么個產品。但是大家會發現,做雲技術的都是些比較大的公司,很少有新創業的公司能自己辦雲服務的。這其中原因要追溯到雲技術的起源。最早做雲的是亞馬遜,大家知道亞馬遜最早是買書的,在網絡上買,很多投資人給他們投了很多錢在全世界各地買了無數服務器和資源,但是最近幾年,他們發現,這么多硬件資源,其中只有15%都不到在使用。但是東西已經買了,而且這也不是什么增值的東西,也賣不出去。於是他們想辦法,怎么去利用這么多過剩資源,正巧美國一所研究機構在研究雲技術,或者叫雲概念,簡單的說就是將過剩的硬件資源組合起來再提供給用戶使用,然后按照使用量收費,用得多收的多,用得少收的少。這是一個很好的想法,好處不用多說,大家都懂的。於是一拍即合,就出現了最早的亞馬遜的雲服務。
現在的雲服務主要有3種概念:IaaS(Infrastructure as a Service),即硬件設施就是一種服務;PaaS(Platform as a Service), 平台是一種服務;SaaS(Software as a Service),軟件就是一種服務。亞馬遜最早提供的就是IaaS;現在微軟主要提供的PaaS,最近也開放了IaaS的產品;SaaS各家都有,知道SOA的基本都知道,現在的BS開發架構就是這種意思。
我們選擇用Windows Azure,並不是說它的性能就比別家好,功能比別家強,服務比別家好,主要是因為他提供比較完善的基於Windows開發的PaaS,我們現在都是Windows開發平台,中小型企業一般會選擇Windows,因為開發周期短,成本低,維護方便;價格方面還算比較便宜,可以接受。像我們公司,我們的BS產品的使用者有高峰期和低谷期,高峰期只有一兩月,我們可以用多少付多少錢。雲服務提供商的選擇應根據自己公司的實際需求而定,反正一句話:沒有最好,只有最合適。
另外微軟提供的是公共雲,當然也有私有雲的解決方案,覺得需要數據安全的可以考慮將數據私有化。不多說,詳細地網上有很多資料,可以慢慢看。
2、需要知道的一些概念:
Portal:Windows Azure的管理中心網站,http://www.windowsazure.com,和一個MSN帳號綁定,現在中國大陸不能直接用,需要從香港或者其他國家申請,每個帳號可以申請一個3個月免費使用的subscription,不過需要一個香港的電話號碼,或者其他支持國家的手機號碼,和一張信用卡。或者如果是公司的話可以加入bizspark,詳情參考http://www.bizspark.com。
Subscription:簡單的說就好比一個MSN可以綁定不同的雲服務設置環境,因為我一個帳號可以有用於測試的,用於正式發布的,就好比戰網通行證里可以有多個WOW實例一樣。所有的服務和付費都基於subscription.
Host Service:用於部署我們的服務的節點。
Storage Account: 雲上提供的Message Queue, Blob大文件存儲,Table結構化數據存儲都需要存儲帳號。由於azure提供自動負載平衡,每個虛擬機都可能遭遇非預知的切換節點,重啟,更改存儲位置,所以我們以往用IO來寫文件的方式將會變得沒啥用處,在雲上要做數據動態存儲,要么數據庫,要么blog或者Table。
Windows Azure SDK:用於創建Windows Azure項目的開發包
Windows Azure Emulator:Windows Azure本地模擬器,隨SDK一並安裝。
Package:Windows Azure的發布的時候,SDK都會先打包再上傳部署的。
Role:兩種WebRole和WorkerRole,WebRole會自動部署在IIS上,WorkerRole會部署為一個普通進程。目前,我通過多方面測試和證實WorkerRole上不能正確發布基於REST的WCF Service。詳細說明我會在詳細講到Worker Role 的blog里說。
Instance:一個Role可以在多個Instance上部署,每個Instance就是一個虛擬機,你可以用遠程桌面連接的那種,他們都自動做負載平衡。微軟建議每個Role至少需要2個Instance,原因么我上面說到過了。這個是收費的大頭。Instance根據CPU和內存的大小從極小到極大分成好幾種,具體看官網吧。
Certifacte:用於驗證本地與雲端的通訊。
SQL Azure:SQL在雲上的版本。
Firewall:數據庫訪問需要將本地的IP地址加入到Firewall里才能本地連接SQL Azure。
Service Bus:如果你想把代碼放在自己的機器上,但是又想讓外面的人訪問你的service,就需要用到Service Bus。它還有很多功能,之后細講。
Virtual Network:類似於VPN,之后細講。
3、需要裝的軟件:
1)Visual Studio 2010 Ultimate(如果你是bizspark的成員,你就可以免費擁有一個subscription,每個月2個Small Instance,5G Web SQL Azure)
2)Windows Azure SDK
https://www.windowsazure.com/en-us/develop/downloads/
Java,PHP也可以用
3)Fiddler(建議,用來模擬/測試HTTP Request)
4)SQL Server Management Studio 2008 R2 / SSMS 2012
5) Script Wizard,用來將數據庫移植到SQL Azure
http://sqlazuremw.codeplex.com/(3rd-part)
http://msdn.microsoft.com/en-us/library/windowsazure/ee730904.aspx
6)Azure Diagnostics Manager用來監測調試數據的工具
http://cerebrata.com/Products/AzureDiagnosticsManager/ (3rd-part,收費,30天試用,有dashboard)
當然在codeplex也有免費的。
7)一顆熱愛新技術的心!
另外不得不說一句,賣軟件的時代過去了,10年前是OO時代,5年前是SOA時代,現在以及今后是XaaS的時代,雲概念是必然趨勢,我們可以不用,可以不喜歡,但是我們不能不了解。
今天就簡單寫這么點,明天我會詳細寫點Role的相關內容。
