我有一個包含Azure中的多個託管服務的應用程序。兩個是網絡角色,一個是工作者角色。問題是,現在需要溝通兩個角色。一個是用作管理界面的網絡角色。另一個是工作者角色。管理界面需要發出命令,如暫停任何正在運行的作業,報告狀態等。第二個Web角色只是一個與前兩個無關的站點。Azure體系結構和角色通信
(只是爲了作序,我想確保我的使用Azure的術語是正確的):
託管服務:一個藍色的 '應用'。有兩個部署,生產和分期的多重角色
部署:所有角色的具體情況,無論是在生產或分期,通過一個外部端點(* .cloudapp.net)
的影響:一個'工作',無論是網絡角色還是工作者角色。
比如:虛擬機的該服務的角色
也驗證:是否可以將角色添加到現有的託管服務?也就是說,如果我從一個解決方案部署2個角色,我可以從另一個解決方案中的另一個部署中添加第三個角色?
因爲每個角色都在自己的託管服務中,所以會帶來一些挑戰。這是我在他們如何通信的選項的理解:
服務總線:這似乎是從架構的角度來看是最好的。每個託管服務都可以將WCF服務連接到服務總線,並且管理員可以向輔助角色發出命令。缺點是這是非常昂貴的。內部終點:如果考慮成本,這似乎是最好的。缺點是您必須一次部署所有角色,並且Web角色不能擁有唯一的地址。從外部訪問這兩個Web角色的唯一方法是使用端口轉發。據我所知,從一個解決方案部署2個角色,從另一個角色部署1個角色是不可能的?
外部WCF服務:每個組件可以在單獨的項目和單獨的託管服務中。缺點是現在有一個外部可見的管理服務。
隊列/表存儲:管理員可以將命令寫入Azure隊列,並且工作角色可以將他們的響應寫入表存儲。這對於生成報告來說似乎很好,但對於發佈同步命令似乎並不好。
應該爲多個服務「應用程序」提供服務的多個角色都進入相同的Azure託管服務嗎?如果從邏輯的角度來看它是最有意義的,那麼我會很樂意去用#2來處理端口轉發。非常感謝。
感謝您的回覆。我沒有充分考慮外部端點和隊列的限制。我打算以正確的方式進行,並使用服務總線進行服務通信,並使用內部端點來實現每個角色的實例。 – mfanto