アクターモデルについて少し読みましたが、実際の状況でアクターを使用する方法、つまり、アクターモデルを使用して問題をモデル化する方法を実際には理解していません。
誰か説明してもらえますか?簡単な例または例へのリンクをいただければ幸いです。
アクターモデルについて少し読みましたが、実際の状況でアクターを使用する方法、つまり、アクターモデルを使用して問題をモデル化する方法を実際には理解していません。
誰か説明してもらえますか?簡単な例または例へのリンクをいただければ幸いです。
回答:
アクターは、アクションをモデル化するという意味で、メッセージなどを使用して、いくつかの便利なアイテムを提供するソフトウェアをモデル化する方法です...
アクターは単一のスレッドで実行できるため、ロックマジックの束がなくてもスレッドセーフではない操作や非並行操作を実行できます。アクターは、受信ボックス内のメッセージに応答します。コマンドを処理したい場合は、メッセージを送信すると、受信した順にそれらを処理します。通常のキューのように。スレッドセーフはここではキラーです。私はこれを、私が取り組んでいる多くのオープンソースプロジェクトで使用しています。
たとえば、Scalaなどの一部の言語では、アクターを分解し、通信するチャネルをリモートチャネルに変えることで、単一プロセスのアクターベースのコードを分散システムに簡単に変換できます。これは、実装がどれほど簡単であるかによって異なりますが、すばらしい機能です。
CRUDイベントではなく、タスクベースのイベントに焦点を当てるのに役立ちます。CRUDはシンプルですが、ファイリングキャビネットと対話するようなものです。生産するソフトウェアよりも多くの価値を提供できる場合、なぜそれを行うのですか?タスクベースのシステムで複数のアクションを単一の「更新」コマンドに結び付けることは、単にDBに保存するよりも便利です。これもCQRSのようなものに入ります。
トラビスの答えは確かです。並行性について話し始めると、リソースの問題を解決しようとしています。スレッドとロックの同時実行は、間違いを犯しやすいです。アクターモデルは、コードの並行部分を、別のコードに依存せずに並行して実行できる自己完結型のナゲットとしてプログラムするように強制するのに役立ちます。あなたは、競合状態やデッドロックのような厄介さを避けようとしています。
この会話では、俳優はあなたと私に似ています。あなたは私の脳に手を伸ばすことができず、私がタイプしているものを選ぶことができません。あなたは私に「なぜ私たちは存在するのか?」というメッセージを渡しました。私は座っていくつかの数字をクランチし、「だから私はそう思う」と答えました。あなたは私が惑星地球の私自身のスライスで何をしていたかを伝えることができませんでした。
編集:
どの言語に慣れているかは言いませんでしたが、自分の言語にアクターの実装があるかどうかを確認してください。たぶん最も単純なのは、Pythonの一部のアクターライブラリです。しかし、おそらく学習のためにはアーランが良いでしょう。言語は少し荒いですが、ニュアンスを乗り越えると、良い言語になります。
アクターは、システムで動作できる外部エンティティ(ユーザー、外部システムなど)を表すユースケース図の要素です。基本的なユースケースにはアクターが含まれます。豊富な例については、Googleの「ユースケース」を参照してください。