Sun Java System Application Server 9.1 部署規劃指南

叢集中的 IIOP 負載平衡

透過 IIOP 負載平衡,可將 IIOP 用戶端請求分散至不同的伺服器實例或名稱伺服器中。其目的為在整個叢集上平均分散負載,從而提供可延伸性。IIOP 負載平衡在 Sun Java System Application 中結合 EJB 叢集與可用性功能,不僅提供負載平衡,還提供 EJB 容錯移轉。

當用戶端執行 JNDI 物件查找時,命名服務會建立與特定伺服器實例相關聯的 InitialContext (IC) 物件。從那時起,使用該 IC 物件進行的所有查找請求均會傳送至相同的伺服器實例。使用該 InitialContext 查找的所有 EJBHome 物件均會在相同的目標伺服器上託管。之後取得的所有 Bean 參照也會建立在相同的目標主機上。由於建立 InitialContext 物件時,所有用戶端會隨機建立即時目標伺服器的清單,因此,此作業可有效地提供負載平衡。如果目標伺服器實例當機,則查找或 EJB 方法呼叫將容錯移轉至其他伺服器實例。

例如,如此圖所述,ic1、ic2 與 ic3 是使用 Client2 的程式碼所建立的三個不同的 InitialContext 實例。這些實例會發行至叢集中的三個伺服器實例。接著,此用戶端所建立的 Enterprise JavaBeans 會分配至此三個實例。Client1 僅建立一個 InitialContext 物件,且來自此用戶端的 Bean 參照僅會在伺服器實例 1 上。若伺服器實例 2 當機,ic2 上的查找請求會容錯移轉至其他伺服器實例 (不一定是伺服器實例 3)。任何對伺服器實例 2 上先前代管之 Bean 的 Bean 方法呼叫,也會在安全無虞的前提下自動重新導向至其他實例 。當查找容錯移轉自動化時,Enterprise JavaBeans 模組僅會在安全無虞的前提下重試方法呼叫。

IIOP 負載平衡與容錯移轉不需設定即可執行。在部署應用程式期間,無需特殊的步驟。對叢集增加新實例或從叢集中刪除實例,將不會更新該叢集的現有用戶端檢視。您必須在用戶端手動更新端點清單。