Avec l'augmentation de la complexité des activités du système, les architectures traditionnelles à unité unique ont progressivement exposé des problèmes tels que les difficultés de maintenance et l'expansion limitée. L'architecture de microservice a vu le jour et en divisant les applications en un groupe de petits services déployés indépendamment, il améliore considérablement l'efficacité du développement, la maintenabilité et la résilience du système. Chaque service est généralement construit autour d'une fonction commerciale spécifique et communique via des protocoles standard tels que HTTP ou des files d'attente de messages.
Dans le développement réel de projets, les microservices peuvent être mis en œuvre à l'aide de plusieurs modèles architecturaux en fonction des différents besoins commerciaux. Voici trois méthodes de pratique d'architecture microservice couramment utilisées:
L'API RESTful est le mode de communication microservice le plus couramment utilisé, en tirant parti du protocole HTTP standard pour les demandes et les réponses. Chaque service est exposé en définissant des itinéraires et des contrôleurs, avec des définitions d'interface claires et un bon support transversal.
Dans PHP Hyperf, vous pouvez rapidement définir les itinéraires et les contrôleurs à travers des annotations. L'exemple de code est le suivant:
/**
* @GetMapping(path="/api/user")
*/
public function getUser() {
// Traitement pour obtenir une logique utilisateur
}
Pour les tâches qui nécessitent un traitement asynchrone, telles que l'envoi par e-mail, la journalisation, la génération de rapports, etc., une file d'attente de messages peut être utilisée pour la communication interservice. La communication asynchrone améliore non seulement la vitesse de réponse du système, mais aide également le découplage du service.
HYPERF fournit un support de conducteur de file d'attente de messages riche, tels que redis, labbitmq, etc. Les développeurs doivent uniquement définir le producteur et le consommateur du message pour réaliser la livraison de données asynchrones.
public function sendReport() {
$this->queue->push('report_queue', ['user_id' => 1001]);
}
Le RPC (appel de procédure à distance) est une solution préférée lorsque des appels interinstitutions efficaces sont requis. Il permet aux services d'interagir comme appeler des fonctions locales, en évitant les frais généraux des demandes HTTP fastidieuses.
HYPERF prend en charge une variété de méthodes de mise en œuvre du RPC, telles que GRPC, Swoole RPC, etc., et améliore la flexibilité et la fiabilité des appels de service par le biais de mécanismes d'enregistrement et de découverte de service.
/** @Inject */
protected UserServiceInterface $userService;
public function getUserProfile() {
$user = $this->userService->getById(1001);
}
Hyperf est un cadre de coroutine haute performance basé sur Swoole conçu pour construire des systèmes de microservice modernes. Il a des fonctionnalités telles que l'OI non bloquant, l'injection de dépendance, le routage d'annotation, etc., ce qui rend le développement des microservices plus efficace et élégant.
Installez Hyperf à l'aide du compositeur:
<span class="fun">Composer Create-Project Hyperf / Hyperf-Skeleton MyService</span>
Configurez ensuite la base de données, le cache, la file d'attente et d'autres composants en fonction des besoins réels.
Définissez rapidement le routage de service et la logique du contrôleur via des annotations pour obtenir une couche d'interface de service claire. Par exemple:
/**
* @Controller()
* @RequestMapping(path="/user")
*/
class UserController {
/** @GetMapping(path="view") */
public function view() {
// Revenir aux informations de l'utilisateur
}
}
Sélectionnez le mécanisme de communication approprié (repos, RPC ou file d'attente de messages) en fonction des responsabilités de service pour assurer une coordination stable et efficace entre les services.
Un système de microservice mature ne peut pas être séparé d'un système complet de surveillance et de gouvernance. HYPERF fournit des modules fonctionnels tels que les contrôles de santé, les disjoncteurs de service, le suivi des journaux, etc. pour aider les développeurs à découvrir et à positionner les problèmes du système en temps opportun.
Les applications HYPERF peuvent être exécutées indépendamment via des serveurs à haute performance Swoole, ou le déploiement conteneurisé peut être combiné avec Docker pour améliorer les capacités automatisées de fonctionnement et de maintenance.
<span class="fun">php bin / hyperf.php start</span>
L'architecture de microservice est une direction importante pour construire des systèmes évolutifs et maintenables. Avec ses performances élevées et sa flexibilité, PHP Hyperf est devenu le cadre préféré pour les développeurs PHP pour construire des microservices. En appliquant rationnellement des modes de communication tels que REST, RPC, les files d'attente asynchrones, un système de microservice réactif et clair dans la structure peut être créé. J'espère que cet article pourra vous fournir une référence et une inspiration utiles dans la conception et la pratique des microservices.