程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> 通過WebSphere Process Server和WebSphere JDBC Adapter

通過WebSphere Process Server和WebSphere JDBC Adapter

編輯:WebSphere

通過WebSphere Process Server和WebSphere JDBC Adapter確保事件交付的高可用性和性能

高可用性和性能在面向服務架構(SOA)集成解決方案中發揮著重要的作用。一種常見的解決方案是使用 WebSphere® Process Server 和 WebSphere JDBC Adapter 來集成數據庫服務器。目前,當 WebSphere Process Server 與 WebSphere JDBC Adapter 協調工作時,在交付事件的過程中維持高可用性、檢查事件狀態以及執行恢復操作都是有必要的。同時,調優事件交付的性能以便提高效率也是必不可少的。

簡介

高可用性和性能在 SOA 集成解決方案中發揮著日益重要的作用。WebSphere Process Server 和 WebSphere Adapter 是用於實現成功 SOA 集成解決方案的兩個重要產品。它們通常可以聯手實現各種企業應用程序的集成,比如 JDBC、SAP®、Siebel® 和 PeopleSoft® 等。WebSphere JDBC Adapter 是眾多 WebSphere Adapter 中的一種,它通過 SOA 集成解決方案提供高可用性和性能,同時幫助客戶建立高可用性和性能業務應用程序環境。

常見場景

通常來說,客戶大多在 WebSphere Process Server 的集群環境中運行他們的業務流程。集群環境提供了以下優點:

工作負載均衡

應用程序的處理能力

應用程序可用性

可維護性

靈活性

有關詳細信息,請參閱相應的 IBM® 信息中心。在集群環境中,您往往對可用性和性能有很高的要求。舉例來說,這個場景取自移動行業。在對數據庫執行某項操作(插入、更新或刪除)之後會觸發 WebSphere JDBC Adapter 入站服務,該服務將發送一個事件給 BPEL 組件並啟動一個 “sendSMSProcess” BPEL 流程,如圖 1 所示。

圖 1. 發送 SMS 場景

在圖 1 中,WebSphere JDBC 適配器入站服務可以監聽並捕獲數據庫中的表的一些更改,生成事件並將事件發送給 BPEL 服務。然後,BPEL 服務將啟動一系列操作並完成 “SendSMSProcess” 活動。在此過程中,確保事件交付的高可用性和性能是非常重要的。

WebSphere Adapter 和 WebSphere JDBC Adapter

WebSphere Adapter 產品提供了一系列符合 JCA 1.5 規范的適配器,用於與各種企業信息系統(EIS)通信。圖 2 展示了 WebSphere Adapter 系列。

圖 2. IBM Websphere Adapter 系列

WebSphere JDBC Adapter 是 IBM WebSphere Adapter 系列中的一個產品。它主要專注於在集成應用程序上與各種不同的數據庫交換信息。通過使用適配器,應用程序可以向數據庫發送請求,以及從數據庫接收事件,同時不需要編寫 SQL 代碼。由於使用了支持 JDBC 2.0 及更高版本規范的 Java™ Database Connectivity (JDBC) 驅動程序,適配器可以支持任何數據庫服務器。這些服務器的例子包括 IBM DB®、Oracle®、Microsoft® SQL Server、Sybase®、Derby® 和 Informix®。適配器將使用業務對象在應用程序與數據庫之間交換數據,因此應用程序不需要使用 JDBC 應用程序編程接口 (API)。業務對象是存放應用程序數據的容器,這些數據用於表示業務功能或元素,比如數據庫表或 SQL 查詢的結果。適配器可以理解應用程序提供的數據格式、處理數據、執行操作,並使用該格式發回結果。圖 3 顯示了 WebSphere JDBC Adapter 的概述。

圖 3. IBM WebSphere JDBC Adapter

WebSphere JDBC Adapter 的入站機制

WebSphere JDBC Adapter 可以確保在入站服務中處理事件交付時的高可用性。在介紹如何確保高可用性之前,我們首先將探究 WebSphere JDBC Adapter 的入站機制。這將幫助您更好地理解高可用性的實現。圖 4 提供了入站處理流的概述。

圖 4. WebSphere JDBC Adapter 的入站機制

數據庫應用程序可以更改數據庫中的表。更改會造成觸發器或其他自動機制使用與更改相關的信息更新事件庫。適配器會定期輪詢事件庫,檢索並處理事件,然後將它們發送給模塊(模塊即在 WebSphere Process Server 或 WebSphere Enterprise Service Bus 中運行的應用程序一部分)的導出。當數據庫中的表發生更改時,會在稱為事件庫(event store)的數據庫表中插入適當的事件,以及相關信息,比如鍵值。要捕獲更改後的數據,您可以為各表配備一些觸發器,或者使用其他方法,比如為 Oracle 數據庫提供的 Oracle Change Data Capture。適配器將輪詢事件庫並檢索一組事件。可以根據業務對象類型、時間戳和連接器 ID 來篩選事件。適配器將使用每個事件創建業務圖或業務對象,其中包含由該事件更改的業務對象。然後,將業務對象或業務圖分發到被配置為可接收具體業務對象的導出中。

確保事件交付的高可用性

WebSphere JDBC Adapter 如何確保事件沒有丟失且沒有重復交付?所有入站服務事件都存儲在以下三個位置:

數據庫服務器中的 “WBIA_JDBC_EventStore” 表,如圖 5 所示。

圖 5. 入站服務中的 Event Store 表

表中存儲了待交付的事件以及失敗的交付事件。待交付的所有事件都在事件庫表的 “Event_Status” 列中被標記為 “0”。交付失敗的事件將在事件庫表的 “Event_Status” 列中標記為 “-1”。這些失敗的事件稍後可能會再次交付。當一些事件中的 “Event_Status” 值從 “-1” 變更為 “0” 時,該事件將立即交付。為了保證事件只被交付一次,WebSphere JDBC Adapter 在企業服務發現過程中提供了一個 “assuredDeliveryOnce” 屬性(如圖 6 所示)。選中該屬性後,WebSphere JDBC Adapter 只會交付一次事件,並且沒有遺失和重復交付的事件。

圖 6. AssuredDeliveryOnce 屬性

SCA System Bus 的隊列如圖 7 所示。

圖 7. 存儲事件的隊列

圖 7 顯示交付的所有事件都存儲在 SCA 系統總線的隊列中。這些事件仍然在交付過程中,並且尚未抵達事件的接收者。成功交付事件之後,它們將從隊列中消失。您可以進入隊列檢查有多少事件正在交付過程中。

“失敗事件管理器” 應用程序如圖 8 所示。當 WebSphere JDBC Adapter 向 SCA 系統總線中的隊列交付事件時,由於意外因素而可能無法將事件交付給事件接收者。圖 8 所示的所有這些失敗事件都存儲在 “失敗事件管理器” 應用程序中。

圖 8. 存儲失敗事件的位置

在 WebSphere Process Server 管理控制台中,打開失敗事件管理器(Integration Applications -> Failed Event Manager),然後選擇 Get all 按鈕。它將顯示所有失敗事件。所有失敗事件稍後都有再次交付的機會。要交付失敗事件,選擇要重新提交的失敗事件並按下 Resubmit 按鈕。這將重新處理這些事件並交付給事件接收者。

根據上述三個存儲事件的位置,只有兩個地方的失敗事件可以恢復。它們分別是 “WBIA_JDBC_EventStore” 表和 “失敗事件管理器” 應用程序。當您發現一些無法抵達事件接收者的事件時,最好是在這兩個位置執行恢復操作並重新提交事件交付。

確保事件交付的高性能

為了確保高性能,WebSphere JDBC 適配器提供了一些不同的選項。您可以選擇最適合的選項來滿足具體的業務需求。我們來看以下選項:

當某入站服務關聯到目標組件時,可以看到如圖 9 所示的兩個選項,即 sync 和 async。

圖 9. 交互方式

“Sync” 表示入站服務將以同步的方式調用目標組件。在入站服務繼續下一項操作之前,它始終會等待目標組件的應答。“Async” 表示入站服務會繼續執行,而不等待目標組件的應答。稍後,入站服務在獲得目標組件的通知之後將處理應答。如果不要求使用同步調用,那麼在使用 “async” 方法後將獲得更高的性能。

在交付事件時,可以使用三種替代方案:Ordered、UnOrdered 和 OrderedByKey,如圖 10 所示。

圖 10. 交付類型

在 “Ordered” 方法中,事件將按順序交付。在一些情況下,需要滿足按順序處理事件的特定業務需求,並且這樣可以保護您的邏輯序列。

在 “UnOrdered” 方法中,事件將以並行方式交付,並且無法保證事件序列。這樣,一個事件將生成一個事件交付線程,因此許多線程將同時運行。它可以顯著改善事件交付的性能。因此,這種方式更加適合需要高性能的場景。

在 “OrderedByKey” 方法中,事件在一些特殊情況中也會采用並行方式交付。首先,根據業務對象中的主鍵將事件劃分到一些分組中。然後,主鍵相同的事件將位於相同分組中,並且它們將按順序交付。但是,不同分組中的事件將采用並行方式交付。這是因為主鍵相同的分組發起一個事件交付線程。在一些特殊的情況下,這種方法可以同時滿足事件交付序列和性能的需求。

在這個移動行業的場景中,我們使用 “Unordered” 方法交付事件,因為我們要求事件交付具有高性能,而不在乎事件交付序列。

在集群環境中部署場景

如何將此場景部署到集群環境中呢?首先,您需要將 JDBC 適配器部署到集群環境的每一個節點中。舉例來說,集群環境有兩個節點:node1 和 node2。您需要將 JDBC 適配器單獨部署到 node1 和 node2 中。其次,您需要在集群環境中創建一個 JDBC 適配器,如圖 11 所示。

圖 11. 在集群環境中創建一個 JDBC 適配器

在集群環境中部署好新 JDBC 適配器之後,您需要為入站服務創建一個新的激活規范。

圖 12. 為入站服務創建激活規范

然後,您需要在集群環境中為入站服務創建一個新的連接工廠,如圖 13 所示。

圖 13. 為入站服務創建一個連接工廠

最後,您可以根據具體需要在資源適配器、激活規范和連接工廠中配置一些自定義屬性。

結束語

總的來說,WebSphere JDBC Adapter 提供了一個 “assuredDeliveryOnce” 選項來防止交付事件遺失或重復。此外,WebSphere JDBC Adapter 允許在兩個位置恢復所有的失敗事件。WebSphere JDBC Adapter 還提供了一些替代方案來提高事件交付的性能。通過使用這些方法,WebSphere JDBC Adapter 將確保事件交付在入站服務中的高可用性和性能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved