Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns darüber sprechen, wie Sie Golang zur Implementierung des Sidecar-Dienstes verwenden

Lassen Sie uns darüber sprechen, wie Sie Golang zur Implementierung des Sidecar-Dienstes verwenden

PHPz
PHPzOriginal
2023-04-06 09:11:31982Durchsuche

Sidecar ist eine Lösung in einem verteilten System, die aufgrund der Diensttopologie oder aus anderen Gründen keine angemessene Unterstützung für Anrufe zwischen Diensten bietet. Bei Anrufen zwischen Diensten fungiert Sidecar als Proxy und verteilt alle eingehenden und ausgehenden Anforderungen an andere Dienste, sorgt für Lastausgleich, Verkehrsgestaltung, Sicherheitsverarbeitung usw. Das Thema dieses Mal ist die Implementierung von Sidecar in Golang. Als Nächstes wird in diesem Artikel die Bedeutung der Sidecar-Konstruktion, die Funktionsweise von Sidecar und die Verwendung von Golang zur Implementierung von Sidecar-Diensten ausführlich vorgestellt.

  1. Die Bedeutung von Sidecar

Zunächst müssen wir die Rolle von Sidecar klären. In einer serviceorientierten Architektur müssen sich viele Dienste gegenseitig aufrufen. In diesem Fall treten einige Probleme auf. Wenn beispielsweise Dienst A auf Dienst B zugreifen möchte, muss er einen aufrufenden Client entwickeln. In diesem Client müssen wir die Aufrufmethode, die Adresse, den Port, das Protokoll usw. bestimmen. Je mehr Dienste vorhanden sind, desto komplizierter wird es die anrufende Beziehung wird sein. Mithilfe von Sidecar müssen wir lediglich in jeder Dienstinstanz einen Sidecar bereitstellen, der alle Anforderungen abfangen und entsprechend verarbeiten kann, wodurch die Komplexität der Zugriffsbeziehung beseitigt und eine einfachere Dienstaufrufmethode bereitgestellt wird.

  1. So funktioniert Sidecar

Der Hauptworkflow von Sidecar ist wie folgt:

Schritt 1: Sidecar ist für das Abfangen aller Kundenanfragen verantwortlich.

Schritt 2: Sidecar wandelt die abgefangene Anfrage in ein normales Protokoll um und sendet die Anfrage dann an den Dienst.

Schritt 3: Wenn die Dienstantwort eintrifft, extrahiert Sidecar die Antwort aus dem Dienst, führt eine Rückkonvertierung durch und gibt die Antwort an den Client zurück.

Ein Architekturdiagramm mit Sidecar-Funktion sieht wie folgt aus:

  1. Grundlegende Schritte zur Implementierung von Sidecar in Golang

Zunächst müssen Sie den Namen, die Adresse und den Port des Clients bestimmen, den viele Dienste in der richtigen Reihenfolge aufrufen müssen um Anrufe zu tätigen. Wir nennen diesen Dienst Discovery. Die spezifischen Schritte sind wie folgt:

Schritt 1: Diensterkennung: Sidecar muss die Diensterkennungsinformationen der aktuellen Anwendung vom Konfigurationscenter oder Registrierungscenter erfahren. Diese Diensterkennungsinformationen zeichnen alle Dienste der Anwendung sowie deren Adress- und Portinformationen auf. Diese Informationen können verwendet werden, um Sidecar die Durchführung des Dienstaufrufs zu ermöglichen.

Schritt 2: Proxy-Einstellungen: Sidecar muss Anfragen abfangen und Proxy-Einstellungen vornehmen. Wenn die Client-Anfrage über eine entsprechende Kennung verfügt, wird die Anfrage in ein normales Protokollformat umgewandelt und an den Dienst gesendet. Andernfalls lehnt der Sidecar sie ab.

Durch die oben genannten Schritte können Sie den Sidecar-Dienst in Golang implementieren. Die Codeimplementierung kann sich auf den folgenden Prozess beziehen:

  1. Diensterkennungsclient schreiben:

//Diensterkennungsadresse definieren
const discoverUrl = "https://srv.discover.local/path"

Typ ServiceDiscoveryClient-Schnittstelle{
FindService (serviceName string) ([]string, error)
}

func NewServiceDiscoveryClient() ServiceDiscoveryClient {
return &serviceDiscoveryClient{discoverUrl}
}

type serviceDiscoveryClient struct{
url string
}

func (c* serviceDiscoveryClient) FindService ( serviceName string) ([]string, error){
//Fordern Sie die Dienstadresse und den Port vom Service Discovery Center an
}

  1. Schreiben Sie den Sidecar-Proxy-Dienst:

//Definieren Sie den Proxy-Port und den Dienstnamen
const ProxyPort Int = 1000 }

Typ-Proxy-Struktur {

serviceDiscoveryClient ServiceDiscoveryClient
}

func (p*-Proxy) Start()-Fehler {

//Starten Sie die Überwachung des Ports und fangen Sie Anfragen ab

}

func (p*-Proxy) Stop()-Fehler {

// Hören Sie auf, den Port abzuhören

}

Starten Sie die ausführbare Datei, um den Dienst aufzurufen:



$ go run main.go


Das Workflowdiagramm der Golang-Implementierung des Sidecar-Dienstes lautet wie folgt:

Während der Implementierung dieses Prozesses Während des Prozesses können Sie auch auf den Quellcode des zugehörigen GitHub-Open-Source-Projekts Sidecar verweisen, um Ihr Verständnis des Funktionsprinzips und der Implementierungsmethode von Sidecar zu vertiefen.

Zusammenfassung
  1. In diesem Artikel werden hauptsächlich der Sidecar-Dienst sowie die Grundkenntnisse und der Prozess zur Implementierung des Sidecar-Dienstes in Golang vorgestellt. Es ist zu beachten, dass die Implementierung von Sidecar-Diensten in Verbindung mit relevanten Microservice-Frameworks wie Zuul von Netflix, Spring Cloud von Spring, DuoMi von Alibaba Cloud usw. erstellt werden muss. In einem verteilten System kann die Verwendung von Sidecar das Komplexitätsproblem des Dienstaufrufs vollständig lösen, eine flexiblere und effizientere Kommunikation zwischen Diensten erreichen und die Stabilität und Skalierbarkeit von Diensten verbessern.

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie Golang zur Implementierung des Sidecar-Dienstes verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn