私は最近akkaを見てきましたが、それはかなり印象的です。位置の透明性、監視階層など、アーランのキラー機能のほとんどを備えているようです。 erlangにはakkaにはない機能がありますか?
免責事項:私はAkkaのPOです
それらは私の頭の上からのものです。
一方、Akkaを使用するということは、Scala、Java、Groovy、またはJRubyを使用してアプリケーションを作成できることを意味します。
アーランでは、約1000の削減ごとにプロセスが切り替えられることが保証されています。 Scala/Akkaエージェントなどの単純なフレームワークでは、受信の作業が完了するまでスケジューラを所有します。チェックメイト。ゲームオーバー。 Hasta la Vista :)皆さん、疑似技術に時間を無駄にしないでください。ここにいる人たちがScala= Erlangと比較してください。
また、「キラー機能」と呼ばれる他の多くの機能がありますが、ここに私のアドバイスがあります。機能に関しては考えず、特定の言語を可能にするイディオムについて考えてください。 Scala「最高の機能」を盗む、Erlangは適切なイディオムでシステムを確実に構築できるようにします。分散型の信頼できるシステムについてのあなたの考え方、Erlangがあなたを教え、あなたをアップグレードします。Scala言語。
プロセスの分離について言及している人はほとんどいません。 「あなたのスレッドが私のジャンクを台無しにすることはできない」という保証がなければ、分散システムを推論するのははるかに困難です。 (すでに十分に難しいwith Erlangのプロセス。)
AFAIK(JVMでの直接的な経験が限られていることを考えると、それほど遠くはありません)、Erlangだけが実際にJVMでプロセス分離を「正しく」取得します。グーグル氏は、「マイクロリブート」技術(「リカバリ指向コンピューティング」)を使用する研究システムに関するFoxとCandea(?)の研究の入手先に関するヒントを提供できます。 Erlang開発者はその研究を読み、いくつかのことを言います。
私にとっては、ダウンタイムなしでErlangクラスター全体のホットコードスワッピング(例:make:all([netload]
)は、Erlangのキラー機能の1つです。
しかし、あなたの質問を逆にしましょう:akkaにはErlangにはないものがありますか?もちろん、Earlangに近づくために、Javaに数十の拡張機能とライブラリ(scala、akka、spring、osgi、...)を追加できます。しかし、ポイントはどこにあるのでしょうか?これらのすべての拡張機能は、20年以上にわたって、ダウンタイムなしで最高のスケーラビリティを提供できることが実証されているシンプルなErlang言語を学ぶよりもはるかに複雑です。
おそらく、Erlangはより大きな分散システム(vjacheの答えに従う)には適していますが、通常のサーバーでは複数のCPUのフルパワーを使用したい場合、Akkaが適切な選択肢です。Javaエコシステム。