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.
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.
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 :
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 :
//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
}
//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
}
$ go run main.go
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!