我對使用天藍雲服務構建企業應用程序有一些疑問。使用Azure雲服務構建多服務企業應用程序
背後的故事
我們有一個SQL後端由十幾WCF Windows服務的系統。我們目前有大約10個客戶端,但預計可能增長到100個,可能會增加系統吞吐量的一百倍。目前的系統設計不好,而且根本無法擴展。所以現在看起來是在蔚藍的平臺上重新設計的適當時機。
工藝流程
讓我簡要介紹一下服務的簡化集和流程,然後問了一些問題,我有一個關於利用Azure雲服務來構建新的系統。
服務A登錄到一個外部系統和下載數據連續
服務B登錄到第二外部系統和下載數據連續
有隻能爲一個在實例記錄的每個的服務A和B.
A和B都將它們的數據傳遞給服務C,以使來自兩個外部源的數據一致。
驗證和核對數據接着由C傳遞到服務d執行一些計費功能和隨後將得到的數據到服務E和F.
服務E被連續地登錄到外部系統和上傳數據到它。
服務˚F生成報告,並通過FTP等
他們發佈到客戶端的系統實際上是比這更加複雜,但上述說明所涉及的過程。該系統每週6天,每天24小時運行。隊列將用於緩衝所有服務之間的消息傳遞。
我們可以使用Azure持久性虛擬機構建此係統,並利用服務總線,隊列等,但這會將我們與垂直擴展策略聯繫起來。考慮到以下問題,我們如何利用雲服務來實現它?
問題
鑑於服務A,B和E與外部系統的永久記錄有隻能永遠是每一個活動實例。如果我們將這些作爲單個實例工作者角色來實現,則存在停機時間和修補問題(這是不可接受的)。如果我們創建了每個實例的兩個實例,那麼是否存在一種標準方式來實現在Azure上使用角色的主動 - 被動負載平衡,還是需要構建自己的負載平衡器?對於這個問題還有沒有想過的另一個解決方案?
服務C和D是使用多個工作者角色實例進行擴展的理想選擇。但是每個實例都必須處理相關數據。例如,我們可以爲5個單獨的客戶端分別處理4個實例。我們如何才能讓消息按每個實例進行分組處理(以客戶爲中心)?另外,當修補發生時,我們如何將一個實例的負載重新分配給剩餘的實例。例如,如果爲5個客戶端處理數據的實例1在進行操作系統修補時出現故障,則其客戶端的數據將不得不由其餘實例處理,直到它重新恢復爲止。同樣,如果我們決定啓動額外的員工角色,我們如何重新分配負載?
您能提供的任何見解或建議將不勝感激。
墊
使用Windows Azure Service Bus啓動並運行起來非常簡單。這些nuget軟件包將在一小時內啓動並運行。 http://nuget.org/packages?q=ProjectExtensions和源https://github.com/ProjectExtensions/ProjectExtensions.Azure.ServiceBus – 2013-03-11 06:50:43
太好了。多謝你們。你能否指出我在展示處理相關組中的消息的代碼示例的方向? – Mat 2013-03-12 21:19:28