Apache Ignite

Apache Ignite は、分散キャッシュ(L2 キャッシングで使用するもの)と「データグリッド」機能用の非常に優れた機能セットを提供します。

ほとんどの人がニアキャッシュを利用したクライアント/サーバーモードを優先すると予想します。

クライアント/サーバーモード

client/server モードで Ignnite を使用できます。このモードでは、アプリケーションは Ignite クライアント を使用して Ignite クラスター(サーバー)と通信します。

このモードでは、Bean キャッシュデータがクラスター内のすべての Ignite サーバーに分割されて保存され、アプリケーションには保存されません。一部またはすべての Bean タイプに対して ニアキャッシュ を使用することを選択できます。これにより、パフォーマンスが向上しますが(ローカルデータがあるため)、アプリケーションのメモリフットプリントが増加します(キャッシュデータの一部を保持するため)。

サーバーモード

サーバーモードでは、アプリケーションは Ignite クラスターの完全なメンバーである Ignite サーバーインスタンス を開始します。つまり、データなどを保持します。

依存関係

ebean-ignite に依存関係を追加します。事前ビルド済みパッケージは maven にあります。選択する ebean-ignite アーティファクトのバージョンは、使用している ebean のバージョンと一致する必要があります。ebean が起動すると、ebean-ignite は自動的に L2 キャッシュ実装として登録されます。

L2 キャッシュの無効化

開発とテストでは、多くの場合、l2 キャッシュの使用を無効にすることが有効です。

プロパティ
## disable use of L2 cache (for dev / testing etc)
ebean.disableL2Cache=true

設定

Apache Ignite は IgniteConfiguration クラスで構成されます。このクラスのドキュメントは こちら で利用できます。このクラスは、2 つの方法で配信できます。XML 設定ファイル(この Bean の永続化されたバージョンを表します)を使用するか、このクラスを作成して Igniter に渡すことでプログラム的に行います。

Ignite 設定の詳細については、こちら から開始してください。

XML 設定

XML 経由で Ignite インスタンスを設定するには、永続化された状態の IgniteConfiguration Bean を表す XML ファイルを作成する必要があります。次に、このファイルを Ignite が予期する場所に配置する必要があります。

ドキュメントによると、Igniteが起動すると{IGNITE_HOME}/config/default-config.xml内の設定ファイルを探します。`IGNITE_HOME`環境変数を、設定ファイルが格納されているディレクトリを指すようにエクスポートできるはずです。

プログラムによる設定

IgniteConfigurationのインスタンスを作成して設定することで、Igniteをプログラムで構成できます。により設定します。

IgniteConfiguration configuration = ...;
serverConfig.setServiceObject("igniteConfiguration", configuration);

起動時に自動的に行うには、ServerConfigStartupを実装するクラスを作成して、Ebeanにモデルを探すディレクトリに配置します。

package models;

import io.ebean.config.ServerConfig;
import io.ebean.event.ServerConfigStartup;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;

import java.util.Arrays;

public class MyServerConfigStartup implements ServerConfigStartup {

    @Override
    public void onStart(ServerConfig serverConfig) {

        IgniteConfiguration igniteCfg = new IgniteConfiguration();
        igniteCfg.setClientMode(true);

        TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder();
        finder.setAddresses(Arrays.asList("172.30.1.1"));

        TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
        discoverySpi.setIpFinder(finder);

        igniteCfg.setDiscoverySpi(discoverySpi);
        serverConfig.putServiceObject("igniteConfiguration", igniteCfg);
    }
}

この設定インスタンスがEbeanで渡されると、Igniteインスタンスの設定に使用されます。そうでなければ、プロパティとavaje IgniteConfigBuilderが使用されます。

はじめに

  • ビーンを@Cacheで注釈付けします。
  • maven依存関係ebean-igniteを追加します。
  • 必要に応じて、ebean-ignite-config.xmlを追加します。
  • クライアント/サーバーモードには実行中のIgniteサーバーが必要です。