2017-01-22 8 views
4

私は1つのエンドポイントを持つ単純なREST-APIを構築しており、これは深刻に侵入されます。それをPOST /messageとしましょう。私は、NodeまたはPHPを使うかどうかを決める必要があります。データベースはMySQLです。PHPとノードのREST-API

- HTTP-Authによる認証情報は、データベースから読み取って確認されます。 - 別のREST-APIへのリクエスト。 - 別のwrite-databaseアクションが実行されます。

したがって、2つのデータベース接続と別のREST-APIへのHTTP要求があります。ルートはすべてスピードでなければなりません。私は現在のシステムがPHPに基づいているのでPHPに行くだろうが、経路内の要求は私に恐怖を与える。なぜならPHPを使用するときに非同期に行われないからである。私はこのリクエストの結果を気にしません。ノードでは、資格情報を確認してsuccessを返すだけで、リクエストを非同期で送信し、リクエストが返ってからデータベースの書き込みパフォーマンスを行います。私はsuccessでREST呼び出しを返すときにPHPでこれを行うことはできないと思いますが、すべては前もってやっていなければなりません。

PHPまたはノードに移動しますか?あなたが書いた

答えて

7

をPHP

を使用した場合、それが非同期に行われていない原因は、あなたはそれが不可能であることを確認していますか? Guzzle Async Requestsでさえも?

とにかく、私はいくつかの言語で同じREST APIサーバーを実装し、(Ubuntu Linuxの16.04、i7のインテルNUC、16ギガバイトRAM)と見られるのと同じマシン上でテスト:

  • のJava、14000 REQ /秒(source code)
  • 進み、12000 REQ /秒(source code)
  • PHP 7、6500 REQ /秒(source code)
  • C#(.NETコア)、5000 REQ /秒(source code)
  • なしNode.jsのが効率的に複数のコアを使用することができなかった唯一のプラットフォームであったことをde.js、4200 REQ /秒(source code)

(source)

注意。

あなたの要件をシミュレートするために、PHPに15msのスリープを追加し、Node.jsに15msのsetTimeoutを追加してみました.2000の同時リクエストでNode.jsが高いスループット(4300 vs 1800 req/sec)だけでなく、より高いレイテンシ(450 vs 130 ms/req)を提供します。たぶん1つのコアだけを使用していて、多くのイベントに応答しなければならなかったからでしょう。より高いスループットでのこのより高い待ち時間は、イベントループを使用することによって引き起こされる可能性があります。 Apache(pre)forkを使用すると高価になる可能性がありますが、並行性を高めることができます。

私はこのすべてがあなたに直接役立つとは確信していませんが、あなた自身の研究の出発点になるかもしれません。楽しむ!

関連する問題