geode hands-on
TRANSCRIPT
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache Geodeハンズオン
2017/3/14
ウルシステムズ株式会社http://www.ulsystems.co.jp
mailto:[email protected]
Tel: 03-6220-1420 Fax: 03-6220-1402
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
自己紹介
山河 征紀
•コンサルタント@ウルシステムズ株式会社
•並列分散処理, インメモリー処理
ULS 2Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache Geode概要
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 3
今日のゴール
Geodeを使った実装のための基礎知識がついている
Geodeのデータへアクセスしてみる
データ更新イベントを取得してみる
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
Apache GEODEとは
ざっくりいうとインメモリーの分散KVS
–データを各マシンのメモリーに分散配置
–大量トランザクションに対する高速処理
–動的なスケーラビリティ
–ミッションクリティカルでの利用
採用実績
–欧米の金融機関
–政府、防衛
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
レプリケーションとパーティション
クラスター全体を論理的に1つのまとまりとして見たとき、データをどのノードのメモリーにもつか、ということ
データの特性によって分散スタイルを選ぶ必要があるため、この選択肢が充足していることは重要
パーティションレプリケーション
すべてのマシンで同一のデータを保持する
何れかのマシンにデータが存在する
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 6
Geodeを使う際の登場人物(プロセス)
Geodeでは次の3種類のプロセスが登場する
キャッシュサーバーメモリー上のデータを管理するためのプロセスデータは複数のキャッシュサーバーに分散されリージョンという単位で保持される
ロケータークラスター構成を管理するためのプロセス大規模なクラスターを論理的なグループに分割することもできる
クライアントキャッシュサーバーが管理するデータへアクセスするためのクライアント(Java/C++/C#/REST)
ロケーター
キャッシュサーバー
リージョン
ロケーター
キャッシュサーバー
リージョンキャッシュサーバー
リージョンキャッシュサーバー
リージョン
Javaクライアント
C++/C#クライアント
RESTクライアント
クライアントは、ロケーターに問い合わせることで任意の
キャッシュサーバーへ接続できる(RESTは別)
Geodeクラスター
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
Embeddeモードとしてアプリケーション中でキャッシュサーバー機能を実行してデータアクセスする(geodeのjarを取り込む)
アプリケーションからデータへアクセスする際は、次の2つの方法がある
データ管理に特化したキャッシュサーバーを起動し、アプリケーションはクライアントとしてデータアク
セスする
アプリケーションからのデータアクセス
これら2つの方法を組み合わせることも出来る
キャッシュサーバー
リージョンアプリケーション(クライアント)
キャッシュサーバー
リージョンキャッシュサーバー
リージョン
アプリケーション
キャッシュサーバー
リージョン
アプリケーション
キャッシュサーバー
リージョン
※クライアントからのアクセスもできる
ULS 9Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
実践!
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
本日の最終的な姿
リアルタイムに更新されるチャットアプリ作成
リージョン
入力メッセージをリージョンへ登録
リージョンへの登録イベントを拾って他のクライアントへ
リアルタイムに更新
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 11
JavaアプリケーションにGeodeを組み込み、P2P型のチャットアプリを作成
ハンズオン#1:CUIチャットアプリ
Javaアプリケーション#1(Geode組み込み)
Geode Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
Javaアプリケーション#2(Geode組み込み)
Geode Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
メッセージ表示
メッセージ入力
メッセージ入力
メッセージ表示
メッセージ
連携
チャットメッセージを蓄積
チャットメッセージのイベントを取得し、コンソールへ表示
リージョン名 : ChatMessageデータポリシー : REPLICATE
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 12
キャッシュサーバーとJavaアプリケーションを分離しクライアント-サーバー型のチャットアプリを作成
ハンズオン#2:CUIチャットアプリ
Javaアプリケーション#1(Geodeクライアント)
Client Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
Javaアプリケーション#2(Geodeクライアント)
Client Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
メッセージ表示
メッセージ入力
メッセージ入力
メッセージ表示
メッセージ
連携
チャットメッセージのイベントを取得し、コンソールへ表示
リージョン名 : ChatMessageデータポリシー : RARTITION
キャッシュサーバー
Geode Cache
ChatMessage(Region)
チャットメッセージを蓄積
メッセージ
連携
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 13
GUI版のチャットアプリを作成
ハンズオン#3:GUIチャットアプリ
Javaアプリケーション#1(Geodeクライアント)
Client Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
Javaアプリケーション#2(Geodeクライアント)
Client Cache
ChatMessage(Region)
ChatMessageListener(CacheListener)
メッセージ表示
メッセージ入力
メッセージ入力
メッセージ表示
チャットメッセージのイベントを取得し、コンソールへ表示
リージョン名 : ChatMessageデータポリシー : RARTITION
キャッシュサーバー
Geode Cache
ChatMessage(Region)
チャットメッセージを蓄積
メッセージ
連携
メッセージ
連携
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 14
Tutorial
https://github.com/masaki-yamakawa/GeodeHandson
ULSCopyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 15
まとめ
ハンズオン#1:CUIチャットアプリ(Embeddedモード)
– Embeddedモードによる実行方法
–リージョンデータへのアクセス方法(put, get)
–リージョンイベントの取得方法
–レプリケーションとパーティションの違い
ハンズオン#2:CUIチャットアプリ(クライアント-サーバ)
–クライアント-サーバモードの実行方法
–Gfshによるロケーター、キャッシュサーバーの起動方法
– Pulseによるクラスター管理、および、データ参照方法(OQL実行)
–クライアントアプリでのイベント取得方法の違い
ハンズオン#3:GUIチャットアプリ
–APIからの設定方法
–Continuous Query使用方法