Advanced Tech Night No.05


      単なるキャッシュじゃないよ!?
      データグリッドプラットフォーム

   Infinispanの紹介
                                       2012/09/20
                            Acroquest Technology
                                         束野 仁政
自己紹介

 束野 仁政(つかの さとゆき)
 Acroquest Technology株式会社
   @snuffkin
   もやっています。フレンディングよろしく!
   satoyuki

 これまで経験した主な業務は、フレームワーク/プラットフォーム開発。
  →基盤の開発に興味あります。
 HadoopやInfinispan、Nettyを利用するプロジェクトを経験。
  →ドキュメント少ない?OSSなら、ソースを読めばいいじゃない。
 社内勉強会でCEPやMessagePackの解説を担当。
  →流行りもの好き。

                                       1
                 Advanced Tech Night
はじめに

「KVS」(Key-Value Store)という単語を
聞いたことがある人?


「NoSQL」という単語を聞いたことがある人?



「Data Grid」という単語を聞いたことがある人?


                                     2
               Advanced Tech Night
はじめに

Data Gridとは?


正確性に目をつむると、

         高機能なKVS
ただし、 Infinispanは単なるKVSではない。

     Data Grid Platform
                                     3
               Advanced Tech Night
目次
1. Infinispanとは?
  ① Infinispanプロフィール
  ② Data Gridとは?
2. Infinispanの使い方~KVS編~
  ① 動作モードの分類
  ② プロセスの関係による分類
      • Client-Server modeで利用できるプロトコル
  ③ データ保持方式による分類
3. Infinispanの使い方~Data Grid編~
  ①   Cache Store
  ②   Distributed Executors
  ③   MapReduce
  ④   Query API
  ⑤   Grid File System
4. まとめ
                                                    4
                              Advanced Tech Night
第1章
Infinispanとは?

                           5
     Advanced Tech Night
Infinispanプロフィール

1. JBossファミリーの(In-Memory) Data Grid
   Platform
2. 公式サイト
   http://www.jboss.org/infinispan.html
3. JavaとScalaで記述されたOSS
4. ライセンスはLGPL v2.1
5. 主なコミッタはRed Hat社に所属
6. 2012年8月、ようやく本が出版
   「Infinispan Data Grid Platform」
                                          6
                  Advanced Tech Night
Data Gridとは?(1/5)

Data Gridに求められること
                                             分散システム
1. extreme scalability
   サーバ増加により、線形にスケールアウトできる
                                             分散システム
2. high availability
   障害が発生しづらい。発生時も素早く復旧できる
3. elastic data                               NoSQL

   様々な形式のデータを扱うことができる
4. support for compute grids                 Data Grid

   複数のサーバが結びつき、全体でひとつの処理を実行できる



                                                         7
                       Advanced Tech Night
Data Gridとは?(2/5)

Data Gridとは?(概ねこんな認識)
  ① サーバ分散による高速データアクセス
    →線形にスケールアウト
  ② 様々なデータを扱える
    →Infinispanの場合は、Javaオブジェクト
  ③ Jobを各サーバで分散実行可能
    →各サーバに処理を配布
    →ローカルデータにアクセスすることで高速化
    →MapReduce等


さらに、InfinispanはIn-Memory Data Grid

                                       8
                 Advanced Tech Night
Data Gridとは?(3/5)

Data Gridの主な適用箇所
 ① Webシステムにおけるセッション情報の保持
                                            複数サーバで
              Infinispan                  セッション情報を共有
          Web/AP
          サーバ


              Infinispan
          Web/AP
                                                 RDBMS
          サーバ


              Infinispan
          Web/AP
          サーバ


                                                         9
                    Advanced Tech Night
Data Gridとは?(4/5)

Data Gridの主な適用箇所
 ② DBのキャッシュ(low latencyでデータアクセス)
                                         DBのキャッシュを分散保持し
                                          大量データに高速アクセス
          Web/AP
          サーバ
                                  Infinispan



          Web/AP
                                  Infinispan       RDBMS
          サーバ



                                  Infinispan
          Web/AP
          サーバ


                                                           10
                   Advanced Tech Night
Data Gridとは?(5/5)

Data Gridの主な適用箇所
 ③ 分散実行
      複数サーバでの実行により
     並列性を増し、高速処理を実現                         Infinispan

                                   サーバ



                                            Infinispan

        Job実行                      サーバ



                                            Infinispan

                                   サーバ



                                                         11
                      Advanced Tech Night
第2章
Infinispanの使い方
     ~KVS編~
                           12
     Advanced Tech Night
プロセスの関係による分類
No. 機能                   概要                         メリット/デメリット
1   Embedded mode        ユーザが開発するアプリ                ○AppからInfinispanを
                         ケーション(以下、App)と             start/stopすることが可能
                         同一JVMで動作                   ○Listener等、機能が豊富
2   Client-Server mode   Appと別JVMで動作                ○様々なプロトコルが利用可
                                                    ○外部プロセスから利用可
                                                    ○Appと独立して動作可能

データ保持方式による分類
No. 機能                   概要                         メリット/デメリット
1   Replicated mode      各データを全てのサーバ                ○読み込みが高速
                         が保持する                      ×書き込みに時間がかかる
2   Distributed mode     各データを一部のサーバ ○書き込みが高速
                         が保持する       ×読み込みに時間がかかる

                                                                   13
                              Advanced Tech Night
プロセスの関係による分類(1/4)

1. Embedded mode
 ① ユーザが開発するAppと
   同一JVMでInfinispanを
   動作させる
 ② AppとInfinispanとの関係は
   1対1となる




              図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用
              http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql

                                                                                       14
                  Advanced Tech Night
プロセスの関係による分類(2/4)

2. Client-Server mode
  ① ユーザが開発するAppと別JVMで
    Infinispanを動作させる
  ② AppのJVMから複数のServerに
    アクセスする
  ③ Appが個々のサーバを意識しなくて
    良いように、Clientライブラリ内で
    隠ぺい可能
    (Hod Rod)

                図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用
                http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql

                                                                                         15
                    Advanced Tech Night
プロセスの関係による分類(3/4)
【Embedded mode】の実装例
1. Cacheにデータを格納・取得・削除する例
2. デフォルト設定で良いなら、これだけで利用可能

public static void main(String[] args) {
  // cacheを取得
  EmbeddedCacheManager manager = new DefaultCacheManager();
  Cache<String, String> cache = manager.getCache(“CacheName”);

    // cacheにデータを格納
    cache.put(“key”, “value”);

    // cacheからデータを取得
    cache.get(“key”);

    // cacheからデータを削除
    cache.remove(“key”);
}


                                                                 16
                                 Advanced Tech Night
プロセスの関係による分類(4/4)
【Client-Server mode】の実装例(Hot Rod)
1. 基本的なメソッドはEmbedded modeと同じ
2. サポートしているメソッドに違いあり

public static void main(String[] args) {
  // cacheを取得
  RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223”);
  Cache<String, String> cache = manager.getCache(“CacheName”);

    // cacheにデータを格納
    cache.put(“key”, “value”);

    // cacheからデータを取得
    cache.get(“key”);

    // cacheからデータを削除
    cache.remove(“key”);
}


                                                                       17
                                 Advanced Tech Night
Client-Server modeで利用できるプロトコル(1/4)

【REST】
 ① URLで操作対象のキーを指定
   http://localhost:8080/infinispan/rest/CacheNam
   e/key
 ② HTTPメソッドでInfinispanのメソッドを指定
    No.   HTTPメソッド Infinispanメソッド               備考
    1     PUT       put                         BODYにputする値を設定
    2     GET       get
    3     DELETE    remove

 ③ HTTPロードバランサで通信先サーバを選択

                                                                 18
                          Advanced Tech Night
Client-Server modeで利用できるプロトコル(2/4)

【Memcached】
  ① KVSで利用される汎用的なプロトコル
  ② telnetでアクセスして、コマンドラインでCache操作
    可能
// cacheにデータを格納
> set key value

// cacheからデータを取得
> get key
value

// cacheからデータを削除
> delete key


  ③ Client Appで通信先サーバを選択する実装が必要
                                         19
                   Advanced Tech Night
Client-Server modeで利用できるプロトコル(3/4)

【Hot Rod】
    ① Infinispan固有のプロトコル
    ② Java, C#, Python, Rubyのクライアント有
    ③ 通信先サーバをAppから隠ぺい~Smart Routing
public static void main(String[] args) {
    // cacheを取得
    RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223,192.168.0.2:11223”);
    Cache<String, String> cache = manager.getCache(“CacheName”);

    // cacheにデータを格納
    cache.put(“key”, “value”);

    // cacheからデータを取得
    cache.get(“key”);

    // cacheからデータを削除
    cache.remove(“key”);
}


                                                                                              20
                                          Advanced Tech Night
Client-Server modeで利用できるプロトコル(4/4)

 各プロトコルの特徴
No. プロトコル       プロトコルの     利用可能な               通信先サーバの選択
                汎用性        データ型
1   REST          ○        △ String            △ ロードバランサ
2   Memcached     ○        △ String            × App側で実装
3   Hot Rod       ×        ○ 任意                ○ Smart Routing(自動選択)
     ※正式サポートしていないが、WebSocketのインタフェース有


 分散環境でClient-Server modeを使う場合は
 基本的にHot Rodを選択することに
 なるのでは?
                                                                  21
                         Advanced Tech Night
データ保持方式による分類(1/2)

1. Replicated mode
  ① 各データを全ての                             putしたデータは
                                       全てのサーバに送信される
    サーバが保持する
  ② 読み込みが高速                                                Infinispan

  ③ 書き込みに時間がか
    かる                                 ①put
                                                            ②replica


                              App             Infinispan

                                                            ②replica




                                                           Infinispan




                                                                       22
                 Advanced Tech Night
データ保持方式による分類(2/2)

2. Distributed mode
  ① 各データを一部の                       putしたデータは
                                一部のサーバのみに送信される
    サーバが保持する
  ② 書き込みが高速                                                Infinispan

  ③ 読み込みに時間が
    かかる                                ①put
                                                            ②replica


                              App             Infinispan



                                                replica
                                              されないサーバ
                                                           Infinispan




                                                                       23
                 Advanced Tech Night
第3章
Infinispanの使い方
 ~Data Grid編~
                           24
     Advanced Tech Night
InfinispanのData Gridとしての主な機能
No. 機能                      概要                         メリット/デメリット
1   Cache Store             データ永続化                     Infinispanが終了しても、
                                                       データが失われない
2   Distributed Executors   分散実行機能                     データが存在するサーバ
                            一般的なタスクを実行                 上で高速・並列処理
3   MapReduce               分散実行機能                     データが存在するサーバ
                            MapReduce処理を実行             上で高速・並列処理
4   Query API               全文検索エンジン機能                 複数サーバで高速に検
                                                       索
5   Grid File System        メモリ上のファイルシステム              ・ファイルアクセスが高速
                                                       ・標準機能で冗長化




                                                                    25
                                 Advanced Tech Night
Data Gridとしての機能(1/5)

1. Cache Store
  ① データの永続化
  ② 永続化先                                App    Infinispan

    • サポート済み
       –   File System
       –   RDBMS                        App    Infinispan   Shared
                                                             Store
       –   Amazon S3
       –   Cassandra
    • 今後サポートされる予定
                                        App    Infinispan
       – GlasterFS




                                                               26
                         Advanced Tech Night
Data Gridとしての機能(2/5)

2. Distributed Executors
  ① 分散実行機能
  ② データを保持しているサーバに処
    理を配布し、バッチ実行
  ③ ディスクアクセスや
    ネットワークアクセスを
    極力減らして高速化




                                          27
                    Advanced Tech Night
Data Gridとしての機能(3/5)

3. MapReduce
  ① 分散実行機能。Hadoopで有名なあの処理
  ② 処理の流れ(インプットデータは事前に保持)
    1.   Jobを実行する
    2.   データ保持しているサーバでMap処理を実行
    3.   中間データをCacheに保存
    4.   データ保持しているサーバでReduce処理を実行
    5.   結果をJobに返す
                           In             ③             tmp
              Infinispan         ②                        Infinispan
                           Map            ③            Reduce ④
          ①
                                                                       ⑤

 Job実行
          ①                In                           tmp            ⑤
                                                                           Job実行
              Infinispan                   ③              Infinispan
                                 ②
                           Map                         Reduce ④

                                                                               28
                                 Advanced Tech Night
Data Gridとしての機能(4/5)

4. Query API
  ① 全文検索エンジンApache Luceneの
    Lucene Directoryの実装
  ② put時にデータのindexを作成・保持する
  ③ Hibernate Search APIを使って検索




                              図は公式サイトのUser Guide「Querying Infinispan」より引用
                              https://docs.jboss.org/author/display/ISPN/Querying+Infinispan

                                                                                    29
               Advanced Tech Night
Data Gridとしての機能(5/5)

5. Grid File System
  ① メモリ上のファイルシステム
  ② ファイルに高速アクセス
                                                         Meta
  ③ 2個のCacheで構成される                          Infinispan
                                                         File

     • メタデータ(ファイル名)
     • 実際のデータ                                            Meta
                                            Infinispan
  ④ Infinispanの標準機能で                                     File


    Replicationを実現 App
                                                         Meta
                                            Infinispan
                                                         File
                             App


                                                                30
                      Advanced Tech Night
まとめ

1. Infinispanとは?
  ① In-Memory Data Grid
2. Data Gridとは?
  ① サーバ分散による高速データアクセス
  ② 様々なデータを扱える
  ③ Jobを各サーバで分散実行可能
3. KVSとしてのInfinispan
  ① プロセスの関係による分類
    Embedded modeとClient-Server mode
  ② データ保持方式による分類
    Replicated modeとDistributed mode
                                         31
                   Advanced Tech Night
まとめ

4. Data GridとしてのInfinispan
No. 機能                      概要                         メリット/デメリット
1   Cache Store             データ永続化                     Infinispanが終了しても、
                                                       データが失われない
2   Distributed Executors   分散実行機能                     データが存在するサーバ
                            一般的なタスクを実行                 上で高速・並列処理
3   MapReduce               分散実行機能                     データが存在するサーバ
                            MapReduce処理を実行             上で高速・並列処理
4   Query API               全文検索エンジン機能                 複数サーバで高速に検
                                                       索
5   Grid File System        メモリ上のファイルシステム              ・ファイルアクセスが高速
                                                       ・標準機能で冗長化




                                                                    32
                                 Advanced Tech Night
最後に、、、

                        33
  Advanced Tech Night
あまり知られていないInfinispanですが
実は、他にも多くの機能があります
• Transaction
• Asynchronous API(非同期実行)
• L1 Cache(検索頻度が高いキーの検索を高速化)
• Rack Awareness(サーバの物理配置を考えた冗長化)
• Interceptor(Cacheに対してユーザが機能追加可能)
• Marshalling(データフォーマットのカスタマイズ)
• Continuous Query(Live Queryを発行。本体に未反映)
• Cross-datacentre replication
  (遠隔レプリケーション。9/19Alphaリリース)
• など、、、

                                       34
                 Advanced Tech Night
是非Infinispanを
使ってみてください

                           35
     Advanced Tech Night
ご静聴ありがとう
 ございました

                         36
   Advanced Tech Night

単なるキャッシュじゃないよ!?infinispanの紹介

  • 1.
    Advanced Tech NightNo.05 単なるキャッシュじゃないよ!? データグリッドプラットフォーム Infinispanの紹介 2012/09/20 Acroquest Technology 束野 仁政
  • 2.
    自己紹介  束野 仁政(つかのさとゆき)  Acroquest Technology株式会社  @snuffkin  もやっています。フレンディングよろしく!  satoyuki  これまで経験した主な業務は、フレームワーク/プラットフォーム開発。 →基盤の開発に興味あります。  HadoopやInfinispan、Nettyを利用するプロジェクトを経験。 →ドキュメント少ない?OSSなら、ソースを読めばいいじゃない。  社内勉強会でCEPやMessagePackの解説を担当。 →流行りもの好き。 1 Advanced Tech Night
  • 3.
  • 4.
    はじめに Data Gridとは? 正確性に目をつむると、 高機能なKVS ただし、 Infinispanは単なるKVSではない。 Data Grid Platform 3 Advanced Tech Night
  • 5.
    目次 1. Infinispanとは? ① Infinispanプロフィール ② Data Gridとは? 2. Infinispanの使い方~KVS編~ ① 動作モードの分類 ② プロセスの関係による分類 • Client-Server modeで利用できるプロトコル ③ データ保持方式による分類 3. Infinispanの使い方~Data Grid編~ ① Cache Store ② Distributed Executors ③ MapReduce ④ Query API ⑤ Grid File System 4. まとめ 4 Advanced Tech Night
  • 6.
    第1章 Infinispanとは? 5 Advanced Tech Night
  • 7.
    Infinispanプロフィール 1. JBossファミリーの(In-Memory) DataGrid Platform 2. 公式サイト http://www.jboss.org/infinispan.html 3. JavaとScalaで記述されたOSS 4. ライセンスはLGPL v2.1 5. 主なコミッタはRed Hat社に所属 6. 2012年8月、ようやく本が出版 「Infinispan Data Grid Platform」 6 Advanced Tech Night
  • 8.
    Data Gridとは?(1/5) Data Gridに求められること 分散システム 1. extreme scalability サーバ増加により、線形にスケールアウトできる 分散システム 2. high availability 障害が発生しづらい。発生時も素早く復旧できる 3. elastic data NoSQL 様々な形式のデータを扱うことができる 4. support for compute grids Data Grid 複数のサーバが結びつき、全体でひとつの処理を実行できる 7 Advanced Tech Night
  • 9.
    Data Gridとは?(2/5) Data Gridとは?(概ねこんな認識) ① サーバ分散による高速データアクセス →線形にスケールアウト ② 様々なデータを扱える →Infinispanの場合は、Javaオブジェクト ③ Jobを各サーバで分散実行可能 →各サーバに処理を配布 →ローカルデータにアクセスすることで高速化 →MapReduce等 さらに、InfinispanはIn-Memory Data Grid 8 Advanced Tech Night
  • 10.
    Data Gridとは?(3/5) Data Gridの主な適用箇所 ① Webシステムにおけるセッション情報の保持 複数サーバで Infinispan セッション情報を共有 Web/AP サーバ Infinispan Web/AP RDBMS サーバ Infinispan Web/AP サーバ 9 Advanced Tech Night
  • 11.
    Data Gridとは?(4/5) Data Gridの主な適用箇所 ② DBのキャッシュ(low latencyでデータアクセス) DBのキャッシュを分散保持し 大量データに高速アクセス Web/AP サーバ Infinispan Web/AP Infinispan RDBMS サーバ Infinispan Web/AP サーバ 10 Advanced Tech Night
  • 12.
    Data Gridとは?(5/5) Data Gridの主な適用箇所 ③ 分散実行 複数サーバでの実行により 並列性を増し、高速処理を実現 Infinispan サーバ Infinispan Job実行 サーバ Infinispan サーバ 11 Advanced Tech Night
  • 13.
    第2章 Infinispanの使い方 ~KVS編~ 12 Advanced Tech Night
  • 14.
    プロセスの関係による分類 No. 機能 概要 メリット/デメリット 1 Embedded mode ユーザが開発するアプリ ○AppからInfinispanを ケーション(以下、App)と start/stopすることが可能 同一JVMで動作 ○Listener等、機能が豊富 2 Client-Server mode Appと別JVMで動作 ○様々なプロトコルが利用可 ○外部プロセスから利用可 ○Appと独立して動作可能 データ保持方式による分類 No. 機能 概要 メリット/デメリット 1 Replicated mode 各データを全てのサーバ ○読み込みが高速 が保持する ×書き込みに時間がかかる 2 Distributed mode 各データを一部のサーバ ○書き込みが高速 が保持する ×読み込みに時間がかかる 13 Advanced Tech Night
  • 15.
    プロセスの関係による分類(1/4) 1. Embedded mode ① ユーザが開発するAppと 同一JVMでInfinispanを 動作させる ② AppとInfinispanとの関係は 1対1となる 図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用 http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql 14 Advanced Tech Night
  • 16.
    プロセスの関係による分類(2/4) 2. Client-Server mode ① ユーザが開発するAppと別JVMで Infinispanを動作させる ② AppのJVMから複数のServerに アクセスする ③ Appが個々のサーバを意識しなくて 良いように、Clientライブラリ内で 隠ぺい可能 (Hod Rod) 図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用 http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql 15 Advanced Tech Night
  • 17.
    プロセスの関係による分類(3/4) 【Embedded mode】の実装例 1. Cacheにデータを格納・取得・削除する例 2.デフォルト設定で良いなら、これだけで利用可能 public static void main(String[] args) { // cacheを取得 EmbeddedCacheManager manager = new DefaultCacheManager(); Cache<String, String> cache = manager.getCache(“CacheName”); // cacheにデータを格納 cache.put(“key”, “value”); // cacheからデータを取得 cache.get(“key”); // cacheからデータを削除 cache.remove(“key”); } 16 Advanced Tech Night
  • 18.
    プロセスの関係による分類(4/4) 【Client-Server mode】の実装例(Hot Rod) 1.基本的なメソッドはEmbedded modeと同じ 2. サポートしているメソッドに違いあり public static void main(String[] args) { // cacheを取得 RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223”); Cache<String, String> cache = manager.getCache(“CacheName”); // cacheにデータを格納 cache.put(“key”, “value”); // cacheからデータを取得 cache.get(“key”); // cacheからデータを削除 cache.remove(“key”); } 17 Advanced Tech Night
  • 19.
    Client-Server modeで利用できるプロトコル(1/4) 【REST】 ①URLで操作対象のキーを指定 http://localhost:8080/infinispan/rest/CacheNam e/key ② HTTPメソッドでInfinispanのメソッドを指定 No. HTTPメソッド Infinispanメソッド 備考 1 PUT put BODYにputする値を設定 2 GET get 3 DELETE remove ③ HTTPロードバランサで通信先サーバを選択 18 Advanced Tech Night
  • 20.
    Client-Server modeで利用できるプロトコル(2/4) 【Memcached】 ① KVSで利用される汎用的なプロトコル ② telnetでアクセスして、コマンドラインでCache操作 可能 // cacheにデータを格納 > set key value // cacheからデータを取得 > get key value // cacheからデータを削除 > delete key ③ Client Appで通信先サーバを選択する実装が必要 19 Advanced Tech Night
  • 21.
    Client-Server modeで利用できるプロトコル(3/4) 【Hot Rod】 ① Infinispan固有のプロトコル ② Java, C#, Python, Rubyのクライアント有 ③ 通信先サーバをAppから隠ぺい~Smart Routing public static void main(String[] args) { // cacheを取得 RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223,192.168.0.2:11223”); Cache<String, String> cache = manager.getCache(“CacheName”); // cacheにデータを格納 cache.put(“key”, “value”); // cacheからデータを取得 cache.get(“key”); // cacheからデータを削除 cache.remove(“key”); } 20 Advanced Tech Night
  • 22.
    Client-Server modeで利用できるプロトコル(4/4) 各プロトコルの特徴 No.プロトコル プロトコルの 利用可能な 通信先サーバの選択 汎用性 データ型 1 REST ○ △ String △ ロードバランサ 2 Memcached ○ △ String × App側で実装 3 Hot Rod × ○ 任意 ○ Smart Routing(自動選択) ※正式サポートしていないが、WebSocketのインタフェース有 分散環境でClient-Server modeを使う場合は 基本的にHot Rodを選択することに なるのでは? 21 Advanced Tech Night
  • 23.
    データ保持方式による分類(1/2) 1. Replicated mode ① 各データを全ての putしたデータは 全てのサーバに送信される サーバが保持する ② 読み込みが高速 Infinispan ③ 書き込みに時間がか かる ①put ②replica App Infinispan ②replica Infinispan 22 Advanced Tech Night
  • 24.
    データ保持方式による分類(2/2) 2. Distributed mode ① 各データを一部の putしたデータは 一部のサーバのみに送信される サーバが保持する ② 書き込みが高速 Infinispan ③ 読み込みに時間が かかる ①put ②replica App Infinispan replica されないサーバ Infinispan 23 Advanced Tech Night
  • 25.
  • 26.
    InfinispanのData Gridとしての主な機能 No. 機能 概要 メリット/デメリット 1 Cache Store データ永続化 Infinispanが終了しても、 データが失われない 2 Distributed Executors 分散実行機能 データが存在するサーバ 一般的なタスクを実行 上で高速・並列処理 3 MapReduce 分散実行機能 データが存在するサーバ MapReduce処理を実行 上で高速・並列処理 4 Query API 全文検索エンジン機能 複数サーバで高速に検 索 5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化 25 Advanced Tech Night
  • 27.
    Data Gridとしての機能(1/5) 1. CacheStore ① データの永続化 ② 永続化先 App Infinispan • サポート済み – File System – RDBMS App Infinispan Shared Store – Amazon S3 – Cassandra • 今後サポートされる予定 App Infinispan – GlasterFS 26 Advanced Tech Night
  • 28.
    Data Gridとしての機能(2/5) 2. DistributedExecutors ① 分散実行機能 ② データを保持しているサーバに処 理を配布し、バッチ実行 ③ ディスクアクセスや ネットワークアクセスを 極力減らして高速化 27 Advanced Tech Night
  • 29.
    Data Gridとしての機能(3/5) 3. MapReduce ① 分散実行機能。Hadoopで有名なあの処理 ② 処理の流れ(インプットデータは事前に保持) 1. Jobを実行する 2. データ保持しているサーバでMap処理を実行 3. 中間データをCacheに保存 4. データ保持しているサーバでReduce処理を実行 5. 結果をJobに返す In ③ tmp Infinispan ② Infinispan Map ③ Reduce ④ ① ⑤ Job実行 ① In tmp ⑤ Job実行 Infinispan ③ Infinispan ② Map Reduce ④ 28 Advanced Tech Night
  • 30.
    Data Gridとしての機能(4/5) 4. QueryAPI ① 全文検索エンジンApache Luceneの Lucene Directoryの実装 ② put時にデータのindexを作成・保持する ③ Hibernate Search APIを使って検索 図は公式サイトのUser Guide「Querying Infinispan」より引用 https://docs.jboss.org/author/display/ISPN/Querying+Infinispan 29 Advanced Tech Night
  • 31.
    Data Gridとしての機能(5/5) 5. GridFile System ① メモリ上のファイルシステム ② ファイルに高速アクセス Meta ③ 2個のCacheで構成される Infinispan File • メタデータ(ファイル名) • 実際のデータ Meta Infinispan ④ Infinispanの標準機能で File Replicationを実現 App Meta Infinispan File App 30 Advanced Tech Night
  • 32.
    まとめ 1. Infinispanとは? ① In-Memory Data Grid 2. Data Gridとは? ① サーバ分散による高速データアクセス ② 様々なデータを扱える ③ Jobを各サーバで分散実行可能 3. KVSとしてのInfinispan ① プロセスの関係による分類 Embedded modeとClient-Server mode ② データ保持方式による分類 Replicated modeとDistributed mode 31 Advanced Tech Night
  • 33.
    まとめ 4. Data GridとしてのInfinispan No.機能 概要 メリット/デメリット 1 Cache Store データ永続化 Infinispanが終了しても、 データが失われない 2 Distributed Executors 分散実行機能 データが存在するサーバ 一般的なタスクを実行 上で高速・並列処理 3 MapReduce 分散実行機能 データが存在するサーバ MapReduce処理を実行 上で高速・並列処理 4 Query API 全文検索エンジン機能 複数サーバで高速に検 索 5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化 32 Advanced Tech Night
  • 34.
    最後に、、、 33 Advanced Tech Night
  • 35.
    あまり知られていないInfinispanですが 実は、他にも多くの機能があります • Transaction • AsynchronousAPI(非同期実行) • L1 Cache(検索頻度が高いキーの検索を高速化) • Rack Awareness(サーバの物理配置を考えた冗長化) • Interceptor(Cacheに対してユーザが機能追加可能) • Marshalling(データフォーマットのカスタマイズ) • Continuous Query(Live Queryを発行。本体に未反映) • Cross-datacentre replication (遠隔レプリケーション。9/19Alphaリリース) • など、、、 34 Advanced Tech Night
  • 36.
  • 37.