Liberty 上的「非同步呼叫 API」

利用「非同步呼叫 API」,根據應用程式階段作業 ID,將需要在「階段作業起始通訊協定 (SIP)」應用程式階段作業中處理的事件,傳送到叢集中的任何伺服器。

「非同步呼叫 API」亦稱為非同步工作分派器,可利用相關的應用程式階段作業 ID,將需要在 SIP 應用程式階段作業的環境定義中處理的事件,傳送到叢集中的任何伺服器。當事件導致另一部伺服器上的 SIP 階段作業狀態變更時,通常會觸發這些傳送動作。非同步工作分派器會將事件作業傳送到要執行的正確伺服器。

在 Liberty 上,所有相關的 SIP 訊息會傳遞給叢集中的相同伺服器,階段作業一律位於相同的 SIP 儲存器中。為了防止出現同步性問題和鎖定,無法同步(亦即,在不同的執行緒或處理程序中)處理相同應用程式階段作業中的作業,而這限制了某些事件類型的處理。

如需更深入的 SIP 階段作業和 SIP 應用程式階段作業資訊,請參閱 Java™ 規格要求 (JSR) 289 第 6 節。

實作「非同步呼叫 API」,可解決下列兩種情況。
  1. 相同 SIP 應用程式階段作業的兩個要求在兩個不同的執行緒上同步執行。

    舉例來說,使用訊息驅動 Bean (MDB) 的 Java Platform Enterprise Edition 應用程式可以擷取事件,以便在特定 SIP 應用程式階段作業中傳送 SIP 訊息。同時,SIP 儲存器在連接相同應用程式階段作業的另一個階段作業中,接收送入的 SIP 訊息,並在不同的執行緒中處理該訊息。需要將階段作業的存取權同步化,以免發生競用情況,並確保所有的階段作業屬性都已同步。如果要採用鎖定機制,在此情況下將不會起作用,因為 SIP 應用程式階段作業可能含有多個 SIP 階段作業。

  2. 沒有特定 SIP 應用程式階段作業的伺服器收到要求,並透過非 SIP 通訊協定,在該階段作業的環境定義中傳送訊息。

    舉例來說,起始 SIP 對話之 Web 服務所在的伺服器,可能有別於擁有其必用之 SIP 應用程式階段作業的伺服器。

「非同步呼叫 API」可根據 SIP 應用程式階段作業 ID,確保特定的應用程式碼是在正確伺服器與正確執行緒上執行。

「非同步呼叫 API」提供的優點如下:
  1. 不會有超過兩部的伺服器涉及非同步呼叫處理程序: 其中一部是擷取工作作業的伺服器,另一部是目標伺服器,負責處理該作業的 SIP 應用程式階段作業,以及該作業所傳送至的目標 SIP 應用程式階段作業。
  2. 非同步呼叫容許以安全執行緒方式運作。此方法可確保只會有一個執行緒處理 SIP 應用程式階段作業的相關訊息,因此您不需將階段作業的存取權同步化。
  3. 非同步呼叫提供可調式解決方案,因此即使新增多部伺服器到叢集,也不會影響效能。
  4. 必要時只會使用跨伺服器呼叫,而這可提升效能。

指示主題類型的圖示 概念主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_sip_asynchinvo_api
檔名:cwlp_sip_asynchinvo_api.html