Your SlideShare is downloading. ×
0
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
アクターモデルについて
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

アクターモデルについて

2,957

Published on

アクターモデルの私的解説

アクターモデルの私的解説

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,957
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. アクターモデルについて株式会社ナチュラルスタイル 三辻尚栄 2012/07/13
  • 2. Actor はオブジェクトである● 内部状態をもつ● ただし、公開メソッドはない Actor Actor Actor - 名前: mitsuwo - 名前: dojo - 名前: 握手会 - 年齢: 34 - 年齢: 24 - 場所: メッセ - 既婚: True - 既婚: False - 入場者数: 2Actor Actor - 名前: 藍染ジーパン - 名前: JK Tシャツ - 価格: 24,800円 - 価格: 4,800円 - 在庫数: 15 - 在庫数: 33
  • 3. Actor はメッセージを受け取る● アドレスがある● メッセージを受け付ける(非同期)● メールボックスのようなものを持っている to: event001 Actor: event001 内容:入場(3) [メッセージキュー] ・入場(3) ・入場(8) to: event001 ・入場(5) ユーザー 内容:入場(8) Actor環境 - 名前: 握手会 to: event001 Actor 内容:入場(5) - 場所: メッセ - 入場者数: 2 他のActor
  • 4. Actor はメッセージを処理する ● 自分の番が来たらメッセージを1件だけ処理する ● このときに内部状態に変更を加えるかも ● 独立したスレッドのようなものが動いてる感じになるActor: event001 Actor: event001 Actor: event001[メッセージキュー] [メッセージキュー] [メッセージキュー]・入場(8) ・入場(5)・入場(5) 処理 処理- 名前: 握手会 - 名前: 握手会 - 名前: 握手会- 場所: メッセ - 場所: メッセ - 場所: メッセ- 入場者数: 5 - 入場者数: 13 - 入場者数: 18
  • 5. Actor はプロセス越しに通信するホスト: 10.10.0.1 プロセス: PID1001 Actor: yrm Actor: dojo プロセス: PID1002 dojo@PID1001 Actor: habu Actor: mitsuwo
  • 6. Actor はネットワーク越しに通信するホスト: 10.10.0.1 ホスト: 10.10.100.1 プロセス: TCP4001 プロセス: TCP4001 Actor: yrm Actor: dojo Actor: mine Actor: tashiro プロセス: TCP4002 プロセス: TCP4002 sho@10.10.100.1:4002 Actor: habu Actor: mitsuwo Actor: sho Actor: kubota
  • 7. 例: 簡単なチャット(DBの場合) DB INSERT SELECT SELECT メッセージを閲覧する人は 定期的にSELECTを投げて 新しいメッセージがないか 見に行く(ポーリング) 書き込み 閲覧 閲覧
  • 8. 例: 簡単なチャット(Actorの場合) Actor: ChatMaster メッセージ のコピー メッセージが届くとAgentが画 メッセージ 面に追加するのでポーリングし Actor: Agent Actor: Agent なくていい。 ただし、過去ログは残らない。 画面に追加 画面に追加 書き込み 閲覧 閲覧
  • 9. どこがいいの? [長所]● 並行プログラミングが簡単にできる – Actor の作者はスレッドを直接扱うことがない – Actor の作者は内部状態に対するロックを考えなくていい● スケーラブル – ボトルネックをどんどん小さなActorに分けられる – CPUをどんどん増やせる(コア数 or ホスト数) [短所]● 共有データの扱いがDBに比べて面倒なときがある● Actor 環境自体のオーバヘッドがある – メッセージのコピー – 一旦キューに入れて処理すること
  • 10. Actor環境の実装 (メッセージスロット)● スレッドセーフなキューを用意● Actor 毎にインスタンス化● メッセージ投入スレッド● 定時にメッセージを発生させる仕組み
  • 11. Actor環境の実装 (スケジューラー)● スレッドプールを用意● コア数分だけスレッドをたてておく● 各Actor に平等にスレッドを割り当てる● メッセージスロットから メッセージを受け取ってActorの処理を実行
  • 12. Actor環境の実装 (通信機構)● メッセージのネットワーク対応 – オブジェクトを深くシリアライズ → XML, json など – XML, json など → オブジェクトにデシリアライズ● ネットワーク通信を束ねる – あるエンドポイントに対して通信が発生したら接続 – Actor間・メッセージ間で接続を使い回す – 一定時間通信がなければ切断
  • 13. 実在するActor環境● Erlang/OTP エリクソン社のActor専用VM環境● Scala 言語に組み込み、通信なし?● akka(Java/Scala) JVM上で動作する環境、通信も可● Theron(C++) ドキュメントなど良さそう、通信なし
  • 14. 実例500エラーシステム
  • 15. 500エラーの用途● 異常事態を知る → 障害発生時の通知● 現在発生しているエラーを見る → リリース時 の影響確認● 過去に発生したエラーの見る → 問い合わせ対 応等● 一定期間に発生したエラーの状況を知る → い つまでも放置されているエラーを無くす
  • 16. こんな機能があるといい● 単位時間あたりの発生件数がしきい値を超え たらメールで通知する機能● 現在発生しているエラーを受信する機能● 過去に発生したエラーをDBから検索する機能● 今日とか今週のエラーの統計をメールで通知 する機能
  • 17. 500エラーシステム 発生件数がしきい値を500エラーが発生したら 超えたらメールPOST(HTTP)Webサーバ 受け取った500エラーを send(WebSocket)Webサーバ Actor: Agent Webブラウザ Actor: ReceiverWebサーバ Actor: Agent Webブラウザ (数百台) Actor: Logger Actor: Agent Webブラウザ INSERT 過去ログをSELECT参照 DB 集計データを定期的にメール

×