Service Broker 的一般用法

Service Broker 可以用於需要以非同步方式執行處理,或需要將處理分散到多台電腦的任何應用程式。Service Broker 的一般用法包括:

  • 非同步觸發程序

  • 可靠的查詢處理

  • 可靠的資料收集

  • 用戶端應用程式的分散式伺服器端處理

  • 用戶端應用程式的資料合併

  • 大型批次處理

非同步觸發程序

許多使用觸發程序的應用程式,例如線上交易處理 (OLTP) 系統,都會因 Service Broker 而獲益。觸發程序會佇列要求 Service Broker 服務之工作的訊息。事實上,觸發程序並不執行要求的工作。而是建立一則訊息,其中包含要執行之工作的相關資訊,並將此訊息傳送至執行工作的服務。然後觸發程序會返回。

原始交易認可後,Service Broker 會將訊息傳遞至目的服務。實作服務的程式會在個別交易中執行工作。藉由在個別交易中執行此工作,原始交易可以立即認可。應用程式可避免因在執行工作期間保持原始交易開啟而導致的系統速度減緩。

可靠的查詢處理

在不考慮出現電腦故障、電源中斷或類似問題的情況下,某些應用程式必須可靠地處理查詢。需要可靠查詢處理的應用程式可以藉由將訊息傳送至 Service Broker 服務來提交查詢。實作服務的應用程式會讀取訊息、執行查詢,並傳回結果。所有這三項作業都會在同一交易中進行。如果在交易認可前發生失敗,則會復原整個交易,且訊息會回到佇列。待電腦復原後,應用程式會重新啟動並再次處理訊息。

可靠的資料收集

從大量來源收集資料的應用程式可以利用 Service Broker 來可靠地收集資料。例如,具有多個站台的零售應用程式可以使用 Service Broker 將交易資訊傳送至中央資料存放區。因為 Service Broker 提供可靠且非同步的訊息傳遞,所以即使站台暫時失去與中央資料存放區的連接,每個站台仍可以繼續處理交易。Service Broker 安全性有助於確保訊息不會被錯誤導向,且有助於保護傳輸中的資料。

用戶端應用程式的分散式伺服器端處理

存取多個 SQL Server 資料庫的大型應用程式會因 Service Broker 而獲益。例如,訂購書籍的 Web 應用程式可以使用伺服器站台上的 Service Broker 在不同資料庫間交換資訊,這些資料庫中包含訂購、客戶、存貨及信用的相關資料。因為 Service Broker 提供訊息佇列及可靠的訊息傳遞,所以即使其中一個資料庫無法使用或負載過重,應用程式仍可繼續接受訂單。在此狀況下,Service Broker 會當作分散式 OLTP 系統的架構。

用戶端應用程式的資料合併

必須同時使用或顯示多個資料庫中資訊的應用程式可以利用 Service Broker。例如,將多個位置的資料合併至一個螢幕的客戶服務應用程式可以使用 Service Broker,來平行 (而非循序) 執行這些要求,並因此大幅縮短應用程式回應時間。客戶服務應用程式會將要求平行傳送至不同的服務;當服務回應要求時,客戶服務應用程式會收集回應並顯示結果。

大型批次處理

必須執行大型批次處理的應用程式可以利用 Service Broker 提供的佇列及平行處理,快速而有效地處理大量工作。應用程式會將要處理的資料儲存在 Service Broker 佇列中。程式則定期從佇列讀取及處理資料。應用程式可以利用 Service Broker 提供的可靠訊息,在產生要求之外的電腦上執行批次處理。