2013-01-22 52 views
1

我即將建立一個新的系統,我想要最大的可用性!我將不得不使用Windows!如何實現高度的可用性?

我會讓客戶使用webservices與我的系統通話。我也會從周圍的系統獲取數據。這些數據使用消息傳遞,MQ系列和MSMQ提供。 系統將產生一些使用隊列發回周圍系統的數據。

後新的數據已經到了系統中不同的進程將使用這些數據做不同勢任務,如打印,寫入數據庫等

爲了實現高可用性我計劃有系統的兩個版本在兩臺不同的機器上並行運行。客戶端將嘗試使用正確響應的第一臺服務器。 我認爲理想的解決方法是將來自兩臺服務器中任何一臺服務器的輸入數據放在COMMON隊列中(在第三臺機器上?)。隊列中的數據可以被兩臺服務器上的進程拾取(請考慮生產者 - 使用者模式)。

我認爲也許NServiceBus會適合我的需要。根據上述我有幾個問題。

  • 隊列可以在兩臺服務器之間共享嗎?我不希望數據卡在服務器上,如果它停下來的話。我希望其他服務器繼續處理。
  • 不同機器上的兩個(或多個)「消費者」/進程是否可以從普通隊列中挑選數據?

歡迎任何建議!

回答

1

NSB分銷商的目的不是要解決可用性問題,而是爲了解決規模問題,分銷商幫助以低成本擴展系統。

通過查看描述,您的系統由WebService端點,多個數據庫和排隊基礎結構組成。如果你想實現完全的高可用性,你必須確保沒有單點故障。爲了做到這一點,你需要,

  1. 負載平衡的Web場的Web服務端點(2個或更多服務器)的隊列和應用程序依賴於這些隊列
  2. 應用集羣。
  3. 高度可用的數據庫服務器,再次聚集。
  4. 在一切都很好的SAN之上。

但是,如果您指的是消費者可用,則只需確保目標隊列和Web服務端點可用。並確保整體架構促進延期執行。

兩個或多個應用程序可以遠程讀取MSMQ隊列,但那是因爲它基於DTC而不想執行的操作。這是一個真正的性能殺手。

一些參考文獻

  • [http://blogs.msdn.com/b/clustering/archive/2012/05/01/10299698.aspx][1]
  • [HTTP:// msdn.microsoft.com/en-us/library/ms190202.aspx][2]
相關問題