2013-09-28 27 views
0

我們正在開發一個由幾個Web應用程序(在不同的域下)以及一個後臺調度程序(使用Quartz.net)組成的大型應用程序,它將運行在一個工作者角色上(目前它是一個Windows服務,但不在Azure上有意義)。我試圖找出最適合我們的方式:爲每個應用單獨託管服務或在單個託管服務/角色下運行所有​​應用。我想還有第三個選擇是在單個託管服務下運行多個Web角色,但是我需要使用ARR(應用請求路由),我不確定它會給我帶來什麼好處(如果有的話)。聽起來像更多的開銷,但我很可能是錯的?Azure上的多個應用程序 - 每個服務一個應用程序還是一個整合應用程序?

我的項目有:

  • 面向公衆的網站 - 低負荷
  • 專用儀表盤 - 中等負荷
  • 跟蹤(分析)應用程序,跟蹤展示,點擊等 - 高負荷 - 5+萬次點擊/月
  • API - 也可作爲跟蹤應用程序依賴於它的高負荷
  • Quartz.net調度(工作者角色)

公共網站和儀表板可能應該在單個Web角色上,但我不確定跟蹤和API項目是否應該使用自己的雲服務,以便它們可以獨立擴展或是否應該在單個Web角色上運行所有內容使用主機頭文件(當然除了調度器)並且一次性縮放所有內容。所有託管服務將運行多個實例,所以我不擔心部署期間發生的事情(因爲Azure每次只能轉換一個實例)。

此外,運行在單個角色上會讓客戶端應用程序(網頁,儀表板,跟蹤)與API之間的延遲更長,或者親密度組和虛擬網絡使該點無關緊要?

我一直在尋找一段時間的最佳答案,但還沒有找到足夠的結論。

我最關心的是原始性能和可擴展性。價格不是我們的決定性因素。

謝謝

+0

這可能對於SO來說太廣泛了......請注意,Azure不是免費服務,因此可能需要考慮多個服務的價格。 –

回答

0

對於你的問題不能有一個單一的答案。

由於您的跟蹤應用基本上基於您的API,因此我假設沒有直接的外部流量來到您的API,並且它只被您的跟蹤應用使用。所以在這種情況下,我將把他們兩個都放在一個單一的網絡角色中。

但是,如果您希望API的負載超過您的跟蹤時間,考慮到您的API可能有一些外部客戶端,那麼最好將它放在單獨的Web角色上。

關於你其他2個網絡應用程序,因爲它們沒有太多的負載,你可以將它們與你的任何一個跟蹤或API角色結合起來。否則,如果你真的不關心定價有第三個角色來承載你的公共網站和儀表板。

1

這取決於...

有幾個維度,您的問題,你需要考慮。

  • 部署和版本控制 - 是否希望能夠分別對系統的某些部分進行版本和部署?維護單獨的部署需要額外的成本,但其優勢在於增加了靈活性並能夠單獨部署更改。這是你決定的最重要的方面。
  • 團隊結構 - 您是否有多個團隊在系統上工作?我強烈建議將團隊線路上的部署和版本分開。
  • 可伸縮性 - 從性能的角度來看,兩種選項都具有同等的可擴展性。
  • 用戶界面性能 - 這不應該是您部署設計的主要關注點。

我們怎麼接觸過這個問題:

  • 每個系統/子系統都有自己的部署和它自己的存儲帳戶。這允許簡單的版本控制和操作管理。
  • 我們的系統/子系統旨在執行一些高度內聚的職責。
  • 系統間通信是基於消息的(例如Azure隊列)。
  • 根據所需的性能特徵,可以通過配置輕鬆地在不同的Azure部署角色之間移動每個後端工作者角色的職責(我們稱之爲「角色服務」)。
  • 所有後端工作應該是工作者角色的性能。 IIS對於後臺進程來說是一個糟糕的主機。
  • UI性能是通過實現所有視圖(到blob存儲或內存)來實現的。緩存也可以使用。
相關問題