SlideShare a Scribd company logo
1 of 12
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
Geode+Alpakka+Akka Streamsでリアルタイムデータ処理
ウルシステムズ株式会社 阿品翔悟
2018/3/26
ウルシステムズ株式会社
http://www.ulsystems.co.jp
mailto:info@ulsystems.co.jp
Tel: 03-6220-1420 Fax: 03-6220-1402
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
1
Alpakkaをご存知でしょうか?
Akka Streamsから様々なサービスへ接続できるコネクタ
2017/1/30のリリースでApache Geodeに対応
Apache Geode以外に20種類以上のサービスに対応
–AWS Lambda
–AWS S3
–Elasticsearch
–MongoDB
–Slick (JDBC)
etc…
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
2
Akka Streamsとは
Reactive StreamsのAkka実装
Reactive Streams:ノンブロッキングかつBack
Pressureを備えた非同期ストリーム処理の標準仕様
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
3
非同期ストリーム処理とは
Source、Flow、Sinkを組み合わせてストリーム処理を定
義する
それぞれが非同期で実行される
3つを組み合わせたものをRunnableGraphと呼ぶ
Source Flow Sink
Runnable
Graph
非同期実行 非同期実行
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
4
コンポーネント 説明
データの供給源。ひとつの出力を持つ。ファイルの読
み込みなどデータを用意する処理を行う。
データの流れを表す。ひとつの入力とひとつの出力を
持つ。データの加工、変換を行う。
データの終着点。ひとつの入力を持つ。データの表示、
格納など終端処理を行う。
Source、Flow、Sinkを接続したもの。run()メソッド
をコールすることで実行することができる。
Source、Flow、Sink、RunnableGraphについて
Source
Flow
Sink
Runnable
Graph
Source、Flow、Sink、 RunnableGraphの役割は以下
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
5
Back Pressureとは
下流が処理できる量を上流へ伝えることで、効率的に処理
をする仕組み
全てのAkka Streamのコンポーネントに自動的に制御が
かかる
Source
10msg/s
Flow
Sink
1msg/s
1msg/s
1msg/s
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
6
Geode+Alpakka+Akka Streams
AlpakkaによりAkka StreamsをGeodeと統合すること
ができる
Apache
Geode
Source
Flow
Sink Apache
Geode
Geodeのデータを
Sourceとして使用
できる
最終処理結果をGeodeへ登録
できる
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
7
AlpakkaによりSourceとGeodeのCQを接続できる
SourceとGeodeのCQ (Continuous Querying) を接
続できる
CQとはGeodeのイベント通知の仕組みの一つで、Query
に合致するデータの登録が発生した場合に通知される
Apache
Geode
Source Flow Flow
// Sourceの定義
String cqName = “GetPerson"; // CQ名
String query = "SELECT * FROM /person"; // CQのクエリ
Source<Person, Future<Done>> sorce =
reactiveGeode.continuousQuery(cqName, query, new PersonPdxSerializer());
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
8
AlpakkaによりSinkとGeodeを接続できる
SinkとGeodeを接続できる
RunnableGraphの最終処理結果をGeodeへ登録するこ
とができる
Sink Apache
Geode
Flow Flow
// Sinkの定義
RegionSettings<Long, Person> resultsRegionSettings =
new RegionSettings<>(“person”, Person::getId); // Personリージョン設定
Sink<Person, CompletionStage<Done>> sink =
reactiveGeode.sink(resultsRegionSettings, new PersonPdxSerializer());
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
9
Geode+Alpakka+Akka Streamを使用したデモ
Twitterのつぶやきをリアルタイムで取得して、つぶやきを
もとに文章の自動生成を行う
※文章の自動生成はリクルート社が公開しているAPIを使用
https://a3rt.recruit-tech.co.jp/product/textSuggestAPI/
デモの後に簡単にソースの説明をします
Tweets
リージョン
文章の自動
生成プログラ
ム
Results
リージョン
つぶやき取
得プログラム
Twitter4jで作成 Alpakka+Akka Streamsで作成
登録 登録イベント通知 登録
取得 自動生成
API取得
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
10
それではみなさんつぶやいてみてください!
ハッシュタグは「 #geode_jp」です
内容は自由です
例:「 #geode_jp geode最高!」
「 #geode_jp geodeやってみようかな。」
「 #geode_jp テスト。」
テスト用のTwitterアカウントを作成したので、こちらも使っ
てください※セッション終了後に削除します。
ID=
PW=
ULS
Copyright © 2018 UL Systems, Inc. All rights reserved.
11
終わりに
ご清聴ありがとうございました
Apache GeodeのCQとAlpakka+Akka Streamsを組
み合わせることで、リアルタイムにデータを処理する仕組み
を構築することができました
Apache Geodeに少しでも興味をもっていただけたら幸い
です

More Related Content

Similar to Geode+Alpakka+Akka Streamsでリアルタイムデータ処理

AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話Yuki Takahashi
 
20201023_MySQL開発最新動向
20201023_MySQL開発最新動向20201023_MySQL開発最新動向
20201023_MySQL開発最新動向Machiko Ikoma
 
【RDS】Cloud SQL をまとめてみる
【RDS】Cloud SQL をまとめてみる【RDS】Cloud SQL をまとめてみる
【RDS】Cloud SQL をまとめてみるYuya Ohara
 
超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODEMasaki Yamakawa
 
Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)nao-k
 
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6Hironobu Isoda
 
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)オラクルエンジニア通信
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud真吾 吉田
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~Serverworks Co.,Ltd.
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Hironobu Isoda
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?Oda Shinsuke
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
エッジコンピューティングで実現できる活用シナリオ3選
エッジコンピューティングで実現できる活用シナリオ3選エッジコンピューティングで実現できる活用シナリオ3選
エッジコンピューティングで実現できる活用シナリオ3選Jun Ichikawa
 
Netapp private storage for aws
Netapp private storage for awsNetapp private storage for aws
Netapp private storage for awsMasaru Hiroki
 

Similar to Geode+Alpakka+Akka Streamsでリアルタイムデータ処理 (20)

AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
 
20201023_MySQL開発最新動向
20201023_MySQL開発最新動向20201023_MySQL開発最新動向
20201023_MySQL開発最新動向
 
Reactor Netty & Apache Kafka Stack #jsug
Reactor Netty & Apache Kafka Stack #jsugReactor Netty & Apache Kafka Stack #jsug
Reactor Netty & Apache Kafka Stack #jsug
 
【RDS】Cloud SQL をまとめてみる
【RDS】Cloud SQL をまとめてみる【RDS】Cloud SQL をまとめてみる
【RDS】Cloud SQL をまとめてみる
 
超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE超高速処理とスケーラビリティを両立するApache GEODE
超高速処理とスケーラビリティを両立するApache GEODE
 
Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)
 
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
 
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
Oracle Cloud Infrastructure 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月30日)
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
 
【IVS CTO Night & Day】IoT Solution
【IVS CTO Night & Day】IoT Solution【IVS CTO Night & Day】IoT Solution
【IVS CTO Night & Day】IoT Solution
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
エッジコンピューティングで実現できる活用シナリオ3選
エッジコンピューティングで実現できる活用シナリオ3選エッジコンピューティングで実現できる活用シナリオ3選
エッジコンピューティングで実現できる活用シナリオ3選
 
Netapp private storage for aws
Netapp private storage for awsNetapp private storage for aws
Netapp private storage for aws
 
Lpwa seminar 20181003
Lpwa seminar 20181003Lpwa seminar 20181003
Lpwa seminar 20181003
 

Geode+Alpakka+Akka Streamsでリアルタイムデータ処理

  • 1. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. Geode+Alpakka+Akka Streamsでリアルタイムデータ処理 ウルシステムズ株式会社 阿品翔悟 2018/3/26 ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:info@ulsystems.co.jp Tel: 03-6220-1420 Fax: 03-6220-1402
  • 2. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 1 Alpakkaをご存知でしょうか? Akka Streamsから様々なサービスへ接続できるコネクタ 2017/1/30のリリースでApache Geodeに対応 Apache Geode以外に20種類以上のサービスに対応 –AWS Lambda –AWS S3 –Elasticsearch –MongoDB –Slick (JDBC) etc…
  • 3. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 2 Akka Streamsとは Reactive StreamsのAkka実装 Reactive Streams:ノンブロッキングかつBack Pressureを備えた非同期ストリーム処理の標準仕様
  • 4. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 3 非同期ストリーム処理とは Source、Flow、Sinkを組み合わせてストリーム処理を定 義する それぞれが非同期で実行される 3つを組み合わせたものをRunnableGraphと呼ぶ Source Flow Sink Runnable Graph 非同期実行 非同期実行
  • 5. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 4 コンポーネント 説明 データの供給源。ひとつの出力を持つ。ファイルの読 み込みなどデータを用意する処理を行う。 データの流れを表す。ひとつの入力とひとつの出力を 持つ。データの加工、変換を行う。 データの終着点。ひとつの入力を持つ。データの表示、 格納など終端処理を行う。 Source、Flow、Sinkを接続したもの。run()メソッド をコールすることで実行することができる。 Source、Flow、Sink、RunnableGraphについて Source Flow Sink Runnable Graph Source、Flow、Sink、 RunnableGraphの役割は以下
  • 6. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 5 Back Pressureとは 下流が処理できる量を上流へ伝えることで、効率的に処理 をする仕組み 全てのAkka Streamのコンポーネントに自動的に制御が かかる Source 10msg/s Flow Sink 1msg/s 1msg/s 1msg/s
  • 7. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 6 Geode+Alpakka+Akka Streams AlpakkaによりAkka StreamsをGeodeと統合すること ができる Apache Geode Source Flow Sink Apache Geode Geodeのデータを Sourceとして使用 できる 最終処理結果をGeodeへ登録 できる
  • 8. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 7 AlpakkaによりSourceとGeodeのCQを接続できる SourceとGeodeのCQ (Continuous Querying) を接 続できる CQとはGeodeのイベント通知の仕組みの一つで、Query に合致するデータの登録が発生した場合に通知される Apache Geode Source Flow Flow // Sourceの定義 String cqName = “GetPerson"; // CQ名 String query = "SELECT * FROM /person"; // CQのクエリ Source<Person, Future<Done>> sorce = reactiveGeode.continuousQuery(cqName, query, new PersonPdxSerializer());
  • 9. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 8 AlpakkaによりSinkとGeodeを接続できる SinkとGeodeを接続できる RunnableGraphの最終処理結果をGeodeへ登録するこ とができる Sink Apache Geode Flow Flow // Sinkの定義 RegionSettings<Long, Person> resultsRegionSettings = new RegionSettings<>(“person”, Person::getId); // Personリージョン設定 Sink<Person, CompletionStage<Done>> sink = reactiveGeode.sink(resultsRegionSettings, new PersonPdxSerializer());
  • 10. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 9 Geode+Alpakka+Akka Streamを使用したデモ Twitterのつぶやきをリアルタイムで取得して、つぶやきを もとに文章の自動生成を行う ※文章の自動生成はリクルート社が公開しているAPIを使用 https://a3rt.recruit-tech.co.jp/product/textSuggestAPI/ デモの後に簡単にソースの説明をします Tweets リージョン 文章の自動 生成プログラ ム Results リージョン つぶやき取 得プログラム Twitter4jで作成 Alpakka+Akka Streamsで作成 登録 登録イベント通知 登録 取得 自動生成 API取得
  • 11. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 10 それではみなさんつぶやいてみてください! ハッシュタグは「 #geode_jp」です 内容は自由です 例:「 #geode_jp geode最高!」 「 #geode_jp geodeやってみようかな。」 「 #geode_jp テスト。」 テスト用のTwitterアカウントを作成したので、こちらも使っ てください※セッション終了後に削除します。 ID= PW=
  • 12. ULS Copyright © 2018 UL Systems, Inc. All rights reserved. 11 終わりに ご清聴ありがとうございました Apache GeodeのCQとAlpakka+Akka Streamsを組 み合わせることで、リアルタイムにデータを処理する仕組み を構築することができました Apache Geodeに少しでも興味をもっていただけたら幸い です

Editor's Notes

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11