Apache Ignite 2.9.0リリース-新機能

Apache Igniteは、ノードのクラスター全体で大量のデータを保存および分散処理するために設計された、オープンソースの高性能分散データベースです。Sberbankでは積極的に使用しており、この製品を開発するチームがあります。2020年10月23日、Apache Ignite2.9.0の新しいバージョンがリリースされました。Apache Ignite開発チーム全体を代表するこのリリースのマネージャーとして、主なイノベーションに関する情報を共有したいと思います。



  • スナップショット(バックアップ)
  • トレース
  • シンクライアントの新機能
  • クラスター動作モード「読み取り専用」
  • サンドボックスでカスタムコードを実行する
  • 透過的なデータ暗号化:マスターキーのローテーション
  • ユーザーのタスクとリクエストを中断するためのツール
  • プラットフォーム側キャッシング(.NET)
  • NATを介してクライアントノードをサーバーノードに接続する




スナップショット(バックアップ)



Ignite 2.9.0では、クラスター全体から、ディスクに保存されているすべてのキャッシュ(つまり、Ignite Native Persistenceモードで動作しているキャッシュ)のバックアップコピーを作成できるようになりましたスナップショットは、ユーザーの負荷がかかっているアクティブなクラスター上でオンラインで作成できます。これにより、すべてのクラスターデータの完全に一貫したコピーが作成されます。



次のいずれかの方法でバックアップの作成を開始できます。



  • コマンドラインユーティリティcontrol.shの使用:control.sh --snapshot create <snapshot name>;
  • JMX操作:MBean group="Snapshot", name=SnapshotMXBeanImpl, createSnapshot(<snapshot name>);
  • Javaを介したAPI :Ignite.snapshot().createSnapshot("<snapshot name>")


<snapshot name>スナップショットの一意の名前は どこにありますか。各ノード



のディレクトリwork/snapshots/<snapshot name>(デフォルト設定)でのスナップショットの形成が完了すると、スナップショットの開始時のこのノードのファイルストレージの構造が再作成されます。生成されたファイル構造は、将来、ノードデータのファイルをスナップショットディレクトリのファイルに置き換えることにより、バックアップコピーから復元するために使用できます。



スナップショットの操作に関する詳細については、公式ドキュメントを参照してください



トレース



Ignite監視システムは継続的に改善されており、リリース2.9の重要な革新の1つはトレースサブシステムです。トレースを使用すると、開発段階でのデバッグとインシデントの分析の両方に役立つ情報を取得できます。トレースの助けを借りて、クラスターで実行されているさまざまなタスクの進行状況に関する分散された低レベルの情報を収集し、この情報を使用してパフォーマンスの問題を診断することが可能になりました。システム内のタスクのパスを示すトレースはツリーの形式で形成され、その次の各レベルは前のレベルよりも詳細な情報を提供します。



Ignite 2.9.0では、トレースは次の内部コンポーネントを対象としています。



  • 発見メッセージ;
  • コミュニケーションメッセージ
  • 交換プロセス;
  • トランザクション。


トレースを表示するには、トレースを外部システムにエクスポートする必要があります。これらの目的のために、IgniteはOpenCensusライブラリを使用します。このライブラリは、すぐにさまざまなシステム(Zipkinなど)に複数のエクスポーターを提供します。



上記のコンポーネントの1つ以上をスコープとして設定し、サンプリング頻度を設定することで、エクスポートされる情報の量を制限できます(設定は実行時に変更できます)。



トレースの詳細については、公式ドキュメントをご覧ください



シンクライアントの新機能



javaおよび.NETシンクライアントには、以前はシッククライアントでのみ使用可能だったIgnite機能が含まれるようになりました。



使用する能力:



  • cluster API & cluster group API ( .NET java):
    • ;
    • ;
    • , ;
    • ;
  • compute API ( .NET java):
    • . , p2p class loader , class-path ( );
  • Service Grid ( java):
    • Ignite. compute API, , .


さらに、.NETシンクライアントは、パーティション認識機能と組み合わせて有効になる自動サーバーノード検出機能を受け取りました。 「パーティション認識」を使用する場合、クライアントは、可能であれば、この要求のデータのメインノードであるノードに要求を送信するために、1つのサーバーノードではなく、一度に複数のサーバーノードとの接続を確立します。同時に、クラスターノードの自動検出では、クライアント構成内のクラスターノードのすべてのアドレスを一覧表示することはできません。クライアントは、構成にリストされているアドレスを使用して、少なくとも1つのライブホストに接続できれば十分です。クライアントは、クラスターから残りのノードのアドレスを受け取ります。



新機能の使用方法の詳細については、javaシンクライアントおよび.NETシンクライアントのドキュメントの対応するサブセクションを参照してください



クラスター動作モード「読み取り専用」



2.9.0のリリース以前は、Igniteにはクラスターの2つの状態しかありませんでした。クラスターは非アクティブ(ノードはトポロジに収集されましたが、キャッシュを使用するアクションは禁止されました)またはアクティブ(アクションは許可されました)のいずれかでした。リリース2.9.0では、新しいクラスター状態(「読み取り専用」)が追加されました。メンテナンス作業(データの整合性のチェックなど)を実行する場合に役立ちます。



クラスターの状態に関する詳細情報は、公式ドキュメントにあります



サンドボックスでカスタムコードを実行する



Igniteは、サーバーノードでカスタムコード(計算タスク、イベントリスナー、さまざまなフィルターなど)を実行できます。このようなコードはIgniteシステムコードと同じ権限で実行され、JavaAPI全体を制限なく利用できました。安全でない可能性のあるコードは、クラスターのパフォーマンスを混乱させる可能性があります(たとえば、Igniteデータファイルの削除、JVMの終了など)。



バージョン2.9.0では、このコードの実行を要求したアクセスサブジェクト(クライアントノードなど)に明示的に割り当てられた権限を使用して、「サンドボックス」でこのようなコードを実行できるようになりました。アクセサに割り当てられた権限は、java.security.Permission何らかのアクションを実行する前にjavaによってチェックされるクラスオブジェクトのコレクションです



Ignite Sandboxを機能させるには、次の2つのコンポーネントをインストールして有効にする必要があります。



  • Javaセキュリティマネージャー。システムJavaライブラリを呼び出すときにサブジェクトを承認する責任があります。デフォルトでは無効になっています。
  • セキュリティプロセッサに点火します。アクセスサブジェクトの認証を担当します。Igniteの「箱から出して」は提供されていません。独立した実装と、プラグインを使用した接続が必要です。


Ignite Sandboxの詳細については、公式ドキュメントをご覧ください



透過的なデータ暗号化:マスターキーのローテーション



透過的データ暗号化(TDE)は、ディスク上のデータをクリアテキストで保存しないようにする機能です。たとえば、PCI DSSデータセキュリティ認証では、DBMSを使用してディスク上のデータを暗号化する必要があります。Apache Igniteでは、基本的なTDE機能(フェーズ1)がバージョン2.7で実装されました。現在のバージョンでは、TDEの第2フェーズであるマスターキーのローテーションが実装されています(ディスクに保存されているキャッシュキーはマスターキーで暗号化されます)。TDE(キャッシュキーローテーション)の第3フェーズは、次のリリースで実装されます。



マスターキーのローテーションの詳細については、公式ドキュメントをご覧ください



ユーザーのタスクとリクエストを中断するためのツール



以前のバージョンのIgniteには、管理者によるユーザータスクと要求を中断するための一貫したメカニズムがありませんでした。ユーザーには、タスクとリクエストをキャンセルするオプションがありました。管理者は、互いに相関関係のない個別のツールを利用できました(たとえば、リスト、フィルター、JMXまたはcontrol.shユーティリティを使用してトランザクションを中止し、SQLコマンドを使用してSQLクエリを「強制終了」することができましたKILL QUERY)。現在のリリースでは、管理者は中断することができます



  • さまざまなタイプのクエリ(SQL、スキャン、連続)、
  • トランザクション、
  • 計算タスク、
  • Igniteサービス、


統一されたインターフェースを使用します。



これらすべての種類のタスクと要求は、次のいずれかの方法で中断できます。



  • control.shユーティリティ。
  • JMX経由;
  • SQLコマンド。


ユーザーのタスクとリクエストの中断の詳細については、公式ドキュメントを参照してください



プラットフォーム側キャッシング(.NET)



Ignite.NETでは、.NETプラットフォームの側面に追加のキャッシングレイヤーを使用する機能が追加されました。この層の.NETメモリ内のデータは逆シリアル化された形式で保存されるため、追加のJNI呼び出しや逆シリアル化なしで、すでにキャッシュされているデータを読み取ることができます。これにより、非トランザクション読み取りの速度が大幅に向上します。



プラットフォーム側のキャッシュの詳細については、公式ドキュメントを参照してください



NATを介してクライアントノードをサーバーノードに接続する



Ignite 2.9.0では、「ファット」クライアントとサーバー間の接続がクライアント側でのみ開始されるネットワーク相互作用モードが登場しました(サーバーはクライアントへの接続を開始しませんが、クライアントとの直接相互作用が必要な場合は、すでに確立されている方法で接続するようにクライアントに要求します他のサーバーへのクライアント接続)。この動作モードでは、NATがクライアントノードとサーバーノードの間に配置されているクラスター構成を使用できます(たとえば、クライアントが仮想環境で実行されている場合)。



NATを介したクライアントノードの接続に関する詳細については、公式ドキュメントを参照してください



結論



上記は、Apache Ignite2.9.0リリースでの最も重要な変更点です。ただし、変更のリストはそれらに限定されません。いつものように、私たちは多くのバグを修正し、他の多くの有用な改善を行いました。変更の完全なリストは、リリースノートにあります



All Articles