ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache Geodeハンズオン
2017/3/14
ウルシステムズ株式会社
http://www.ulsystems.co.jp
mailto:info@ulsystems.co.jp
Tel: 03-6220-1420 Fax: 03-6220-1402
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
自己紹介
山河 征紀
• コンサルタント@ウルシステムズ株式会社
• 並列分散処理, インメモリー処理
ULS 2
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache Geode概要
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 3
今日のゴール
Geodeを使った実装のための基礎知識がついている
Geodeのデータへアクセスしてみる
データ更新イベントを取得してみる
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
Apache GEODEとは
ざっくりいうとインメモリーの分散KVS
–データを各マシンのメモリーに分散配置
–大量トランザクションに対する高速処理
–動的なスケーラビリティ
–ミッションクリティカルでの利用
採用実績
–欧米の金融機関
–政府、防衛
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
レプリケーションとパーティション
クラスター全体を論理的に1つのまとまりとして見たとき、
データをどのノードのメモリーにもつか、ということ
データの特性によって分散スタイルを選ぶ必要があるため、
この選択肢が充足していることは重要
パーティションレプリケーション
すべてのマシンで同一のデータ
を保持する
何れかのマシンにデータが存在
する
ULS
Copyright © 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クラスター
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
Embeddeモードとしてアプリケー
ション中でキャッシュサーバー機能
を実行してデータアクセスする
(geodeのjarを取り込む)
アプリケーションからデータへアクセスする際は、次の2つ
の方法がある
データ管理に特化したキャッシュ
サーバーを起動し、アプリケーショ
ンはクライアントとしてデータアク
セスする
アプリケーションからのデータアクセス
これら2つの方法を組み合わせることも出来る
キャッシュサーバー
リージョンアプリケーション
(クライアント)
キャッシュサーバー
リージョン
キャッシュサーバー
リージョン
アプリケーション
キャッシュサーバー
リージョン
アプリケーション
キャッシュサーバー
リージョン
※クライアントからのアクセスもできる
ULS 9
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
実践!
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
本日の最終的な姿
リアルタイムに更新されるチャットアプリ作成
リージョン
入力メッセージを
リージョンへ登録
リージョンへの登録イベント
を拾って他のクライアントへ
リアルタイムに更新
ULS
Copyright © 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
ULS
Copyright © 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)
チャット
メッセージ
を蓄積
メッセージ
連携
ULS
Copyright © 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)
チャット
メッセージ
を蓄積
メッセージ
連携
メッセージ
連携
ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 14
Tutorial
https://github.com/masaki-yamakawa/GeodeHandson
ULS
Copyright © 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使用方法

Geode hands-on

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