


Nutzen Sie die Leistungsfähigkeit der Echtzeit-Benutzeroberfläche: Ein Leitfaden für Einsteiger zum Streamen von Daten mit React.js, gRPC, Envoy und Golang
Geschrieben von Naveen M
Hintergrund
Als Teil unseres Kubernetes-Plattformteams stehen wir vor der ständigen Herausforderung, Echtzeit-Einblick in die Arbeitslasten der Benutzer zu bieten. Von der Überwachung der Ressourcennutzung bis hin zur Verfolgung der Kubernetes-Clusteraktivität und des Anwendungsstatus stehen für jede spezifische Kategorie zahlreiche Open-Source-Lösungen zur Verfügung. Allerdings sind diese Tools oft über verschiedene Plattformen verteilt, was zu einer fragmentierten Benutzererfahrung führt. Um dieses Problem anzugehen, haben wir uns die Leistungsfähigkeit des serverseitigen Streaming zunutze gemacht, das es uns ermöglicht, Live-Ressourcennutzung, Kubernetes-Ereignisse und Anwendungsstatus bereitzustellen, sobald Benutzer auf unser Plattformportal zugreifen.
Einführung
Durch die Implementierung von serverseitigem Streaming können wir Daten nahtlos an die Benutzeroberfläche streamen und so aktuelle Informationen bereitstellen, ohne dass manuelle Aktualisierungen oder ständige API-Aufrufe erforderlich sind. Dieser Ansatz revolutioniert das Benutzererlebnis und ermöglicht es Benutzern, den Zustand und die Leistung ihrer Arbeitslasten sofort auf einheitliche und vereinfachte Weise zu visualisieren. Ganz gleich, ob es darum geht, die Ressourcennutzung zu überwachen, über Kubernetes-Ereignisse auf dem Laufenden zu bleiben oder den Anwendungsstatus im Auge zu behalten – unsere serverseitige Streaming-Lösung fasst alle wichtigen Informationen in einem einzigen Echtzeit-Dashboard zusammen, das jedoch für jeden anwendbar ist, der dies möchte Bereitstellung von Live-Streaming-Daten für die Benutzeroberfläche.
Vorbei sind die Zeiten, in denen Sie durch mehrere Tools und Plattformen navigieren mussten, um wichtige Erkenntnisse zu gewinnen. Mit unserem optimierten Ansatz können Benutzer von dem Moment an, in dem sie auf unserem Plattformportal landen, auf einen umfassenden Überblick über ihre Kubernetes-Umgebung zugreifen. Durch die Nutzung der Leistungsfähigkeit des serverseitigen Streamings haben wir die Art und Weise, wie Benutzer mit ihren Arbeitslasten interagieren und diese überwachen, verändert und ihre Erfahrung effizienter, intuitiver und produktiver gemacht.
Mit unserer Blogreihe möchten wir Sie durch die Feinheiten der Einrichtung von serverseitigem Streaming mit Technologien wie React.js, Envoy, gRPC und Golang führen.
An diesem Projekt sind drei Hauptkomponenten beteiligt:
1. Das Backend, das mit Golang entwickelt wurde und serverseitiges gRPC-Streaming zur Datenübertragung nutzt.
2. Der Envoy-Proxy, der dafür verantwortlich ist, den Backend-Dienst für die Außenwelt zugänglich zu machen.
3. Das Frontend, das mit React.js erstellt wurde und grpc-web verwendet, um die Kommunikation mit dem Backend herzustellen.
Die Serie ist in mehrere Teile gegliedert, um den unterschiedlichen Sprachpräferenzen der Entwickler gerecht zu werden. Wenn Sie sich speziell für die Rolle des Envoy beim Streaming interessieren oder mehr über die Bereitstellung eines Envoy-Proxys in Kubernetes erfahren möchten, können Sie zum zweiten Teil (Envoy als Frontend-Proxy in Kubernetes) springen und diesen Aspekt erkunden oder einfach nur daran interessiert sein Front-End-Teil, dann können Sie sich einfach den Front-End-Teil des Blogs ansehen.
In diesem ersten Teil konzentrieren wir uns auf den einfachsten Abschnitt der Serie: „So richten Sie serverseitiges gRPC-Streaming mit Go ein.“ Wir zeigen Beispielanwendungen mit serverseitigem Streaming. Glücklicherweise gibt es im Internet eine Fülle von Inhalten zu diesem Thema, die auf Ihre bevorzugte Programmiersprache zugeschnitten sind.
TEIL 1: So richten Sie serverseitiges gRPC-Streaming mit Go ein
Es ist Zeit, unseren Plan in die Tat umzusetzen! Vorausgesetzt, Sie haben ein grundlegendes Verständnis der folgenden Konzepte, tauchen wir gleich in die Umsetzung ein:
- gRPC: Es handelt sich um ein Kommunikationsprotokoll, das es Client und Server ermöglicht, Daten effizient auszutauschen.
- Serverseitiges Streaming: Diese Funktion ist besonders nützlich, wenn der Server eine große Datenmenge an den Client senden muss. Durch die Verwendung von serverseitigem Streaming kann der Server die Daten in kleinere Teile aufteilen und diese einzeln senden. Der Kunde kann dann den Empfang von Daten beenden, wenn er genügend Daten empfangen hat oder zu lange gewartet hat.
Jetzt beginnen wir mit der Code-Implementierung.
Schritt 1: Erstellen Sie die Protodatei
Zunächst müssen wir eine Protobuf-Datei definieren, die sowohl von der Client- als auch von der Serverseite verwendet wird. Hier ist ein einfaches Beispiel:
syntax = "proto3"; package protobuf; service StreamService { rpc FetchResponse (Request) returns (stream Response) {} } message Request { int32 id = 1; } message Response { string result = 1; }
In dieser Protodatei haben wir eine einzelne Funktion namens FetchResponse, die einen Request-Parameter entgegennimmt und einen Strom von Antwortnachrichten zurückgibt.
Step 2: Generate the Protocol Buffer File
Before we proceed, we need to generate the corresponding pb file that will be used in our Go program. Each programming language has its own way of generating the protocol buffer file. In Go, we will be using the protoc library.
If you haven't installed it yet, you can find the installation guide provided by Google.
To generate the protocol buffer file, run the following command:
protoc --go_out=plugins=grpc:. *.proto
Now, we have the data.pb.go file ready to be used in our implementation.
Step 3: Server side implementation
To create the server file, follow the code snippet below:
package main import ( "fmt" "log" "net" "sync" "time" pb "github.com/mnkg561/go-grpc-server-streaming-example/src/proto" "google.golang.org/grpc" ) type server struct{} func (s server) FetchResponse(in pb.Request, srv pb.StreamService_FetchResponseServer) error { log.Printf("Fetching response for ID: %d", in.Id) var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(count int) { defer wg.Done() time.Sleep(time.Duration(count) time.Second) resp := pb.Response{Result: fmt.Sprintf("Request #%d for ID: %d", count, in.Id)} if err := srv.Send(&resp); err != nil { log.Printf("Error sending response: %v", err) } log.Printf("Finished processing request number: %d", count) }(i) } wg.Wait() return nil } func main() { lis, err := net.Listen("tcp", ":50005") if err != nil { log.Fatalf("Failed to listen: %v", err) } s := grpc.NewServer() pb.RegisterStreamServiceServer(s, server{}) log.Println("Server started") if err := s.Serve(lis); err != nil { log.Fatalf("Failed to serve: %v", err) } }
In this server file, I have implemented the FetchResponse function, which receives a request from the client and sends a stream of responses back. The server simulates concurrent processing using goroutines. For each request, it streams five responses back to the client. Each response is delayed by a certain duration to simulate different processing times.
The server listens on port 50005 and registers the StreamServiceServer with the created server. Finally, it starts serving requests and logs a message indicating that the server has started.
Now you have the server file ready to handle streaming requests from clients.
Part 2
Stay tuned for Part 2 where we will continue to dive into the exciting world of streaming data and how it can revolutionize your user interface.
Das obige ist der detaillierte Inhalt vonNutzen Sie die Leistungsfähigkeit der Echtzeit-Benutzeroberfläche: Ein Leitfaden für Einsteiger zum Streamen von Daten mit React.js, gRPC, Envoy und Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Golang ist in Gleichzeitigkeit besser als C, während C bei Rohgeschwindigkeit besser als Golang ist. 1) Golang erreicht durch Goroutine und Kanal eine effiziente Parallelität, die zum Umgang mit einer großen Anzahl von gleichzeitigen Aufgaben geeignet ist. 2) C über Compiler -Optimierung und Standardbibliothek bietet es eine hohe Leistung in der Nähe der Hardware, die für Anwendungen geeignet ist, die eine extreme Optimierung erfordern.

GoisidealforBeginersandSuitableforCloudandNetWorkServicesDuetoitsSimplicity, Effizienz und Konsumfeaturen.1) InstallgoFromTheofficialwebSiteAnDverifyWith'goversion'.2) CreateAneDrunyourFirstProgramwith'gorunhello.go.go.go.

Golang ist für schnelle Entwicklung und gleichzeitige Szenarien geeignet, und C ist für Szenarien geeignet, in denen extreme Leistung und Kontrolle auf niedriger Ebene erforderlich sind. 1) Golang verbessert die Leistung durch Müllsammlung und Parallelitätsmechanismen und eignet sich für die Entwicklung von Webdiensten mit hoher Konsequenz. 2) C erreicht die endgültige Leistung durch das manuelle Speicherverwaltung und die Compiler -Optimierung und eignet sich für eingebettete Systementwicklung.

GoimpactsDevelopmentPositivyThroughSpeed, Effizienz und DiasMlitication.1) Geschwindigkeit: Gocompilesquickandrunseffiction, idealforlargeProjects

Golang und Python haben jeweils ihre eigenen Vorteile: Golang ist für hohe Leistung und gleichzeitige Programmierung geeignet, während Python für Datenwissenschaft und Webentwicklung geeignet ist. Golang ist bekannt für sein Parallelitätsmodell und seine effiziente Leistung, während Python für sein Ökosystem für die kurze Syntax und sein reiches Bibliothek bekannt ist.

Die Leistungsunterschiede zwischen Golang und C spiegeln sich hauptsächlich in der Speicherverwaltung, der Kompilierungsoptimierung und der Laufzeiteffizienz wider. 1) Golangs Müllsammlung Mechanismus ist praktisch, kann jedoch die Leistung beeinflussen.

Golang und C haben jeweils ihre eigenen Vorteile bei Leistungswettbewerben: 1) Golang ist für eine hohe Parallelität und schnelle Entwicklung geeignet, und 2) C bietet eine höhere Leistung und eine feinkörnige Kontrolle. Die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack basieren.
