geode hands-on

15
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:[email protected] Tel: 03-6220-1420 Fax: 03-6220-1402

Upload: masaki-yamakawa

Post on 11-Apr-2017

186 views

Category:

Technology


0 download

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使用方法