這篇部落格對在雲計算解決方案中運算元據進行總覽性的介紹。
對於絕大多數解決方案而言,資料都是至關重要的一部分。在雲計算裡面,絕大多數現成的建議都可以直接拿來用。但是雲計算也有其獨特之處。這篇部落格將討論以下兩個用例:
無論是哪種用例,這些建議都是通用的。
在soa的世界中,最重要的乙個概念就是契約(contract)。在雲計算的世界中,有關通訊的最重要的概念也是契約。當乙個契約被很多雲計算解決方案使用之時,我們就可以把它稱作乙個拓撲了。
現在我們只討論資料通訊。如果你選擇了微軟的解決方案,我們推薦你使用open data protocol(odata)。odata是基於諸如http和atompub的國際標準建立的,它提供了乙個跨平台的資料通訊的方案。如果你雲端的程式使用odata來發布資料,這個世界上的任何乙個程式,只要是支援odata標準,就都能享用你的資料。同理,你雲端的程式也能使用odata來訪問你本機的資料。
很多目前的微軟產品已經在應用odata了。例如:indows azure table storage,dallas,sharepoint 2010,sql server 2008 r2,等等。
如果你打算使用其他的拓撲,有必要仔細思考它們的可伸縮性,有多少人在使用它們,等等。
既然拓撲已選定,下一步就是選擇一門技術來實現這個拓撲了。
如果你選擇了微軟的解決方案,我們推薦你使用wcf來處理所有程式間的通訊。針對資料通訊,wcf data services自然是最好的選擇。
首先,wcf data services是wcf服務,所以你可以使用所有現有的wcf知識。其次,wcf data services已經實現了odata拓撲,於是你可以致力於你的資料格式在你的程式中的表示,而不是atompub/json這些真正在網路上傳遞的資料格式。再有,wcf data services致力於資料傳輸,而不是資料儲存。你的資料可以存放在任何位置:本地的資料庫,雲端的資料庫,外部的web services,xml檔案,等等。無論資料是怎麼來的,你都可以用同樣的方式來發布/使用它們。
如果你選擇了其他技術,有必要仔細考慮使用該技術的需要花費多少精力來完成你的解決方案,該技術能否提供將來的解決方案擴充套件,等等。
接下來我們來看看微軟的產品如何幫助你們完成上述兩個用例。
許多雲計算解決方案都不是孤立的,它們需要和外部世界互動。說到資料,你很可能直接了當的反應出來daas (data as a service,資料即服務)。
雲計算的資料可以存放在許多地方,而且資料本身也是非常多樣化的。本文將致力於討論結構化的資料(例如xml),以及關係型資料(例如關聯式資料庫)。當前微軟提供了兩大產品用於在雲中存放資料。
下面這張**比較了靜態架構和動態架構各自的優勢。
靜態架構
動態架構
關係型資料庫,例如sql azure
windows azure table storage
經過了幾十年驗證的可靠架構
高度可擴充套件性(統一的儲存,但是不同的程式可以使用不同的資料結構)
可以使用許多現成的工具
基於odataweb協議
體現出了動態語言(dynamic languages)的優勢
針對你具體的場景,請選擇乙個合適的資料儲存方式。通常來說,如果你的服務對外部世界開放了寫的許可權(允許外部世界更新資料),動態架構是乙個比較好的選擇,因為第三方的程式很有可能需要適當的修改你提供的資料結構。然而目前windows azure table storage還有一些侷限性,它並未實現odata所有的功能,再加上關係模型已經有了好幾十年的經驗,你的開發人員也很可能非常熟悉關係模型,所以如果對你而言使用動態架構成本太高,請選擇靜態架構。
無論你選擇了何種架構,odata和wcf data services都能起到非常大的作用。
剛才已經說過,wcf data services可以使用任意的資料來源。它預設就提供了兩種資料提供者:ado.net entity framework (edm)和linq to sql (l2s)。如果你使用的是這兩種資料來源,通常只需要寫一小部分**即可完成乙個專案。如果你選擇sql azure存放資料,你就可以使用edm和l2s做資料來源。
如果你使用了其它資料來源,(例如windows azure table storage),你需要將你的資料模型轉換成wcf data services理解的模型。如果你的資料是唯讀的,這個過程就很簡單,因為你只需要寫乙個很普通的類來表示你的資料結構。如果你需要完整的crud功能,就必須實現iupdatable這個介面。這被稱作「reflection provider for wcf data services」。在更高階的場合中,你還可以使用「custom data service providers」。詳細資訊可以參考
windows azure table storage本身也是使用odata拓撲,所以你可能會試圖讓你的客戶直接訪問你的資料來源。但是在絕大多數的場合下,請不要這樣做。你必須竭盡全力保護你的storage賬號的key(把它想象成你的密碼)。如果你將自己的密碼給與乙個受你信任的使用者使他/她能直接訪問你的table storage,而他/她濫用了這份許可權,到最後,使你必須支付你的storage賬號的費用。我們推薦使用者將資料和業務邏輯封裝成服務,使用wcf data services就是完成這一任務的很好選擇。
你可以從all-in-one code framework (azure).zip另乙個常見的場景就是在雲端的專案中使用你本地的資料了。絕大多數場合下,這些資料都使用了靜態架構儲存於關係型資料庫中(例如sql server),所以你通常不會考慮如何儲存資料。在這個場景中,你更關心的是可連線性以及安全性。
很多公司都有防火牆和nat。很難找到一台機體,既可以自internet訪問,又擁有乙個固定的ip位址,所以要在雲端的程式直接連本地資料庫也就很難了。許可權控制也是乙個問題。雲端的程式並不在你的公司的區域網中,和資料庫不在同乙個域裡,要使用整合windows驗證是不可能的,而federated驗證目前還沒有針對資料庫提供很好的解決方案。
service bus同時支援tcp和http。大多數防火牆至少是允許outbounding連線通過80/443埠的,而這也正是service bus的最低需求。這樣一來,service bus便可以穿越nat和防火牆。
當然,odata和wcf data services在這個用例中也很有幫助。
你可以從all-in-one code framework (azure).zip
雲計算和資料中心 相互依存,互相促進
隨著網際網路 的發展壯大,大資料時代 雲計算時代 一時受到熱捧。那麼,這究竟是誰的時代?資料中心碰上雲計算,未來該如何?一 雲計算與資料中心的關係 資料中心是全球協作的特定裝置網路,用來在internet網路基礎設施上傳遞 加速 展示 計算 儲存資料資訊。它不僅包括計算機系統和其它與之配套的裝置,還...
2023年雲計算和資料中心五大趨勢
編者按 雲計算在近幾年獲得了很大的發展,國內市場上,先行的阿里雲漸漸找到營收模式,緊跟而來的其他廠商也在推動行業發展。在即將到來的2017年,相信市場競爭會更加激烈,會出現哪些趨勢呢?本文給出了2017年雲計算發展的五個趨勢。在2017年,雲計算的投資將持續火爆,但是隨著企業需求變化,2017年雲市...
大資料與雲計算
近幾年來,雲計算受到學術界和工業界的熱捧,隨後,大資料橫空出世,更是炙手可熱。那麼,大資料和雲計算之間是什麼關係呢?從整體上看,大資料與雲計算是相輔相成的 大資料著眼於 資料 關注實際業務,提供資料採集分析挖掘,看重的是資訊積澱,即資料儲存能力。雲計算著眼於 計算 關注it解決方案,提供it 基礎架...