5

私はphpを使用してサイトを構築することを検討していますが、node.jsで作成した場合、はるかに優れたパフォーマンスを発揮するいくつかの側面があります。同時に、サイトの大部分はPHPのままにする必要があります。これは、多くの機能がすでにPHPで開発されており、再開発やテストなどは大規模な作業であり、率直に言って、サイトのこれらの部分はPHPで完全に正常に動作するためです。

node.jsで最も実行することでメリットが得られるnode.jsのセクションを再構築し、Gearmanを使用してPHPにリクエストをnode.jsに渡すことを検討しています。このように、私はより多くのワーカーを起動してスケールアウトをスキャンし、ギアマンに負荷分散を処理させます。

私たちのサイトはトラフィックが多いので、ギアマンがこの負荷を処理できるかどうか心配です。この質問の生産性を維持したくないので、主に次の対処可能な点に焦点を当てましょう。

  • ギアマンは、メモリがあると仮定して、予想されるすべての負荷を処理できますか(一度に約3000以上のキューに入れられたジョブがあり、1秒あたり数千が処理される可能性があります)?
  • CURLを使用してnode.jsにリクエストを渡した場合、これはより適切に実行されますか?その場合、node.jsは、特定のスクリプトの複数のインスタンスに負荷を分散する方法を提供しますか?
  • 単一障害点がないようにギアマンを構成できますか?
  • 開発とスケーリングの両方の観点から、皆さんが目にすることができるいくつかの問題は何ですか?

私はこれらの幅広い点に取り組んでいるので、この投稿を閲覧する人は誰でも、互いに強い影響を与える問題に関する幅広い情報を1か所に集めることができます。

もちろん、これらすべてをテストしますが、このようなことを行う前に、できるだけ多くの情報を収集したいと思います。

編集:私がギアマンを使用している大きな理由は、それがノンブロッキング構造であるためではなく、それが非常に高速であるためです。

4

2 に答える 2

4

私はギアマンについてのあなたの質問にしか話すことができません:

ギアマンは、メモリがあると仮定して、予想されるすべての負荷を処理できますか(一度に約3000以上のキューに入れられたジョブがあり、1秒あたり数千が処理される可能性があります)?

短い:はい

長い:すべてに限界があります。ジョブのペイロードが非常に大きい場合、問題が発生する可能性があります。Gearmanはキューをメモリに保存します。そのため、ペイロードがGearmanで使用可能なメモリの量を超えると、問題が発生します。

単一障害点がないようにギアマンを構成できますか?

Gearmanには、MySQLを永続ストアとして使用するために使用できるプラグイン/拡張機能/コンポーネントがあります。そうすれば、Gearmanまたはマシン自体がダウンした場合に、中断したところからすぐに元に戻すことができます。複数のワーカーサーバーは、他のワーカーがダウンした場合でも状況を維持するのに役立ちます。

于 2012-05-25T20:01:04.793 に答える
1

ノードには、n個のプロセスに対して基本的な負荷分散を実行できるクラスターモジュールがあります。あなたはそれが役に立つと思うかもしれません。

ここnodejs-landの一般的なアーキテクチャは、ノードにhttpと通信させてから、httpプロキシサービスレジストリなどの負荷分散の方法を使用することです。他の場所でもほぼ同じだと思います。ギアマンについては「十分」かどうかはわかりませんが、これが一般的な考え方であれば大丈夫だと思います。少なくとも、他の人はそれがどのように進んだかを聞くことに興味があるでしょう!

編集:覚えておいてください、数の計算はノードのイベントループをブロックします!あなたがそれについて考えるならば、これはいくぶん明白です、しかし確かに心に留めておくべき何か。

于 2012-05-25T20:04:01.280 に答える