node.jsをtcpサーバーとして使用すると、比較的多数のGPSデバイス(〜3000デバイス)を管理し、受信データをデータベースに格納するための最初のステップとしてこのフェーズでも、私は気になるパフォーマンス上の問題を考えています。彼らが私を噛む前に、私はそれらをキャッチしたいと思います。Node.js GPSデバイスのトラッキングパフォーマンスの考慮点
1 - 私は、次のようないくつかのコードを参照してくださいのjavaまたはルビーのような言語を使って書かれた同様のサーバを見て:
javaの
Thread serverThread = new Thread(() -> {
System.out.println("Listening to server port 9000");
while (true) {
try {
Socket socket = serverSocket.accept();
...
ルビー
require 'socket'
server = TCPServer.new ("127.0.0.1",8080)
loop do
Thread.start(server.accept) do |client|
...
これは、TCPサーバに接続するすべてのデバイス(ソケット)に別のスレッドを与えるようですか? node.jsはシングルスレッドであり、非同期的に動作するため、次の単純なアプローチのような着信接続が多数の同時接続を満足するかどうか心配すべきですか?
net.createServer(function(device) {
device.on('data', function(data) {
// parse data
// store in database
});
});
2 - 接続プールを使用してデータベース接続を制限する必要がありますか?データベースとしてGISと監視のためのもう一方の側からの問い合わせとして、プールのサイズはどのくらいあるべきですか?
3 - このようなシステムでキャッシュを有効にするにはどうすればよいですか?
誰かがこの考えに少しの光を当てたらすばらしいはずです。私はまた、このようなシステムを実装する際に経験しているか、または認識しているかもしれない他のパフォーマンスの考えを聞きたいと思います。ありがとう。
完全な質問ですが、なぜ定期的なhttp要求の代わりにソケットを使用するのですか? – Festo
@Festo、私はちょうどこのレイヤーでは、デバイスと通信するためにソケットを使用する必要があります、私は定期的な要求を使用することができますが、データがリアルタイムで私はソケットと一緒に行くことができるTCP層でGPSデバイスと通信することができます。 – dNitro