[解決済み] Node.jsのイベントシステムは、Akkaのアクターパターンとどう違うのでしょうか?
質問
私はこれまで
Node.js
を少し使っていて、自分ではかなりJavaに慣れていると思っています。 しかし、私はちょうど
Akka
を発見し、そのアクター パターンにすぐに興味を持ちました (私が理解したところでは)。
さて、私のJavaScriptのスキルがScala/Javaのスキルと同等であったと仮定して、どちらのシステムの実用性にも注目したいと思います。 特に Web サービスの観点で。
Nodeは多くの同時処理を扱うのに優れていると私は理解しています。 私は、資産管理システム用の優れた Node Web サービスが、(大規模で高トラフィックのアプリケーションで)同時に変更を送信する多くのユーザーの処理に優れていることを想像しています。
しかし、Akka のアクターについて読んだ後、それは同じことに秀でているように思えます。 そして、仕事を一口サイズの断片に減らすという考え方が好きです。 さらに、何年も前に私はErlangに手を出し、それが使用するメッセージパッシングシステムに恋をしてしまいました。
私は複雑なビジネスロジックを扱う多くのアプリケーションに取り組んでいますが、そろそろどちらかに大きく飛び込む時期なのではないかと思っています。 特にレガシーなStrutsとC#アプリケーションをアップグレードするのがそうです。
とにかく、聖戦を避けるために、2つのシステムは根本的にどう違うのでしょうか? どちらも同じ目標に向かっているように見えますが。
Akka の自己回復アーキテクチャが有利なのかもしれません。
EDIT
近い票を集めているようです。 この質問を"nodeとakkaのどちらが良いですか"として取らないようにしてください。 私が探しているのは、Nodeのようなイベント駆動型ライブラリとAkkaのようなアクターベースのライブラリの根本的な違いです。
どのように解決するのですか?
詳細は省きますが(Node.js の場合、私はほとんど知らないので)、主な違いは、Node.js は並列処理を伴わない並行処理のみをサポートし、Akka は両方をサポートしているという点です。どちらも完全なイベント駆動型であり、大きなワークロードに対応できますが、並列性がないため Node.js では困難です(つまり、並列性は複数のノードを起動し、それに応じてリクエストをディスパッチすることで明示的にコーディングされるため、実行時に柔軟性を欠くことになるのです)。分離された小さな作業単位(アクター呼び出し)を与えると、Akka は自動的に実行を並列化します。
重要なもうひとつの違いは、Node.js がコールバックからコールバックへエラー条件を渡すための作者の慣習に依存しているのに対し、Akka は構造的な方法で障害を処理するシステムを含んでいることです(必須である、親によって各アクターを監視させることによって)。根本的な問題は、非同期システムでは、同期スタックベースのシステムで採用されている例外処理の標準的なアプローチを使用できないことです。なぜなら、コールバックのエラーが発生するまでに、「呼び出し」コードは別のタスクに移動してしまうからです。システムに障害処理を組み込むことで、そのシステム上に構築されたアプリケーションが堅牢である可能性が高くなります。
上記はすべてを網羅したわけではなく、もっと多くの違いがあると思います。
関連
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] Node.jsでディレクトリに存在するすべてのファイル名のリストを取得する方法は?
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。
-
[解決済み] Mongoose Schema がモデルとして登録されていません。