引擎保存性與耐久性
本節說明 BizTalk Server 如何透過 SQL Server 將程序狀態存放至磁碟,可靠的整合鬆散耦合的商務程序。 藉由在適當的時間保存狀態、利用交易,系統能確保即使發生硬體或軟體故障,程序狀態也不會遺失。 這稱為系統耐久性。
鬆散耦合的商務程序管理
整合現有系統以執行單一邏輯商務程序需要對現有系統外部的程序狀態進行管理。 不管商務程序是長期執行或是短期有效,程序狀態都必須個別維護,才能避免將系統緊密耦合在一起所導致的自訂通訊路徑劇增。
很明顯地,若該商務程序相當重要,執行商務程序執行個體的狀態就必須非常可靠。 為確保商務程序是可靠且耐久的,BizTalk 利用 SQL Server 交易將程序狀態和商務資料保存至資料庫中的磁碟,稱為 MessageBox 資料庫。 如需 MessageBox 資料庫的詳細資訊,請參閱 MessageBox 資料庫。
例如,每個訊息和最簡單商務程式實例 (,協調流程實例) BizTalk Server至少會保存在 MessageBox 資料庫中處理期間一次。
保存性與持續性
BizTalk Server保存所有訊息和大部分協調流程對於永續性有直接影響,如什麼是永續效能中所述?當訊息抵達 MessageBox 資料庫時,它們會路由傳送至等候訂閱者 (例如,協調流程和傳送埠) 和排入佇列,或發佈至訊息方塊 SQL 資料表,以等候訂閱者挑選並處理它們。 某些抵達的訊息會啟動新的訂閱者執行個體。 其他訊息抵達並經由相互關聯路由至正在執行訂閱者 (如相互關聯協調流程) 的等候執行個體。
為了讓相互關聯的協調流程得以繼續處理,必須將抵達的相互關聯訊息保持在未封鎖的狀態。 為便於進行,BizTalk 即使在高負載狀況下也會盡可能地確保能夠繼續接收訊息 (啟動中和相互關聯),讓等待相互關聯訊息的訂閱者可以完成程序,並騰出空間供更多程序執行。 這表示接收訊息的速度可能比處理訊息與從 MessageBox 資料庫移除訊息的速度要快,因此會建置訊息積存。 做為存放及轉寄的技術,BizTalk 提供此類的緩衝是理所當然的,不過,若接收速率一直都大於處理速率,就會導致一些問題,也就是導致大量積存。
BizTalk Server 所接收或建立的每則訊息都是永遠不變的。 也就是說,一旦接收或建立之後,其內容便無法變更。 此外,所接收的訊息可能會有多個訂閱者。 特定訊息的每個訂閱者都會參考該訊息相同且單一的複本。 當此方法將儲存空間最小化時,必須保留每則訊息的參考計數,而且必須定期維護,以避免參考計數為 0 的訊息。
若在 MessageBox 資料庫中可建置夠大的積存,該資料庫的維護程序 (針對每個 MessageBox 資料庫以一組 SQL 工作的型式實作) 會落後,而且若沒有機會更新的話,最後會造成如磁碟空間不足的問題。 為避免這種情況,BizTalk Server 提供節流機制,可在 MessageBox 資料庫積存到達某些使用者設定的層級時,降低訊息接收速率。 如需節流的詳細資訊,請參閱 透過主機節流優化資源使用量。
假設所有的活動與程序都提供持續性,則某段時間的主要持續性量值就是不允許無限制成長的積存。 換句話說,經過一段時間,在高低峰輸送量層級之間必須有一個平衡值,讓 MessageBox 資料庫能夠保持常數值與可管理的平均積存。 待處理專案的主要量值是多工緩衝處理資料表的深度,其公開為名為 BizTalk:Message Box:General Counters:Spool Size 的BizTalk Server效能計數器。 如需此效能計數器的詳細資訊,請參閱 訊息方塊效能計數器。
如需如何使用多工緩衝處理大小和其他計數器來判斷系統可承受的最大輸送量的詳細資訊,請參閱 測量最大永續性引擎輸送量。
建議
BizTalk Server會保存所有訊息和大部分的協調流程,而且可以保持未核取狀態,開發可能導致磁碟空間不足等問題的待處理專案訊息。 積存的主要量值為 MessageBox 多工緩衝處理表格的深度,以名稱如右的效能計數器公開:BizTalk:Message Box:General Counters:Spool Size。
考慮可持續的輸送量時,多工緩衝處理大小必須維持穩定的平均值一段時間。 也就是說,多工緩衝處理無法繼續無限制的成長。 在 測量永續性引擎輸送量上限中,會更詳細地討論此行為,以及判斷系統可維持的最大輸送量的方法,以利用多工緩衝處理大小和其他效能指標。