Comment implémenter la découverte et l'enregistrement de services distribués dans les microservices PHP
Avec la popularité de l'architecture des microservices, de plus en plus d'entreprises commencent à diviser les applications uniques traditionnelles en plusieurs petits services indépendants. Dans une architecture de microservices, la communication entre les services devient critique. La découverte et l'enregistrement de services sont requis entre les services pour faciliter les appels et la gestion entre les services. Cet article présentera comment implémenter la découverte et l'enregistrement de services distribués dans les microservices PHP, et fournira des exemples de code spécifiques.
1. Qu'est-ce que la découverte et l'enregistrement de services distribués ?
La découverte et l'enregistrement de services distribués font référence à un mécanisme permettant de découvrir et d'enregistrer automatiquement des services dans une architecture de microservices. Dans les applications monolithiques traditionnelles, nous pouvons gérer différents services via des fichiers de configuration ou une plateforme de gestion centralisée. Cependant, dans une architecture de microservices, en raison du grand nombre de services, la gestion manuelle est devenue irréalisable. Par conséquent, grâce au mécanisme de découverte et d'enregistrement de services, nous pouvons permettre à différents services de s'inscrire automatiquement au centre d'enregistrement lors du démarrage, et de découvrir et d'obtenir automatiquement l'adresse du service lorsque d'autres services doivent être appelés.
2. Utilisez ETCD pour implémenter la découverte et l'enregistrement de services distribués
ETCD est un système de stockage clé-valeur distribué hautement disponible. Il s'agit d'un projet open source de CoreOS et est devenu le backend de stockage par défaut de Kubernetes. Dans les microservices PHP, nous pouvons utiliser ETCD comme centre d'enregistrement pour réaliser la découverte et l'enregistrement des services.
L'installation d'ETCD côté serveur est très simple et peut être installée via le fichier binaire fourni par le site officiel. Une fois l'installation terminée, vous pouvez démarrer le service ETCD via l'interface de ligne de commande.
Dans les microservices PHP, nous pouvons utiliser l'API RESTful d'ETCD pour l'enregistrement du service. Voici un exemple de code :
$serviceHost, 'port' => $servicePort, ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://etcd-server:2379/v2/keys/services/$serviceName"); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_exec($ch); curl_close($ch); } registerService('user-service', '127.0.0.1', 8000); registerService('order-service', '127.0.0.1', 8001);
Le code ci-dessus enverra une requête HTTP POST à l'interface API du service ETCD via CURL et enregistrera l'adresse et le port du service dans ETCD.
Lorsque nous devons appeler d'autres services, nous pouvons utiliser ETCD pour la découverte de services. Voici un exemple de code :
Copier après la connexion
Le code ci-dessus enverra une requête HTTP GET à l'interface API du service ETCD via CURL pour obtenir l'adresse et le port du service. Ensuite, nous pouvons appeler d'autres services via l'URL obtenue.
Résumé :
En utilisant ETCD comme centre d'enregistrement, nous pouvons implémenter la découverte et l'enregistrement de services distribués dans les microservices PHP. À l'aide de l'API RESTful d'ETCD, nous pouvons enregistrer des services dans ETCD via des requêtes HTTP, et également obtenir les adresses et les ports d'autres services d'ETCD via des requêtes HTTP. Grâce à un tel mécanisme, nous pouvons mieux gérer et appeler les microservices et obtenir une architecture de microservices plus flexible et évolutive.
Les exemples de code ci-dessus sont uniquement à titre de référence et peuvent devoir être ajustés et améliorés en fonction des besoins réels des projets réels.
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!