Um mehrere HTTP-Server gleichzeitig auszuführen, verwenden Sie die reusePort-Option in Bun.serve(), die denselben Port über mehrere Prozesse teilt.
Dies lastverteilt eingehende Anfragen automatisch über mehrere Instanzen von Bun.
ts
import { serve } from "bun";
const id = Math.random().toString(36).slice(2);
serve({
port: process.env.PORT || 8080,
development: false,
// Denselben Port über mehrere Prozesse teilen
// Das ist der wichtige Teil!
reusePort: true,
async fetch(request) {
return new Response("Hello from Bun #" + id + "!\n");
},
});NOTE
**Nur Linux** — Windows und macOS ignorieren die `reusePort`-Option. Dies ist leider eine Einschränkung des Betriebssystems mit `SO_REUSEPORT`.Nachdem Sie die Datei gespeichert haben, starten Sie Ihre Server auf demselben Port.
Unter der Haube verwendet dies die Linux SO_REUSEPORT- und SO_REUSEADDR-Socket-Optionen, um eine faire Lastverteilung über mehrere Prozesse hinweg sicherzustellen. Erfahren Sie mehr über SO_REUSEPORT und SO_REUSEADDR
ts
import { spawn } from "bun";
const cpus = navigator.hardwareConcurrency; // Anzahl der CPU-Kerne
const buns = new Array(cpus);
for (let i = 0; i < cpus; i++) {
buns[i] = spawn({
cmd: ["bun", "./server.ts"],
stdout: "inherit",
stderr: "inherit",
stdin: "inherit",
});
}
function kill() {
for (const bun of buns) {
bun.kill();
}
}
process.on("SIGINT", kill);
process.on("exit", kill);Bun hat auch das node:cluster-Modul implementiert, aber dies ist eine schnellere, einfachere und eingeschränktere Alternative.