web-dev-qa-db-ja.com

アクターモデルとマイクロサービスの違いは何ですか?

両方とも並列のように見えますMPI通信ネットワークのプロセスです。サービスでアクターを識別します。アクターはより動的です(サービスネットワークはより静的ですが、アクターを作成して呼吸として殺すことができます)、または何ですか?

23
Little Alien

アクターモデル-同時計算のための数学モデル、およびマイクロサービス-サービス指向アーキテクチャーの実装。類似点はかなり偶然です。

確かに、いくつかのアクターモデルに基づいてマイクロサービスを構築し、いくつかのマイクロサービスアーキテクチャをアクターモデルでモデル化することは可能ですが、これらが同等であるとは限りません。 「マイクロサービスシステム」を「メールシステム」に置き換えても、それはそのままです。 「アクターモデル」を「通信順次プロセス」(CSP)に置き換えます。CSPとアクターモデルシステムは互いにモデル化できるため、これも「真」になります。

アクターモデルが与えられれば、マイクロサービス、SOA、または電子メールを使用してそれを実装できますが、実際に比較するために同じレベルの抽象化レベルにあるという意味ではありません。

また、アクターモデルはバッファーを強調するため(マイクロサービスの世界ではメッセージキューと見なすことができます)、一部のアクター/マイクロサービスは、本質的に非同期通信がまだ可能な間は準備ができていない場合があります。

言い換えれば、俳優モデルとの比較は、非常に高いレベルの考察でいくつかの創造的な洞察をもたらす可能性がありますが、ほとんどはリンゴ対オレンジです。

SOA/microservicesの数学的モデルをActorモデルと比較することを目的とする場合、次の理由からも簡単ではありません。1)合意されていない数学的SOAのモデル、2)モデルには通常、目的が含まれます。また、SOA /マイクロサービスのモデリングは、アクターモデルの目的とは異なる可能性が非常に高くなります。モデル化の試みの一例SOA here

もちろん、マイクロサービスを使用してアクターモデルシステムを作成し、各サービスをアクターと呼ぶことができます(アクターモデルの厳密な定義を参照)。しかし、これは一般的な意味で2つの間に意味のある関係があることを意味するものではありません。

11
Roman Susi

マイクロサービスは、問題の各領域を独自のデプロイ可能なアーティファクト(実行可能ファイル、スクリプト、JAR、WARなど)に分割することにより、ソフトウェアを整理する方法です。これにより、たとえば、必要なインスタンスをさらにデプロイして拡張できるようになるなど、柔軟性が得られます。ユーザーがショッピングカートに物を追加するよりも、カタログを見るのに多くの時間を費やしたとします。 1つのデプロイ可能なアーティファクトがカタログ機能を処理し、もう1つがショッピングカート機能を処理します。カタログサービスのコピーをさらに実行して、負荷を処理できます。

また、内部の変更からそれらを分離します。リレーショナルデータベースからドキュメントデータベースに移動して製品データを保存するとします。オッズはショッピングカートサービスを変更する必要がない場合です。

アクターモデルは、デプロイ可能なアーティファクトよりも低いレベルであり、サービスを実装したオブジェクトのタイプについてより詳細です。上記の例を続けると、システムにショッピングカートがアクターによって表されている可能性があるため、すべてのユーザーのカートは別個のアクターであり、メッセージにより、アイテムの追加、アイテムの削除、現在のコンテンツでの応答、配送の追加、チェックアウトが指示されますなど。この場合、まだマイクロサービスがあり、それはアクターモデルで実装されています。

2
Rob Crawford

マイクロサービスステートレスサービスの性質上、それぞれがリクエストを処理できる複数のレプリカを作成することにより、水平方向にスケーリングします。彼らは無国籍の性質のおかげで失敗に対して弾力性があります。

Actors負荷が少ないか、利用可能なリソースが多いパーティションに移動することでスケーリングします。それらはstatefulです。アクターのフレームワークによっては、別のアクターを動的に起動したり、アクターのホットバックアップを常に維持してプライマリアクターの障害に対処したりできるため、障害に対する耐性があります。

繰り返しになりますが、マイクロサービスもステートフルである可能性がありますが、マイクロサービスの設計原則に反しています。

1
Sushant

主な違いは粒度の1つだと思います。

アクターモデルの場合、アクターはOOPで1つのオブジェクトに相当するものを表す傾向があるという点で、比較的粒度が細かいです。

マイクロサービスの場合、1つのマイクロサービスが多数のアクターまたはオブジェクトで構成される可能性があるという点で、比較的粗いです。

現代のWebがさらに細かいところまで同じ( "マクロサービス")であると言っても、想像力をあまり引き延ばす必要はないことに注意してください。そして(例えば)HTTPサーバーはマクロサービス、データベースサーバーはマクロサービス、ウェブブラウザはマクロサービスなどです。

それはすべて大体同じです-通信する孤立した部分。変化するのはピースのサイズ(したがってピースの数)だけです。

1
Brendan