8 ネットワークI/O

Oracle Stream Analyticsでは、サーバーおよびクライアント・モードで様々なプロバイダを使用して、TCP/IPを介したネットワークI/Oがサポートされています。サーバーのconfig.xmlファイルで、SSLおよび非SSLネットワーク・アクセスのネットワークI/Oサービスを定義できます。

Oracle Stream Analyticsサーバーは、IPv4単独またはIPv4/IPv6デュアル・スタックで使用するための認証を受けています。IPv6の詳細は、http://www.ietf.org/rfc/rfc2460.txtのRFC 2460: Internet Protocol, Version 6 (IPv6)の仕様を参照してください。

jettyおよびweblogic-rmi-clientサーバー・サービスは、ネットワークI/O構成に依存します。jettyサービスはネットワークI/Oサーバー(netio)構成に依存し、weblogic-rmi-clientサービスはネットワークI/Oクライアント(netio-client)構成に依存します。

この章の内容は次のとおりです。

8.1 ネットワークI/Oプロバイダ

Oracle Stream Analyticsは、複数のネットワークI/Oプロバイダをサポートします。

表8-1 Oracle Stream AnalyticsのネットワークI/Oプロバイダ

provider-type SSL? 説明

non-blocking

いいえ

読取りおよび書込みに対して完全な非ブロックI/Oを提供します。接続インタフェースでの読取りまたは書込みへの各呼出しは、ブロックなしで即座に戻されます。基となる接続の準備ができていない場合、読取りまたは書込み呼出しはゼロを戻します。その時点で、呼び出しコードはNetIO APIのいずれかの通知メカニズムを使用して、接続の読取りまたは書込みの準備ができるまで待機する必要があります。非ブロック・プロバイダも非ブロックconnect呼出しをサポートできますが、この場合、リモート・サーバーへの接続の確立に長い時間がかかった(または確立に失敗した)ときは、スレッドがブロックされる必要がありません。

semi-blocking

いいえ

読取りの呼出しに対しては非ブロックI/Oを提供しますが、各書込み呼出しはデータがTCP/IPスタックに渡されるまでブロックされます。一部のプラットフォームは、完全な非ブロック・プロバイダに比べて高速な書込みブロック・プロバイダの実装を可能にしますが、拡張性は高いままです。

blocking

いいえ

それぞれの読取りおよび書込みの呼出しが完了するまでそれらをブロックします。読み取るデータがない場合は、データが存在するまで読取りがブロックされます。このプロバイダは、データを持つ各ネットワーク接続を待機するスレッドが存在する必要があるため、拡張性が低くなっています。このタイプのプロバイダを使用しないことをお薦めします。

native

いいえ

Oracle Stream AnalyticsによりNativeAsyncEngineが試行され、サポートされない場合。エラーが発生します。

NIO

はい

NIOEngineが常に使用されます。これはデフォルト・プロバイダ・タイプです。

次の例は、config.xmlファイルのnetio要素で、provider-type子要素を使用してプロバイダを指定する方法を示します。

<netio>
     <name>myNetio</name>
     <port>12345</port>
     <provider-type>non-blocking</provider-type>
</netio>

8.2 ネットワークI/Oサーバー(netio)の構成

サーバーとして機能し、受信接続をリスニングするために他のサービスによって使用されるネットワークI/Oサービスを定義できます。 また、「ネットワークI/Oクライアント(netio-client)の構成」で説明するとおり、クライアントのネットワークI/Oサービスを作成することもできます。

Oracle Stream Analyticsサーバーのconfig.xmlファイルのnetio要素を使用して、ネットワークI/Oサーバー・サービスを構成します。詳細は、次を参照してください。

ネットワークI/Oサーバーの構成

  1. Oracle Stream Analyticsサーバーのconfig.xmlファイルで、netio要素を作成します。
    <netio>
    </netio>
    
  2. このOracle Stream Analyticsサーバーでこのnetio要素を一意に識別するname要素を追加します。
    <netio>
         <name>MyNetIO</name>
    </netio>
    
  3. port要素を追加し、このnetioサービスが接続リクエストをリスニングする元となるTCP/IPポートを定義します。
    <netio>
         <name>MyNetIO</name>
         <port>9002</port>
    </netio>
    
  4. オプションで、provider-typeを指定します。
    <netio>
         <name>MyNetIO</name>
         <port>9002</port>
         <provider-type>NIO</provider-type>
    </netio>
    
  5. オプションで、他のnetio子要素を指定します。

8.3 ネットワークI/Oクライアント(netio-client)の構成

非ブロック・ネットワークI/Oの実行に使用するネットワークI/Oサービスを定義できますが、これはサーバーとしては機能せず、受信接続もリスニングしません。また、「ネットワークI/Oサーバー(netio)の構成」で説明するとおり、サーバーのネットワークI/Oサービスを作成することもできます。

Oracle Stream Analyticsサーバーのconfig.xmlファイルのnetio-client要素を使用して、ネットワークI/Oクライアント・サービスを構成します。

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

ネットワークI/Oクライアントを構成するには、次の手順を実行します。

  1. Oracle Stream Analyticsサーバーのconfig.xmlファイルで、netio-client要素を作成します。
    <netio-client>
    </netio-client>
    
  2. このOracle Stream Analyticsサーバーでこのnetio要素を一意に識別するname要素を追加します。
    <netio-client>
         <name>MyNetIOClient</name>
    </netio-client>
    
  3. オプションで、provider-typeを指定します。
    <netio-client>
         <name>MyNetIOClient</name>
         <provider-type>NIO</provider-type>
    </netio-client>
    
  4. オプションで、他のnetio-client子要素を指定します。