アクターモデルはどのように使用されますか?


18

アクターモデルについて少し読みましたが、実際の状況でアクターを使用する方法、つまり、アクターモデルを使用して問題をモデル化する方法を実際には理解していません。

誰か説明してもらえますか?簡単な例または例へのリンクをいただければ幸いです。


それとも、俳優モデルのことですか?
back2dos

俳優ではなく、エージェントを意味するのではないかと思います。:もしそうなら、このWikipediaのエントリをチェックアウトen.wikipedia.org/wiki/Software_agent
DWB

1
/でオタクを楽しませるために、グリーンランタンと猿の惑星に出演します。順番に、/のオタク。私たちの残りを楽しませる。
仕事

私は俳優モデルを意味し、明確にするために私の投稿を更新しました。
プヌータス

回答:


21

アクターは、アクションをモデル化するという意味で、メッセージなどを使用して、いくつかの便利なアイテムを提供するソフトウェアをモデル化する方法です...

  1. アクターは単一のスレッドで実行できるため、ロックマジックの束がなくてもスレッドセーフではない操作や非並行操作を実行できます。アクターは、受信ボックス内のメッセージに応答します。コマンドを処理したい場合は、メッセージを送信すると、受信した順にそれらを処理します。通常のキューのように。スレッドセーフはここではキラーです。私はこれを、私が取り組んでいる多くのオープンソースプロジェクトで使用しています。

  2. たとえば、Scalaなどの一部の言語では、アクターを分解し、通信するチャネルをリモートチャネルに変えることで、単一プロセスのアクターベースのコードを分散システムに簡単に変換できます。これは、実装がどれほど簡単であるかによって異なりますが、すばらしい機能です。

  3. CRUDイベントではなく、タスクベースのイベントに焦点を当てるのに役立ちます。CRUDはシンプルですが、ファイリングキャビネットと対話するようなものです。生産するソフトウェアよりも多くの価値を提供できる場合、なぜそれを行うのですか?タスクベースのシステムで複数のアクションを単一の「更新」コマンドに結び付けることは、単にDBに保存するよりも便利です。これもCQRSのようなものに入ります。


役立つ回答とリンクをありがとうございます。俳優の雰囲気を良くするために、どの言語を検討することをお勧めしますか?
プヌータス

1
どの言語に慣れているかによると思います。ただし、Scalaは言語の概念であるため、アクターに関する最高のドキュメントがいくつかあるかもしれません。Erlangは一般にメッセージングに最適ですが、言語全体はその概念に基づいています。
トラビス

ScalaとErlangを見てみましょう。アーランの初心者向けガイドを見つけ、そこから始めましょう。ありがとう!
プヌータス

+1:非常に興味深い。リモートアクターを実装するC ++ライブラリがあるかどうか知っていますか?私はScalaを使用してうれしいですが、私のプロジェクトはC ++です。
ジョルジオ

1
このC ++アクターモデルの実装を考慮してください:actor
Chen OT

4

トラビスの答えは確かです。並行性について話し始めると、リソースの問題を解決しようとしています。スレッドとロックの同時実行は、間違いを犯しやすいです。アクターモデルは、コードの並行部分を、別のコードに依存せずに並行して実行できる自己完結型のナゲットとしてプログラムするように強制するのに役立ちます。あなたは、競合状態やデッドロックのような厄介さを避けようとしています。

この会話では、俳優はあなたと私に似ています。あなたは私の脳に手を伸ばすことができず、私がタイプしているものを選ぶことができません。あなたは私に「なぜ私たちは存在するのか?」というメッセージを渡しました。私は座っていくつかの数字をクランチし、「だから私はそう思う」と答えました。あなたは私が惑星地球の私自身のスライスで何をしていたかを伝えることができませんでした。

編集:

どの言語に慣れているかは言いませんでしたが、自分の言語にアクターの実装があるかどうかを確認してください。たぶん最も単純なのは、Pythonの一部のアクターライブラリです。しかし、おそらく学習のためにはアーランが良いでしょう。言語は少し荒いですが、ニュアンスを乗り越えると、良い言語になります。


gnatの編集が私に向けられているかどうかはわかりませんが、私の選択の武器は通常Haskellになりがちです。アーランは間違いなく良い言語です。Haskellは従来、並行性についてはCSPに依存してきましたが、いくつかのアクター実装があります。
M15K

-2

アクターは、システムで動作できる外部エンティティ(ユーザー、外部システムなど)を表すユースケース図の要素です。基本的なユースケースにはアクターが含まれます。豊富な例については、Googleの「ユースケース」を参照してください。


6
それらはスティックフィギュアと呼ばれていませんか?
pillmuncher

1
私は明確ではありませんでした、あなたは誤解しました。私は俳優モデルについて話していました。
プヌータス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.