Node.js vs. Springboot: Hallo Welt-Leistungsvergleich

In diesem Artikel geht es um Node.js und Springboot, um meine Suche nach Leistungsvergleichen fortzusetzen. Spring Boot ist eine auf Java basierende, schlanke Servertechnologie, die hauptsächlich für Webdienste verwendet wird. Mit Spring Boot können Sie ganz einfach eigenständige Spring-basierte Anwendungen in Produktionsqualität erstellen, die Sie „einfach ausführen“ können. Spring Boot ist in der Java-Welt sehr beliebt.

Wer ist Ihrer Meinung nach schneller für einen einfachen Hallo-Welt-Fall? Ich denke, die Antwort könnte Springboot sein, weil es in Bytecode kompiliert wird, während Node.js interpretiert wird. Wenn Sie daran interessiert sind, die richtige Antwort herauszufinden, lesen Sie weiter. Sie könnten überrascht sein!

Aufstellen

Der Test wird auf einem MacBook Pro M1 mit 16 GB RAM durchgeführt. Der Test wird mit dem bekannten HTTP-Tester Bombardier durchgeführt . Der Test wird für 50, 100 und 200 gleichzeitige Verbindungen ausgeführt.

Die Versionen sind:

  • Node.js v19.6.0
  • Springboot 3.0.2 mit Java17

Node.js

Der Node.js-Code verfügt über einen minimalen Router, wodurch er der Funktionalität des nativen Spring-Servers entspricht.

import http from "node:http";

http.createServer((req, resp) => {
  try {
    if (req.method !== "GET") {
      return resp.writeHead(405).end();
    }
    if (req.url !== "/") {
      return resp.writeHead(404).end();
    }
    resp.writeHead(200, {
      "content-type": "text/plain",
    });
    resp.end("Hello world");
  } catch (e) {
    resp.writeHead(500).end();
  }
}).listen(3000);

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/")
    public String handleRequest() {
        return "Hello World!";
    }
}

Für jede Parallelitätsebene werden insgesamt 5 Millionen (5 Millionen) Anfragen ausgeführt.

Folgende Messungen werden durchgeführt:

  • Zeit genommen
  • Anfragen pro Sekunde
  • Latenzen : Mittelwert, Median, q25, q75, q90, Maximum (in Millisekunden)
  • Systemauslastung : Durchschnittliche CPU- und Speicherauslastung

Hier sind die Diagramme, die die Ergebnisse für jede Art von Messung darstellen:

(Beachten Sie, dass alle Latenzen in Millisekunden angegeben sind)

Meine Analyse

Erstens ist Spring/Java eine sehr ressourcenintensive Anwendung. Für einen einfachen Hallo-Welt-Fall mit 200 gleichzeitigen Verbindungen verwendet Spring ~190 % CPU und 470 MB Speicher. Im Vergleich dazu nutzt Node.js 95 % CPU und 82 MB Speicher.

Was nun die Latenzen betrifft, so sind die Latenzen von Spring bis zum 3. Quartil niedriger als die von Node.js. Spring schlägt mit maximalen Latenzwerten fehl, die mehrere Sekunden betragen, während die maximale Latenz von Node.js 123 ms erreicht. Sogar die mittlere Latenz von Spring (0,6 ms) ist deutlich besser als die von Node.js (2,5 ms).

Zusammenfassend lässt sich sagen, dass Node.js mehr RPS mit deutlich weniger Systemressourcen bietet.

UPDATE : Da dieser Artikel in der Community ziemlich beliebt wurde, erhielt ich Kommentare, dass der Vergleich des nativen Servers von Node mit einem Framework wie Springboot unfair sei. Ein sehr berechtigter Punkt. Ich habe bereits Artikel zum Vergleich von Express und Fastify mit Springboot veröffentlicht. Die Links sind:

  • Express vs. Springboot
  • Fastify vs. Springboot
  • Express vs. Spring Webflux
  • Fastify vs. Spring Webflux

Suggested posts

Konfigurieren und verwenden Sie Apache Kafka mit Spring Boot

Kafka mit Federstiefel

Konfigurieren und verwenden Sie Apache Kafka mit Spring Boot

Einführung Apache Kafka ist eine verteilte Open-Source-Streaming-Plattform, die umfangreiches, fehlertolerantes Echtzeit-Datenstreaming mit hohem Durchsatz abwickelt. Das System basiert auf einem Publish-Subscribe-Modell, bei dem Produzenten Nachrichten zu Themen veröffentlichen und Verbraucher diese Themen abonnieren, um die Nachrichten zu konsumieren.

Unsere Frühlingsschilder

Unsere Frühlingsschilder

Für uns hier im Süden Ontarios und insbesondere in unserem eigenen Mikroklima ist es ein Hin und Her zwischen der Ankunft bestimmter Vögel und dem Erscheinen einer von zwei frühlingsblühenden Pflanzen. Lungenkraut und Blutwurz.

Related posts

Was Sie in Ihrer Wartezeit tun können (Warten auf Ihren ersten Job in der Technikbranche)

Was Sie in Ihrer Wartezeit tun können (Warten auf Ihren ersten Job in der Technikbranche)

Der Wechsel in eine neue Karriere kann eine große Herausforderung sein, wenn man es alleine versucht. Es ist wichtig, Verantwortungspartner zu finden, die sich auf dem gleichen Lernniveau wie Sie befinden und ähnliche Ziele, Hartnäckigkeit und Tatendrang haben.

Warum manche Freiberufler ihr Leben vortäuschen

Warum manche Freiberufler ihr Leben vortäuschen

Ich war kürzlich auf Linkedin, dem weltweit größten professionellen sozialen Netzwerk, und habe Beiträge von freiberuflichen Designern gefunden, denen ich folge und die meine Aufmerksamkeit erregt haben. Sie alle haben Fotos aus Flugzeugen, am Strand mit ihren Laptops, aus Schwimmbädern und Büros mit atemberaubender Aussicht gepostet.

GRENZENLOSES LEBEN

Wenn man erwachsen wird, wird einem oft gesagt, dass die Welt so ist, wie sie ist, und dass das Leben nur darin besteht, sein Leben in der Welt zu leben, niemals sein Leben zu riskieren, einfach einem festgelegten Weg zu folgen und am Ende zu sterben, und versucht, es nicht zu tun Schlage zu viel gegen die Wände. Aber das ist ein sehr begrenztes Leben.

3 bewährte Möglichkeiten, Ihre Schreibfähigkeiten zu verbessern

Die Vorteile des Schreibens und Strategien, die Ihnen dabei helfen

3 bewährte Möglichkeiten, Ihre Schreibfähigkeiten zu verbessern

Im Jahr 2022, mit der Veröffentlichung von GPT-3, scheinen Schreibfähigkeiten an Bedeutung zu verlieren. Mit KI können auch Menschen mit schlechten Schreibkenntnissen hochwertiges Personal hervorbringen.