40幎の俳優のモデル

俳優のモデルに基づいお構築された高負荷のシステム-これが今日のトレンドです。 ハブに関する蚘事の䞍完党なリストがありたす。ここでは、ある皋床、このモデルたたはその実装の1぀が蚀及されおいたす。たずえば、 1、2、3、3、4、5、6、7です。 俳優に関するりィキペディアの良い蚘事がありたす。 残念ながら、それを読んだ埌、私はただ倚くの質問があり、その答えは元の゜ヌスでしか芋぀けるこずができたせんでした。 このレビュヌの結果をあなたの泚意を喚起したいず思いたす。



アクタヌモデルずは䜕ですか



アクタヌは䞀連のプラクティス、開発方法論、アヌキテクチャパタヌン、マヌケティングの動きですか



私の倧孊のコヌスでは、倚くの人ず同様に、蚈算可胜性の抂念はチュヌリングおよびポストマシンによっお定矩されたした。 マシンには状態がありたす-テヌプ内のすべおのセルの倀のセットです。 蚈算プロセスは䞀連のマシンステップであり、それぞれが状態を倉曎したす。 マシンの各ステップは、1぀の䞍可分なアクション操䜜のパフォヌマンスです。 これを埓来の蚈算モデルず呌びたす。



このような蚈算の解釈は、1぀の同じ時点で1぀の原子操䜜のみを実行できる堎合、グロヌバル時間の抂念に぀ながりたす。 このプロパティは、基本的にシングルプロセッサマシンでのマルチスレッドプログラミングの堎合に、さたざたな同期プリミティブのプロパティを蚌明するために䜿甚されたす。たずえば、本Gregory R. Andrews Fundamentals of multi-threaded、parallel and distributed programming 。



マルチプロセッサマシンたたは分散システムの堎合、通垞、グロヌバル時間の芁件は受け入れられたせん。 したがっお、蚈算可胜性の抂念を䞊列蚈算の堎合に䞀般化する必芁がありたす。 これらの䞀般化の1぀は、アクタヌモデルです。



どのようにすべおが始たりたしたか



遠い70幎代にこのモデルが登堎したのは、次䞖代マシンがマルチプロセッサになり、プログラムに人工知胜があるずいう匷い信念によるものです。 1973幎、 カヌルヒュヌむット 、ピヌタヌビショップ、およびリチャヌドシュタむガヌは、「 人工知胜のためのナニバヌサルモゞュラヌアクタヌフォヌマリズム 」ずいう蚘事を発衚したした。 この蚘事では、アクタヌの抂念を玹介し、倚くのアプリケヌションクラスがアクタヌモデルの特殊なケヌスであるこずを説明したした。 ちなみに、今幎は40呚幎でした



アクタヌは、受信したメッセヌゞに応答する蚈算゚ンティティの普遍的な抜象化です

  1. 他のアクタヌに有限数のメッセヌゞを送信できたすが、
  2. 有限数の俳優を䜜成し、
  3. 次のメッセヌゞを受信する動䜜を遞択したす。




アクタヌは、埓来のコンピュヌティングモデルず根本的にどのように異なりたすか



それらの違いは、電話ずメッセヌゞをメヌルで送信する堎合ず同じです。 最初の堎合これらは䞖界時間に基づいた蚈算です、耇数の人が1぀の電話番号に到達しようずするず、共有共有リ゜ヌス受信者ぞのアクセスを求めお競合し始めたす。 Office PBX、耇数回線電話、コヌルセンタヌ゜フトりェア-これらすべお同期プリミティブに類䌌は、着信コヌルの効率的な凊理を保蚌するために必芁です。 メヌルの堎合、レタヌの送信者俳優は、他の送信者ずのアクションを調敎する必芁があるため、レタヌを受信者に遅滞なく送信したす。 しかし ただし、受信者がい぀手玙を読むかはわかりたせん。



俳優理論の開発に関䞎しおいるのは誰ですか



2぀の最倧の専門家は、カヌルヒュヌむットず匟子のガルA.アガです。 ヒュヌむットは䞻に、他の蚈算アプロヌチがアクタヌモデルの特殊なケヌスであるずいう厳密な正圓性を扱い、アガは分散システムのさたざたなアプリケヌションを扱いたす。



䞻な結果



結果自䜓はそれぞれ別の倧きな蚘事のトピックなので、芁玄ず゜ヌスぞのリンクのみを提䟛したす。



アクタヌモデルのむベントは、郚分的に順序付けられたセットを圢成したす。 Ordering Lawsず呌ばれるこのセットの公理は、 Actors and Continous Functionals 1977でCarl HewittずHenry Bakerによっお説明されたした。 かなりの数の公理がありたすが、それらのポむントは、アクタヌモデルが実際の䜿甚に適しおいるこずを正圓化するこずです。



1985幎、Gul A. Aghaは、ヒュヌむットの指揮の䞋、論文「 ActorsA Model of Concurrent Computations in Distributed Systems」を擁護したした。 Aghaの論文では、アクタヌをサポヌトする最小限のプログラミング蚀語の構文ず、アクタヌを解決するための䞀連の兞型的なタスクず方法に぀いお説明しおいたす第4章。



アクタヌモデルの実装に察する実甚的なアプロヌチぞのもう1぀の重芁な貢献は、Phillip HallerずMartin Oderskyによる Inversion Controlのないむベントベヌスプログラミングの蚘事です。 Scalaで䜿甚されたアクタヌシステムの開発に察する新しいアプロヌチを提案したした。 その本質は、結果の䞊列蚘録プログラムが「通垞の順次」プログラミングに非垞に䌌おいるこずです。



たずえば、Cの開発甚に同じパスが遞択されたした。 C5のアクタヌは次のようになりたす。

static async Task SavePage(string file, string a) { using (var stream = File.AppendText(file)) { var html = await new WebClient().DownloadStringTaskAsync(a); await stream.WriteAsync(html); } }
      
      







ここで、 awaitキヌワヌドは、察応するメ゜ッドを非同期に呌び出し、応答を受信したずきに蚈算に戻るこずを意味したす。



2011幎、Gul A. AgaずKarmaniは、アクタヌシステムの実装における長幎の経隓をたずめ、最も䞀般的な実装方法を説明したした。 圌らは圌をFog Cutterず呌んだ。 確かに、ヒュヌむットはこのようなアヌキテクチャを繰り返し批刀しおいたす。たずえば、 ここずここで。批刀の本質は、これがアクタヌモデル党䜓を完党に実装しないモデルの特定のケヌスの可胜な実装の1぀にすぎないずいう事実に芁玄されたす。



実際、 俳優セマンティクスの基瀎の論文phdで、りィリアムデュグラスクリンガヌカヌルヒュヌむットの孊生は、俳優モデルには無限の非決定性があり、チュヌリングマシンは非決定性に制限されおいるこずを瀺しおいたす。 このこずから、圌ずカヌルヒュヌむットは、アクタヌモデルには実装できるがチュヌリングマシンには実装できないアルゎリズムがあるず結論付けおいたす。 したがっお、チュヌリングの蚈算可胜性を実装する「通垞の」コンピュヌタヌにアクタヌモデルを実装しようずするず、アクタヌモデルの特定のケヌスのみが実装されるずいう事実に぀ながりたす。







スプヌン䞀杯...



1988幎、Prolog蚀語の䜜成者であるRobert Kowalskiは、「蚈算は論理的な結論によっおグルヌプ化できる」ずいう論文を提唱したした。 これは、逐次蚈算および䞀郚の䞊列モデルに圓おはたりたす。 しかし、1988幎に、ヒュヌむットずアガは、 Guarded Horn句の蚀語の蚘事を発衚したした。それらは挔ductive的で論理的ですか 、アクタヌモデルの堎合、これは次の意味で真実ではないこずを瀺したした。プログラムの珟圚の状態は、前の状態から挔ductive的に埓わない堎合がありたす。 これが実際に意味するこずアクタヌモデルに基づくプログラムのデバッグは、シヌケンシャルプログラムの堎合ほど効果的ではありたせん。



なぜ関数型蚀語なのか



䞊列プログラミングに関しおは、なぜ関数型蚀語が発生するのですか この質問に答えるために、小さなC ++の䟋を考えおみたしょう。

 int j = 0; for(int i =0; ; ++i) { ++j; }
      
      





このコヌドにはI / O操䜜が含たれおいないため、別のスレッドが同じプロセッサコアでそのコヌドを実行できるようにするには、オペレヌティングシステムのスレッドスケゞュヌラがスレッドの切り替えを匷制するのを埅぀必芁がありたす。 これは、システム関数が別のスレッドで呌び出されたずき、たたはタむマヌからのむベントによっお発生する可胜性がありたす。 デフォルトでは、タむマヌむベントは15.6 msごずに1回発生し、この時間を1 msに短瞮しない理由を説明したす。 呜什型のスタむルを䜿甚するず、プロセッサのすべおのリ゜ヌスを単独で䜿甚しようずする「貪欲な」プログラムを䜜成できたすが、これに圱響を䞎える手段は限られおいたす。



このプログラムは、末尟再垰によっお曞き換えられたす。

 void cycle(int i, int& j) { ++j; cycle(i+1, j); }
      
      







このような自由な解釈のための関数型プログラミング蚀語のファンを蚱しおください。しかし、私の目暙はアむデアを実蚌するこずだけです。



ルヌプの繰り返しは、関数呌び出しに眮き換えられたした。 各関数の呌び出しポむントで、コンパむラがコヌドを埋め蟌み、珟圚のスレッドの実行に必芁な時間を蚈算し、必芁に応じお別のスレッドに切り替えるずしたす。 これで、ナノ秒以内に1぀のスレッドから別のスレッドに切り替えるこずができたす。 同じ考えにより、たずえばErlangのように軜量スレッドを実装できたす。



これらのプロパティの堎合、関数型蚀語は、䞊列凊理ずリアルタむムの反応が必芁な堎所で䜿甚するず䟿利です。



呜什型蚀語のリハビリテヌション



非垞に高速な応答が必芁な堎合、関数型蚀語は競合を超えおいたすが、芁求の凊理䞭にデヌタベヌスに移動する必芁があり、それからの応答時間が玄50-100ミリ秒である堎合、たたは倚くの蚈算を実行する必芁がある堎合、぀たり、倚くの関数呌び出しを行う堎合。 実行時間の蚈算ず各呌び出しぞのスレッドの切り替えに関連するオヌバヌヘッドが感じられ、この堎合は呜什型蚀語がより効果的です。 これを確認するには、 benchmarksgame.alioth.debian.orgをご芧ください。 このサむトでは、異なる蚀語で䜜成されたプログラムのパフォヌマンスを枬定し、同じ問題の解決策を比范するこずを提案しおいたす。 比范の䟋を次に瀺したす。reverse -complement 、 mandelbrot 、 regex-dna 、 pidigits 。



たず、予玄を行いたす。たず、これらは単なるテストです。あたり真剣に受け止める必芁はありたせん。 䞀方、お気に入りのプログラミング蚀語の状況に満足しおいない人は、自分の解決策を提案し、力のバランスを倉えるこずができたす。 第二に、私は、呜什型蚀語が明確な利点で勝぀リンクのみを匕甚したした。なぜなら、私の目暙は、䞊列凊理の線成に関連するオヌバヌヘッドに関するいく぀かのパラグラフで衚されたアむデアを説明するだけだからです。



別の興味深い芳察結果は、呜什型蚀語でのアクタヌモデルの実装です。通垞は、機胜的なErlangを超えるテストです。 繰り返したすが、私は予玄をしたす。Erlangがコンピュヌティング、぀たり即座の応答が必芁な堎所が苊手であるこずは誰もが知っおいたすが、これはオヌバヌヘッドの考えをもう䞀床確認するだけです。



メタファヌを1぀挙げたしょう。長距離ランナヌ、マラ゜ンランナヌ、短距離ランナヌ、スプリンタヌがいたす。 いく぀かは平均速床が䜎いスプリンタヌに比べお耐久性を必芁ずし、2぀目はマラ゜ンランナヌに比べお非垞に短い時間で最倧のパフォヌマンスを必芁ずしたす。 残念ながら、筋肉ずはたったく異なる特性が必芁なため、スプリントずマラ゜ンの距離で同等に高い結果を瀺すこずは、単に生理孊的に䞍可胜です。 これらのランナヌは、その数字によっおも際立っおいたす。マラ゜ンランナヌはドラむで筋骚たくたしく、スプリンタヌはアスレチックで筋肉質です。



第5䞖代のコンピュヌタヌ



䞊列プログラミングがそれほど単玔ではないずいうもう1぀の確認は、第5䞖代のコンピュヌタヌを䜜成するプロゞェクトです。



前䞖玀の80幎代、日本では第5䞖代のコンピュヌタヌを䜜成する詊みが行われたした。 このプロゞェクトは、未来が䞊列コンピュヌティング、倧芏暡デヌタベヌス、倧芏暡デヌタベヌスの論理凊理にあるずいう信念によっお再び開始されたした。



80幎代の䟡栌で5億ドルを費やしたした。 プロゞェクトは10幎続き、完党に倱敗したした 䞊列プログラムは、シングルスレッドのプログラムず比べおパフォヌマンスに倧きな利点はありたせんでした。 そしお䜕十幎もの間、Intelはシングルスレッドプロセッサを手に入れおきたした。 そしお、プロセッサの補造業者がクロック速床の増加に関する技術的な制限に盎面したずきのみ、䞊列凊理のアむデアが再び人気を集め始めたした。



アクタヌモデルの実装ぞのアプロヌチ



䞊蚘のパフォヌマンスの問題、およびヒュヌむットが、スレッドもメッセヌゞキュヌもよく知られおいる構造もアクタヌモデルの䞀郚ではないこずを䞀貫しお匷調しおいるずいう事実は、さたざたなアむデアず実装方法に぀ながっおいたす。



3぀の方向が区別されたす。





結論ずしお、2぀の芳察



䞊列コンピュヌティングの信念。


70幎代の蚘事を読みたす。将来はマルチプロセッサシステム、人工知胜にありたす。 80幎代未来はマルチプロセッサシステム、倧芏暡デヌタベヌス、論理デヌタ凊理に属し、珟圚未来は倚数のコア、ビッグデヌタ、クラりドコンピュヌティング、デヌタマむニングを備えたプロセッサに属したす。 40幎前の珟圚の状況ず予枬を類掚するこずは難しくありたせん。 これはすべお、ロバずニンゞンに関する動機づけに関するトレヌニングの䟋に䌌おいたす。 私たちは倧切な目暙に近づくための䞀歩を螏み出し、目暙に近づくに぀れお目暙は遠ざかりたすが、それが私たちを発展させ前進させたす。



䞀方で無芖し、他方で批刀。


私が初めお俳優のモデルに出䌚ったずき、それは比范的最近でした。 私は質問がありたした-なぜ私は以前圌女に぀いお知りたせんでした。 私は特にタネンバりム、グレゎリヌ・アンドリュヌス、 䌁業アプリケヌションの統合パタヌンなどの本を芋たした-それらはすべおメッセヌゞングの抂念に倚くのスペヌスを䞎えたすが、誰も俳優ずヒュヌむットのモデルに぀いお䞀蚀も蚀いたせん。 しかし、ヒュヌむットやアガを読んだずき、蚈算の䌝統的なモデルを批刀するこずに倚くの時間が費やされおいたす。 俳優は単に無芖しおいるようです。 プログラミングでも同じこずが起こりたす。呜什型プログラミングの䞖界では、関数型に぀いおは事実䞊䜕も知られおいたせん。少なくずも最近たで、関数型プログラミングの䞖界では非難されおいるようです。 たぶん誰かがこれが起こった理由を考えおいるのでしょうか



次は



この蚘事に興味がある堎合は、次のような䞀連の蚘事を曞く予定です。



蚘事に提案があれば、私は聞いおうれしいです。



PS



この蚘事は私のレポヌトの1぀に基づいおいたす



物語は、俳優から5分ほどで始たりたす。



All Articles