ヘッダーをスキップ
Oracle® Complex Event Processing開発者ガイド
11g リリース1 (11.1.1) for Eclipse
B61654-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

18 スケーラビリティについて

この章では、Oracle CEPアプリケーションを増加するイベント・ロードに従ってスケール可能にするために使用するOracle CEPコンポーネントとデザイン・パターンについて説明します。

特定のスケーラビリティ・オプションを実行する方法の詳細は、第19章「スケーラビリティの構成」を参照してください。

18.1 スケーラビリティ・オプション

Oracle CEPは、増加するイベント・ロードに従ってアプリケーションをスケールするためのオプションを提供します。

一般的に、イベントの到着時またはイベント処理ネットワーク(EPN)内で、またはその両方で入力イベント・ストリームを分割し、イベントの並列処理ができるようにアプリケーションを設計できます。

イベント処理順序のできるだけ早い段階でスケーラビリティと並列処理を実行する必要があります。たとえば、通常、アプリケーションが依存する低ボリュームイベント、高価値のイベントを抽出するために、高ボリュームと低ボリュームのイベントを並列処理します。

Oracle CEPは、18.2項「スケーラビリティ・コンポーネント」の説明に従って使用できる、様々なスケーラビリティ・コンポーネントを提供します。

18.1.1 スケーラビリティと高可用性

スケーラビリティは多くの場合、複数のサーバーへアプリケーションのデプロイが含まれているため、スケーラビリティのためにOracle CEPアプリケーションを設計するときに、高可用性のオプションも検討すると有利です。

入力ストリームの分割と並列処理は、イベント順序の保存とマルチスレッドの使用の管理などで、アプリケーションの設計を制限します。

高可用性オプションの詳細は、次の項を参照してください。

18.2 スケーラビリティ・コンポーネント

Oracle CEPでは、Oracle CEPアプリケーションのスケーラビリティを向上させるために使用する次のコンポーネントを提供します。

18.2.1 ActiveActiveGroupBean

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle CEPアプリケーションの受信JMSストリームを分割できます。

例18-1で示すように、ActiveActiveGroupBeanをEPNアセンブリ・ファイルに追加します。

例18-1 ActiveActiveGroupBean bean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

デフォルトでは、ActiveActiveGroupBeanは次の名前の通知グループを作成します。

ActiveActiveGroupBean_X

Xは文字列です。

実行時に、ActiveActiveGroupBeanは、Oracle CEPサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。

ActiveActiveGroupBean_\\w+

一致が見つかったら、その名前の通知グループを作成します。

オプションで、19.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」の説明に従って、自分のクラスタ・グループ・パターン一致を定義できます。

この項では次について説明します:

詳細は、次を参照してください:

18.2.1.1 高可用性なしのActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

ActiveActiveGroupBeanを使用して、高可用性に対して構成されていないOracle CEPアプリケーション内のセレクタによって、受信JMSイベント・ストリームを分割できます。

図18-1で示すように、マルチサーバー・ドメインを考慮してください。

図18-1 高可用性なしのOracle CEP ActiveActiveGroupBean

図18-1の説明が続きます
「図18-1 高可用性なしのOracle CEP ActiveActiveGroupBean」の説明

このスケーラビリティ・シナリオでは、各サーバー(ホスト1のActiveActiveGroupBean_group1、ホスト2のActiveActiveGroupBean_group2など)のOracle CEPサーバーconfig.xmlでクラスタ・グループを定義し、Oracle CEPアプリケーションにActiveActiveGroupBeanのインスタンスを追加して、これらのクラスタ・グループに基づく通知グループを定義します。

各通信グループは、異なるJMSセレクタにバインドされています。Oracle CEPアプリケーションにあるコンポーネント構成ファイルの構成は、例18-2で示すように、jms-adapterの構成と同じです。

例18-2 共通jms-adapterセレクタの定義

<jms-adapter>
    <message-selector>${CONDITION}</message-selector>
    <bindings>
        <group-binding group-id="ActiveActiveGroupBean_group1">
            <param id="CONDITION">acctid > 400</param>
        </group-binding>
        <group-binding group-id="ActiveActiveGroupBean_group2">
            <param id="CONDITION">acctid BETWEEN 301 AND 400</param>
        </group-binding>
        <group-binding group-id="ActiveActiveGroupBean_group3">
            <param id="CONDITION">acctid BETWEEN 201 AND 300</param>
        </group-binding>
        <group-binding group-id="ActiveActiveGroupBean_group4">
            <param id="CONDITION">acctid <= 200</param>
        </group-binding>
     </bindings>
</jms-adapter>

実行時に、各Oracle CEPサーバーにある各Oracle CEPアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。その後、Oracle CEPアプリケーション自体は、その通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックは分割されます。


注意:

App1の各インスタンス内で、18.2.2項「イベント・パーティショナ・チャネル」で説明したとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、19.2.1項「Oracle CEP高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

18.2.1.2 高可用性のあるActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

セレクタによる受信JMSイベント・ストリームの分割に加えて、ActiveActiveGroupBeanを使用して、単一の高可用性のある単位として2つ以上のOracle CEPサーバーを構成できます。

図18-2で示すように、Oracle CEP高可用性アプリケーションがデプロイされたマルチサーバー・ドメインを考慮してください。

図18-2 高可用性のあるOracle CEP ActiveActiveGroupBean

図18-2の説明が続きます
「図18-2 高可用性のあるOracle CEP ActiveActiveGroupBean」の説明

このシナリオでは、ホスト1およびホスト2に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group1)を作成し、ホスト3およびホスト4に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group2)を作成します。

実行時に、各Oracle CEPサーバーにある各Oracle CEPアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。ホスト1およびホスト2両方が1つの通知グループ(ActiveActiveGroupBean_group1)に属し、ホスト3およびホスト4両方が別の通信グループ(ActiveActiveGroupBean_group2)に属します。

各Oracle CEPアプリケーション自体は、通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックは分割されます。

2つ以上のOracle CEPサーバーが同じ通知グループに属する場合、ActiveActiveGroupBeanによって、各通信グループのプライマリ・サーバ-のみがイベントを出力するようにします。特定の通知グループ内でプライマリ・サーバーが停止した場合、Oracle CEP高可用性フェイルオーバーが発生し、その通知グループのいずれかのセカンダリ・サーバーが新しいプライマリ・サーバーとして宣言され、構成したOracle CEP高可用性のサービス品質に応じてイベントの出力を再開します。


注意:

App1の各インスタンス内で、18.2.2項「イベント・パーティショナ・チャネル」で説明したとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、19.2.2項「Oracle CEP高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

18.2.2 イベント・パーティショナ・チャネル

イベント・パーティショナは、図18-3に示すように、出力イベント・シンク間でチャネルのイベントを分割するメカニズムを提供します。

図18-3 イベント・パーティショナEPN

図18-3の説明が続きます
「図18-3 イベント・パーティショナEPN」の説明

イベント・パーティショナを使用するようにチャネルを構成した場合、受信イベントが到着するたびにチャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするかわりに、そのリスナーにイベントをディスパッチします。

このアーキテクチャでは、各リスナーは同一である必要があります。

イベント・パーティショナを使用するようにチャネルを構成する場合、次の制限事項を考慮します。

  • イベント・パーティショナは、パススルー・モードで構成したチャネルのみで使用できます。つまり、max-threadsチャネルの属性は0に設定する必要があります。

  • イベント・パーティショナでチャネルを構成した場合、バッチ処理はサポートされていません。

詳細は、19.1項「イベント・パーティショナ・チャネルでスケーラビリティを構成する方法」を参照してください。