Successfully reported this slideshow.
Your SlideShare is downloading. ×

超高速処理とスケーラビリティを両立するApache GEODE

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 32 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to 超高速処理とスケーラビリティを両立するApache GEODE (20)

Advertisement

Recently uploaded (20)

超高速処理とスケーラビリティを両立するApache GEODE

  1. 1. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by Apache GEODE Meetup Tokyo #1 超高速処理とスケーラビリティを両立するApache GEODE 2016/6/9 ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:info@ulsystems.co.jp Tel: 03-6220-1420 Fax: 03-6220-1402
  2. 2. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 1 About Me 山河 征紀 Business Private • GEODE歴:9年(Since 2008) • GEODEバグ報告数:nnn 件 • ランナー • 横浜マラソン2016:4h17m • 目標は今年中のサブ4 • アルピニスト • 目標はココ
  3. 3. ULS 2 Copyright © 2011-2013 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 超高速処理とスケーラビリティを 両立するApache GEODE
  4. 4. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 3 Apache GEODEとは ざっくりいうとインメモリーの分散KVS –データを各マシンのメモリーに分散配置 –大量トランザクションに対する高速処理 –動的なスケーラビリティ –ミッションクリティカルでの利用 採用実績 –欧米の金融機関 –政府、防衛
  5. 5. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 4 近年様々なデータストアが誕生 選択肢は多種多様に NoSQL In-Memory DataGrid In-Memory Cache Traditional Database Columnar Database
  6. 6. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 5 日本はRDB命
  7. 7. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 6 サーバ サーバ サーバ アプリケーションのスケールアウトは容易だが、RDBがボト ルネックに 良くあるシステムの課題 JVM JVM JVM アプリケーション アプリケーション アプリケーション RDB
  8. 8. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 7 RDBボトルネック対策 スケールアップ 水平分割 NoSQL キャッシュの利用 ×ネットワークを跨いでいる 時点で遅い
  9. 9. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 8 アプリケーションと同じメモリー上にデータを保持すること で超高速化 Apache GEODEを使用した超高速処理システム サーバ サーバ サーバ JVM JVM JVM アプリケーション アプリケーション アプリケーション ・・・ 無限のスケーラビリティ
  10. 10. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 9 メモリーアクセス vs RDBアクセス ディスクアクセスしようものなら最悪・・・ Event Latency CPUキャッシュアクセス(L2) 3 ns メモリーアクセス 120 ns SSDディスク I/O 150,000 ns 同一データセンター内通信 500,000 ns ディスク I/O 10,000,000 ns メモリーアクセスのみ通信+メモリーアクセス・・・ Memory SSD Disk
  11. 11. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 10 メモリー内のデータをどのように分散するか?  アプリケーションが扱うデータは大きく分けて「マスターデ ータ」と「トランザクションデータ」に分類できる マスターデータ トランザクション データ • 割と固定的 • データ数が急激に増えないもの • 更新が少なく参照が多い • データの一部が変動する • 更新処理が多い • 日毎にデータが増加するもの 特性 顧客情報、商品情報等 取引情報、予約情報等 レプリケーション パーティション
  12. 12. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 11 レプリケーションとパーティション データの特性によってレプリケーションとパーティションを 使い分ける パーティションレプリケーション すべてのマシンで同一のデータ を保持する 何れかのマシンにデータが存在 する
  13. 13. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 14  全てのサーバに、全てのデータが存在するため高速なデータ 取得が可能 レプリケーションデータの読み込み Full Replication クライアントA クライアントC クライアントB クライアントD A B C A B D A C D B C D Read A Read C Read A Read C Read B Read D Read B Read D D C B A 凡例 A データ メモリ空間
  14. 14. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 15  全てのマシンのデータを更新した後、呼び出し元へ応答する  マシン数が多いほど、書き込み性能が劣化する可能性がある Full Replication クライアント A B C A B D A C D B C D Write A D C B A ②更新 ①更新 ②更新 ②更新 ③確認 ③確認 ③確認 Reply ④応答 レプリケーションデータの書き込み 凡例 A データ メモリ空間
  15. 15. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 16  接続先のマシンのデータを更新した後、呼び出し元へ応答する  その他のデータ更新は非同期で行われる (更新処理性能は安定するが、一貫性は緩い) Full Replication クライアント A B C A B D A C D B C D Write A D C B A ②更新 ①更新 ②更新 ②更新 Reply ②応答 レプリケーションデータの書き込み(非同期) 凡例 A データ メモリ空間
  16. 16. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 17  全マシンが同時にダウンしない限りデータの消失はない  クライアントとの接続については、自動的に切り替わる Full Replication クライアント A B C A B D A C D B C D Read A D C B A レプリケーションのフェイルオーバ 凡例 A データ メモリ空間
  17. 17. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 18  データを分割して保持することで、メモリーを節約すること が出来る  データが存在しない場合は、データが配置されたマシンに自 動的に問い合わせが行われる クライアント A C B Read A D Read B B C A D パーティションデータの読み込み 凡例 A A データ データのバックアップ メモリ空間 Read D B D 問い合わせ 問い合わせ
  18. 18. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 19  データ更新処理はプライマリデータとそのバックアップコピ ーに対してのみ行なわれる  多数のマシンが存在した場合でも一定した処理速度となる クライアント AWrite A ②更新 A ①更新 ③確認 Reply ④応答 B C D D B C パーティションデータの書き込み 凡例 A A データ データのバックアップ メモリ空間
  19. 19. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 20  ダウンしたマシンのデータは他のマシンに引き継がれる  クライアントとの接続については、自動的に切り替わる クライアント D A B C Read A C B DA A Primary Primary Primary Primary Primary A パーティションのフェイルオーバ 凡例 A A データ データのバックアップ メモリ空間
  20. 20. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 21 レプリケーション/パーティション サマリー マスターデータ トランザクション データ レプリケーション パーティション 顧客情報 商品情報等 取引情報 予約情報等 →データ参照時の性能を最速に →データ更新、データ参照時の性能を安定させる →データを分散配置することでメモリ使用量を抑える Read ○ データ量 ◎ Write ◎ 同時 接続数 ◎ Read ◎ データ量 △ Write △ 同時 接続数 ◎ 性能 拡張性
  21. 21. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 22 データは、Javaのヒープメモリ上にJavaのオブジェクトと して管理される GEODEにおけるデータ管理 JVM Cache Region Key Value ABC GGG XYG Region … Region … • インメモリデータへのエントリポイント • アプリケーションはキャッシュを介して、データへの一連の操作を行う • 任意のリージョンにより構成 • 論理的なデータのグループ(RDBにおけるテーブルのイメージ) • Key-Value形式でのデータ管理 • 任意のオブジェクトに対して、一意のKeyを指定 • スキーマの概念はなく、任意のオブジェクトを格納 Cache Region public class Employee { private int employeeNo; private String firstName; private String lastName; private String deptCode; ・・・ ・・・ }
  22. 22. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 23 Region定義方法 XMLでRegionを定義 <cache> <region name=“replicateRegion"> <region-attributes refid=“REPLICATE“ /> </region> <region name=“partitionRegion"> <region-attributes refid=“PARTITION“ /> </region> </cache>
  23. 23. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 24 データへの接続形態は2つ クラスター・トポロジー • キャッシュへの管理責任が生じる • プロセス間で必要に応じてデータをやり取りする • クライアントAPI(Java、C++、.NET、REST)を使用して接続 することが出来る • 取得したデータは、それぞれの開発言語のオブジェクトとなる Peer to Peer接続 Client-Server接続
  24. 24. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 25  リージョンデータへアクセスする際は、以下の何れかのAPI を使用する データアクセスAPI 取得方法 説明 追加/更新/ 削除 参照 Mapインター フェースAPI put,get,remove等の java.util.Mapインターフェ ースを使用したデータアク セス ○ ○ OQL (Object Query Language) SQLライクなクエリを使用 したデータアクセス × ○
  25. 25. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 26 MapインターフェースAPI Java.util.Map感覚でKeyを指定してデータへアクセス // XMLを指定してCacheを取得 Cache cache = new CacheFactory() .set("cache-xml-file", “cache.xml").create(); // CacheよりexampleRegionを取得 Region<Integer, String> region = cache.getRegion(“exampleRegion"); Integer key = 1; // データ登録 region.put(key, message); // データ取得 String value = region.get(key, message); // データ削除 region.remove(key);
  26. 26. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 27 OQL(Object Query Language) Key以外でのデータアクセス select * from /Employee emp where emp.deptCode = '12B' public class Employee { private int employeeNo; private String firstName; private String lastName; private String deptCode; ・・・ ・・・ } パーティションリージョンのOQL処理レプリケーションリージョンのOQL処理
  27. 27. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 28 OQLの実装 OQL専用のクラスを使用してクエリー実行 // XMLを指定してCacheを取得 Cache cache = new CacheFactory().set("cache-xml-file", “cache.xml").create(); // CacheよりQueryService取得 QueryService queryService = cache.getQueryService(); // Query作成 Query query = queryService .newQuery("select * from /Employee emp where emp.deptCode='12B'"); // Query実行 SelectResults result = query.execute(); Collection<?> collection = ((SelectResults<?>)result).asList(); for (Object e: collection) { System.out.println(e); }
  28. 28. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 29 イベント処理 イベント通知を受けたいデータの条件を予め登録しておくこ とで、Push型イベント通知を受けることが出来る A B C D クライアン ト 更新 サーバ クライアント クライアント 登録したクライアントのみが更新前 後のデータをイベントとして取得 Create データの追加 Update データの更新 Destroy データの削除 Invalidate データ無効化 イベント種別
  29. 29. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 30  イベント通知の方法は2つ イベント通知方法 方法 説明 特徴 Interest Registration イベントとして取得したい リージョンのKeyを指定 (正規表現指定可能) • ContinuousQueryより 高速 Continuous Query SQLライクなクエリにより イベントの条件を指定 • Key以外でイベントを取 得出来る • InterestRegistrationよ りサーバへの負荷が高い
  30. 30. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 31 イベント処理の実装 XMLでイベント処理を行うクラスを設定 <cache> <region name=“exampleRegion"> <region-attributes refid=“PARTITION“ /> <cache-listener> <class-name>example.MyCacheListener</class-name> </cache-listener> </region> </cache>
  31. 31. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 32 イベント処理の実装 イベント処理では、イベント種別に応じたCacheListenerの コールバックメソッドが呼ばれる public class MyCacheListener implements CacheListener<String, String>, Declarable { @Override public void afterCreate(EntryEvent<String, String> event) { // KeyとValueを標準出力へ出力します System.out.println(event.getKey() + "> " + event.getNewValue()); } @Override public void afterUpdate(EntryEvent<String, String> event) { ・・・・ } @Override public void afterDestroy(EntryEvent<String, String> event) { ・・・・ } }
  32. 32. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 33 今後のテーマ ユースケース/事例GEODEハンズオン GEODE その他機能 正式リリースに向けた 追加機能 他の分散処理製品 との違い GEODEの インテグレーション

Editor's Notes

  • 【概念的な背景】
    データが増える
    Txが増える

    パフォーマンス求められる
    スケールアウトが重要
  • ・DBの方もキャッシュぐらいかいとく
    ・キャッシュや分散DBでもN/W超えるよね
    ・O/Rマッピングの処理都下も無駄。必要なのはObject。DB依存の処理をしている
  • ・DBは使うけど、ログとか過去データとか

×