Skip to content

mvrck-jp/training-akka-java-5-clustering

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

JavaによるAkkaトレーニング第5回

Akkaクラスタリング

いよいよAkkaクラスタリング機能の紹介です。 アクター、イベントソーシングとCQRS、そしてクラスタリングを用いることでAkkaの力を最大限活かすことが出来る、というのが私の考えです。 ありとあらゆるシステムでこれら全ての機能を使う必要はありませんが、やはりAkkaの醍醐味を味わうことが出来るのはアクターをクラスタ上で水平スケールさせて、 イベント・ソーシングとCQRSで対障害性と疎結合を実現する場合です。

このトレーニングではCQRS - Command Query Responsibility Separationと呼ばれる設計パターンの中を使ってイベント・ソーシングでは重視しなかったデータ読み込み側の処理を補完します。

課題

この課題をこなすことがトレーニングのゴールです。 独力でも手を動かしながら進められるようようになっていますが、可能ならトレーナーと対話しながらすすめることでより効果的に学べます。

この課題で身につく能力

  • Akka HTTPと、別プロセスになっているアクターを用いたバックエンドとのAkkaクラスタリングによる接続
  • CQRSとの統合
  • Akka HTTPとAkkaバックエンドそれぞれを複数プロセス立ち上げスケールさせる
  • Akkaクラスタリングアプリケーション全体のパフォーマンスを測定する

課題

この課題をこなすことがトレーニングのゴールです。 独力でも手を動かしながら進められるようようになっていますが、可能ならトレーナーと対話しながらすすめることでより効果的に学べます。

この課題で身につく能力

  • Akka HTTPと、別プロセスになっているアクターを用いたバックエンドとのAkkaクラスタリングによる接続
  • CQRSとの統合
  • Akka HTTPとAkkaバックエンドそれぞれを複数プロセス立ち上げスケールさせる
  • Akkaクラスタリングアプリケーション全体のパフォーマンスを測定する

事前準備:

  • MySQL8.0.19をローカル開発環境にインストールしてください
    • brew update
    • brew install mysql@8.0.19
    • mysql.Sever stop //もし自分の環境で別のバージョンのMySQLが走っていたら
    • /usr/local/opt/mysql@8.0/bin/mysql.Sever start
  • Mavenをインストールしてください
    • brew install maven

作業開始:

  • このレポジトリをgit cloneしてください
    • git clone git@github.com:mvrck-inc/training-akka-java-4-cqrs.git
  • データベースのセットアップをしてください (setup.sql)
    • 参考: akka-persistence-jdbcプラグインのデフォルト・テーブル構成(リンク)
  • backendプロセスを起動してください mvn exec:java -Dexec.mainClass=org.mvrck.training.app.BackendMain
  • akka-httpプロセスを起動してください mvn exec:java -Dexec.mainClass=org.mvrck.training.app.HttpMain
  • read-sideプロセスを起動してください mvn exec:java -Dexec.mainClass=org.mvrck.training.app.ReadSideMain
  • curlでデータを挿入してください
    • curl -X POST -H "Content-Type: application/json" -d "{\"ticket_id\": 1, \"user_id\": 2, \"quantity\": 1}" http://localhost:8080/orders
    • クライアント側ログからレスポンスを確認してください
    • サーバー側ログを確認してください
    • データベースでjournalテーブル、ticket_stocksテーブルとordersテーブルを確認してください (select.sql)
  • wrkでベンチマークを走らせてください
    • wrk -t2 -c4 -d5s -s wrk-scripts/order.lua http://localhost:8080/orders
      • -t2: 2 threads
      • -c4: 4 http connections
      • -d5: 5 seconds of test duration
      • wrk-scripts/order.lua (リンク)
      • クライアント側の実行結果を確認してください
      • データベースでjournalテーブル、ticket_stocksテーブルとordersテーブルを確認してください (select.sql)
  • akka-clusteringのセットアップを確認してください

発展的内容:

  • トレーニング1で考えたよう多数のテーブルを作成した場合、シーケンス図を書いてアクターからコマンド側の永続化層、クエリ側の永続仮想へと続く処理を整理してください

説明

参考文献・資料

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published