Maison > développement back-end > Golang > le corps du texte

Parlons de la façon d'utiliser Golang pour implémenter le service Sidecar

PHPz
Libérer: 2023-04-06 10:54:55
original
1007 Les gens l'ont consulté

Sidecar est une solution dans un système distribué qui ne prend pas en charge correctement les appels interservices en raison de la topologie du service ou pour certaines raisons. Dans les appels interservices, Sidecar agit comme un proxy, distribuant toutes les requêtes entrantes et sortantes vers d'autres services, équilibrant la charge, structurant le trafic, traitant la sécurité, etc. Le sujet cette fois est la mise en œuvre de Sidecar dans Golang. Ensuite, cet article présentera en détail l'importance de la construction de Sidecar, le fonctionnement de Sidecar et comment utiliser Golang pour implémenter les services Sidecar.

  1. La signification de Sidecar

Tout d'abord, nous devons clarifier le rôle de Sidecar. Dans une architecture orientée services, de nombreux services doivent s'appeler. Dans ce cas, certains problèmes surviendront. Par exemple, si le service A veut accéder au service B, alors il doit développer un client appelant. Dans ce client, nous devons déterminer la méthode d'appel, l'adresse, le port, le protocole, etc. Plus il y a de services, plus c'est compliqué. la relation d'appel le sera. En utilisant Sidecar, il nous suffit de déployer un Sidecar dans chaque instance de service, qui peut intercepter toutes les demandes et traiter les demandes en conséquence, éliminant ainsi la complexité de la relation d'accès et fournissant une méthode d'appel de service plus simplifiée.

  1. Comment fonctionne Sidecar

Le flux de travail principal de Sidecar est le suivant :

Étape 1 : Sidecar est chargé d'intercepter toutes les demandes des clients.

Étape 2 : Sidecar convertit la requête interceptée en un protocole normal, puis envoie la requête au service.

Étape 3 : lorsque la réponse du service arrive, Sidecar extrait la réponse du service, effectue une conversion inverse et renvoie la réponse au client.

Un schéma d'architecture avec la fonction Sidecar est le suivant :

  1. Étapes de base pour la mise en œuvre de Sidecar dans Golang

Tout d'abord, vous devez déterminer le nom, l'adresse et le port du client que de nombreux services doivent appeler pour pouvoir pour passer des appels. Nous appelons ce service découverte. Les étapes spécifiques sont les suivantes :

Étape 1 : Découverte de services : Sidecar doit apprendre les informations de découverte de services de l'application actuelle à partir du centre de configuration ou du centre d'enregistrement. Ces informations de découverte de services enregistrent tous les services de l'application ainsi que leurs informations d'adresse et de port. Ces informations peuvent être utilisées pour permettre à Sidecar de terminer l'appel de service.

Étape 2 : Paramètres du proxy : Sidecar doit intercepter les requêtes et effectuer les paramètres du proxy. Si la demande du client possède un identifiant correspondant, la demande est convertie dans un format de protocole normal et envoyée au service. Dans le cas contraire, le Sidecar la rejette.

Grâce aux étapes ci-dessus, vous pouvez mettre en œuvre le service Sidecar dans Golang. L'implémentation du code peut faire référence au processus suivant :

  1. Écrire le client de découverte de service :

//Définir l'adresse de découverte de service
const discoverUrl = "https://srv.discover.local/path"

type ServiceDiscoveryClient interface{
FindService (chaîne de nom de service) ([]chaîne, erreur)
}

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

type serviceDiscoveryClient struct{
url string
}

func (c* serviceDiscoveryClient) FindService ( serviceName string) ([]string, error){
//Demander l'adresse et le port du service au centre de découverte de services
}

  1. Écrivez le service proxy Sidecar :

//Définissez le port proxy et le nom du service
const proxyPort int = 1000
const serviceName string = "my-service"

type Proxy interface {
Start() error
Stop() error
}

func NewProxy(serviceDiscoveryClient ServiceDiscoveryClient) Proxy {
//Initialize Sidecar proxy
}

tapez proxy struct {
serviceDiscoveryClient ServiceDiscoveryClient
}

func (p* proxy) Start() error {
//Commencer à écouter le port et intercepter les requêtes
}

func (p* proxy) Stop() error {
// Arrêtez d'écouter le port
}

  1. Démarrez le fichier exécutable pour appeler le service :

$ go run main.go

  1. Le schéma de workflow de l'implémentation du service Sidecar par Golang est le suivant :

Sidecar in Golang

Lors de la mise en œuvre de ce processus Au cours du processus, vous pouvez également vous référer au code source du projet open source GitHub associé Sidecar pour approfondir votre compréhension du principe de fonctionnement et de la méthode de mise en œuvre de Sidecar.

Résumé

Cet article présente principalement le service Sidecar ainsi que les connaissances de base et le processus de mise en œuvre du service Sidecar à Golang. Il convient de noter que la mise en œuvre des services Sidecar doit être construite en conjonction avec des cadres de microservices pertinents, tels que Zuul de Netflix, Spring Cloud de Spring, DuoMi d'Alibaba Cloud, etc. Dans les systèmes distribués, l'utilisation de Sidecar peut résoudre pleinement le problème complexe de l'appel de services, obtenir une communication plus flexible et plus efficace entre les services et améliorer la stabilité et l'évolutivité des services.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!