Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ストリーム処理でAkka Schedulerを活用してみた話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for mattsu mattsu
March 17, 2018

ストリーム処理でAkka Schedulerを活用してみた話

下記で発表した資料です (LT枠)
第5回Reactive System Meetup in 西新宿 https://reactive-shinjuku.connpass.com/event/79769/?utm_campaign=&utm_source=notifications&utm_medium=email&utm_content=title_link #reactive_shinjuku

Avatar for mattsu

mattsu

March 17, 2018
Tweet

More Decks by mattsu

Other Decks in Programming

Transcript

  1. 自己紹介 • 社会人もうすぐ3年目 • インターネット広告の配信システムを作ってます ◦ いわゆるアドテクという業界 • 主にScalaを書いてます ◦

    1.5年くらい • 会社ではスクラムマスターという 役割を担っています. • たまにQiitaに記事を書いてます ◦ https://qiita.com/mattsu6 • 最近はSparkを使ってます 2
  2. 背景 • とあるお仕事が舞い込んできた • 「色んなサイトのアクセスログをリアルタイムに分析したい!」 • アクセスログは大量に発生するのでパフォーマンス要件はシビア ◦ 数万QPSが要求される... (ºДº)マジカッ!!

    • アクセスログには色んな付加情報が必要 ◦ 様々なデータベースとやり取りする必要がある 色々検討した結果Spark Streamingによるストリーム処理を採用 しかしデータベースとのやり取りがボトルネックに... 5
  3. 全部メモリに載せちゃえ • 予め必要なデータを全部メモリに載せる • Sparkでは起動時に値をブロードキャストする機能がある • しかしデータベースの値は時々刻々と変化するため更新したい! ドライバ エグゼキュータ エグゼキュータ

    エグゼキュータ データベース アクセス ログ アクセス ログ アクセス ログ アクセス ログ 出力 1. 起動時に ロード 2. 各エグゼキュータに ブロードキャスト 値の更新はどうやってやるか? 7
  4. Akka Schedulerを使ってみる(2/2) • 値の更新時に整合性を保つために古いデータは残す必要があるが いらなくなったタイミングで消してあげる ドライバ エグゼキュータ エグゼキュータ エグゼキュータ データベース

    ActorSystem 更新 アクター Scheduler 削除 アクター エグゼキュータが参照しな くなった古いデータを削除 するアクターを追加 古いデータを 削除 9