Kafka handmade analytics
Author Cloudapp
E.G.

Next.js 14 / Upstash Kafka - Benutzerdefinierte Hochleistungs-Analytik

5. Juli 2024
Inhaltsverzeichnis

Upstash Kafka ist aufgrund seiner serverlosen Architektur eine ideale Lösung für Website-Analysen, die die Verwaltung der Infrastruktur überflüssig macht und die betriebliche Komplexität und Kosten reduziert. Seine Pay-as-you-go-Preise gewährleisten Skalierbarkeit, wodurch es sich sowohl für kleine als auch für große Anwendungen eignet. Upstash Kafka bietet einen hohen Durchsatz und eine niedrige Latenz, was für die Verarbeitung und Analyse von Daten in Echtzeit entscheidend ist.

Integration

Die Integrationsfunktionen von Upstash Kafka mit verschiedenen Datenquellen und Analysetools rationalisieren die Datenpipeline und ermöglichen eine nahtlose Aufnahme, Verarbeitung und Analyse. Darüber hinaus gewährleistet Upstash Kafka mit seiner verteilten Architektur die Beständigkeit und Zuverlässigkeit der Daten und stellt sicher, dass die Analysedaten stets verfügbar sind. Die Benutzerfreundlichkeit in Verbindung mit robusten Sicherheitsfunktionen macht Upstash Kafka zu einer zuverlässigen und effizienten Wahl für die Verarbeitung großer Mengen von Website-Analysedaten, die verwertbare Erkenntnisse für Geschäftsentscheidungen liefern.

5 Vorteile von Kafka

  1. Echtzeit-Datenverarbeitung: Kafka zeichnet sich durch die Echtzeit-Datenverarbeitung aus und ermöglicht Unternehmen, Analysen auf Live-Datenströmen durchzuführen, was für rechtzeitige Einblicke und Entscheidungen unerlässlich ist.

  2. Skalierbarkeit und Fehlertoleranz: Die verteilte Architektur von Kafka erlaubt eine nahtlose Skalierbarkeit und robuste Fehlertoleranz, was eine zuverlässige Datenaufnahme und Analytik selbst bei wachsenden Datenmengen sicherstellt.

  3. Hoher Durchsatz und geringe Latenz: Kafka ist für hohen Durchsatz und geringe Latenzzeiten konzipiert, was es ideal für Analyseanwendungen macht, die eine schnelle Datenaufnahme und sofortige Verarbeitung erfordern.

  4. Integration mit Analysetools: Kafka integriert sich nahtlos mit verschiedenen Analysetools und Plattformen wie Apache Spark und Apache Flink, wodurch seine Fähigkeiten für umfassende Datenanalysen erweitert werden.

  5. Effiziente Datenspeicherung und -abruf: Die effizienten Mechanismen von Kafka zur Datenspeicherung und -abruf unterstützen groß angelegte Datenanalysen und ermöglichen es Organisationen, massive Datensätze problemlos zu speichern, zuzugreifen und zu analysieren.

Durch die Nutzung dieser Vorteile ermöglicht Kafka Unternehmen, ihre Analysefähigkeiten zu verbessern, was zu fundierteren Entscheidungen und einer verbesserten Betriebseffizienz führt.

Hier ist das GitHub-Repository mit dem gesamten Code, wo Sie alle Details zu meiner Kafka-Integration sehen können.

Verwendeter Stack

Ich beginne mit meinem Standard-Stack:

  • Next.js 14 als Web-Framework, und ich werde die bereitgestellte Middleware-Edge-Funktion verwenden

  • Upstash Kafka in Kombination mit dem NPM-Paket @upstash/kafka

  • Neon.tech Serverless Postgres

  • Vercel für das Hosting

One new NPM Package

Los geht's mit einen neuen Kafka Cluster

Der Setupprozess ist sehr einfach. Anmelden bei Upstash:

Einloggen und erstellen eines Upstash Kafka Clusters

Wählen Sie oben "Kafka" und unten rechts "+ Cluster erstellen". Wählen Sie einen Clusternamen, eine Region und den Replikat-Typ, und schon sind Sie fertig.

Kafka-Upstash-create-cluster
Kafka-Upstash-create-cluster

Im zweiten Schritt erstellen Sie ein "Thema", in dem Ihre Nachrichten gespeichert werden und in dem Sie die "Bereinigungsrichtlinie" und die "Aufbewahrungseinstellungen" auswählen.

Kafka-Upstash-create-topic
Kafka-Upstash-create-topic

Abrufen der benötigten Daten für die .env.local

Kafka-Upstash-settings
Kafka-Upstash-settings

Env-Variable in .env.local hinzufügen

Verwenden Sie die zuvor kopierten drei Werte für die lokale .env-Datei.

Fetch Request Details in der Datei middleware.ts

Als ersten Schritt importiere ich das „Kafka“-Paket in die Datei middleware.ts unter src und füge auch „NextFetchEvent“ von next/server hinzu.

Dann definiere ich die Verbindung mit den vorbereiteten .env-Variablen.

Der nächste Schritt besteht darin, das Ereignis zur Funktionsdefinition hinzuzufügen.

Jetzt bin ich bereit, die Details aus dem „request“-Objekt abzurufen und sie in unser Kafka-Cluster zu pushen. Der erste Teil mit const newDate = xx wird verwendet, um das Attribut „created_at“ im Objekt messagekafka zu setzen, weil ich zwei Stunden hinzufügen muss (ich lebe in der Mitteleuropäischen Zeit ;-)).

Unterhalb der Erstellung des „messagekafka“-Objekts starte ich den „producer“ und definiere das „topic“ (denken Sie an den Namen, den Sie in Upstash eingerichtet haben).

On the last line, I push the data to the cluster.

Komplette Middleware.ts Datei

Starten der Testumgebung

Testen wir es mit dem Befehl

Öffnen Sie Ihren Browser und gehen Sie zu dem Link http://localhost:3000. Sie werden sehen, dass Nachrichten in Ihrem Cluster erscheinen.
Kafka-Upstash-messages
Kafka-Upstash-messages

Tabelle zu Prisma Schema hinzufügen

Die Kafka-Verbindung ist aktiv und läuft. Jetzt werde ich das Schema für die neue Postgres-Tabelle in Prisma erstellen.

Nachdem Sie die Datei schema.prisma unter prisma gespeichert haben, führen Sie den Befehl aus:

Jetzt sollten Sie die Tabelle im DB-Schema in der neon.tech-Konsole sehen.

API-Route zum Lesen von Kafka-Nachrichten

Jetzt erstelle ich eine neue API-Route für mein nächstes Projekt.

Hier definieren wir keinen Kafka Producer, wie wir es in der middleware.ts gemacht haben, sondern einen Kafka.consumer, um die Nachrichten eines Themas zu lesen. Für die „consumerGroupID“ und „instanceId“ können Sie einen beliebigen Namen angeben. Diese werden für den Offset verwendet, was bedeutet, dass, wenn es mehrere Konsumenten gibt, jeder Konsument seine eigene „consumerGroupId“ haben sollte, damit er seinen eigenen „Offset“ beim Abrufen der Nachrichten verwenden kann.

API Route für das Übertragen der Daten zu Postgres

Wie Sie wahrscheinlich gesehen haben, verwende ich die zweite API-Route, um die Daten über Prisma an Postgres zu senden. (src/app/api/user/tracking)

Endpunkt aufrufen

Wenn Sie jetzt einen POST-Aufruf an den Endpunkt machen:

http://localhost:3000/api/startConsumer

Sie erhalten die verarbeitete Nummer als Antwort und sollten die Daten in Ihrer Postgres-Tabelle sehen. Vergessen Sie nicht, den API-Schlüssel als Header „x-api-key“ zu übergeben.

Neon-Console-data
Neon-Console-data

In den folgenden Blogposts werden wir den Import nach Postgres über Vercel Cron automatisieren und ein Analytics-Dashboard Schritt für Schritt erstellen.

Cloudapp-dev und bevor Sie uns verlassen

Danke, dass Sie bis zum Ende gelesen haben. Noch eine Bitte bevor Sie gehen:

Wenn Ihnen gefallen hat was Sie gelesen haben oder wenn es Ihnen sogar geholfen hat, dann würden wir uns über einen "Clap" 👏 oder einen neuen Follower auf unseren Medium Account sehr freuen.

Oder folgen Sie uns auf Twitter -> Cloudapp.dev

Verwandte Artikel