0% ont trouvé ce document utile (0 vote)
19 vues47 pages

Chapitre 9

Le document présente une introduction à l'architecture des microservices, en mettant l'accent sur l'importance de la communication entre services, qui peut être synchrone ou asynchrone. Il détaille les méthodes de communication synchrone, notamment HTTP et gRPC, ainsi que la communication asynchrone via des systèmes comme RabbitMQ. Les avantages et les cas d'utilisation de chaque méthode sont également discutés pour aider à choisir le mode de communication approprié.

Transféré par

dhahri ichrak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues47 pages

Chapitre 9

Le document présente une introduction à l'architecture des microservices, en mettant l'accent sur l'importance de la communication entre services, qui peut être synchrone ou asynchrone. Il détaille les méthodes de communication synchrone, notamment HTTP et gRPC, ainsi que la communication asynchrone via des systèmes comme RabbitMQ. Les avantages et les cas d'utilisation de chaque méthode sont également discutés pour aider à choisir le mode de communication approprié.

Transféré par

dhahri ichrak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Institut Supérieure Des Sciences Appliquées et de Technologie de Sousse

Environnement de développement
.NET Framework
FI-GL-A3

Présenté par
Dr. Ikbel Sayahi
[Link]@[Link]

Année Universitaire 2025-2026


9
Communication Micro-services
1 Introduction
▪ Définition

La base d’une architecture Microservices est de mettre en


place de petites briques logicielles autonomes et
interopérables, ce qui implique un fort besoin de
communication entre elles.

01/12/2025 Ikbel Sayahi 3


1 Introduction
▪ Définition
✓ La communication entre microservices est un élément central de l’architecture microservices.
Puisque chaque service est indépendant, spécialisé et déployé séparément, il doit pouvoir
communiquer avec les autres pour répondre à un besoin métier complet

✓ Les clients et les services peuvent communiquer par le biais de nombreux types de communication
différents, chacun ciblant un scénario et des objectifs différents. Au départ, ces types de
communications peuvent être classés dans deux axes:

❖ Communication synchrone ❖ Communication asynchrone

01/12/2025 Ikbel Sayahi 4


1 Introduction
▪ Avantages

✓ Ordonner les services

✓ Assurer la cohérence

✓ Répartir les responsabilités

01/12/2025 Ikbel Sayahi 5


1 Introduction
▪ Quel mode choisir?

Cas d’usage Type conseillé


Obtenir des données en temps réel Synchrone
Opérations longues ou multiples Asynchrone
Fort trafic / microservices nombreux Asynchrone
API publique simple Synchrone

01/12/2025 Ikbel Sayahi 6


2 Communication Synchrone:
▪ Définition
✓ Dans le mode synchrone, un microservice fait une requête directe à un autre microservice et
attend sa réponse avant de continuer son traitement.

❖ Le service demandeur est bloqué tant que la réponse n’est pas reçue.

❖ C’est le modèle typique des communications type client-serveur.

Exemples:

•Un front-end qui appelle un microservice via HTTP.

•Un microservice “Commande” qui demande au microservice “Produit” le stock disponible avant de
valider une commande.

01/12/2025 Ikbel Sayahi 7


2 Communication Synchrone
▪ Méthode HTTP classique

•Basé sur le protocole HTTP standard (GET, POST, PUT, DELETE…).


•Les données sont souvent échangées au format JSON.
•Chaque microservice expose une API REST (URL + méthode HTTP).

Très simple à mettre en place.

Compatible avec presque tous les frameworks

Bon pour les communications externes

Format JSON plus lourd et lent à sérialiser/désérialiser.

Gestion de latence et des timeouts importante

01/12/2025 Ikbel Sayahi 8


2 Communication Synchrone
▪ Méthode HTTP classique

01/12/2025 Ikbel Sayahi 9


2 Communication Synchrone
▪ Méthode HTTP classique

01/12/2025 Ikbel Sayahi 10


2 Communication Synchrone
▪ Méthode HTTP classique

01/12/2025 Ikbel Sayahi 11


2 Communication Synchrone
▪ Méthode HTTP classique

01/12/2025 Ikbel Sayahi 12


2 Communication Synchrone
▪ Méthode gRPC

✓ gRPC est un framework de communication entre services créé par Google.

✓ Il permet à deux applications (souvent des microservices) de communiquer entre elles


rapidement, efficacement et de manière typée.

✓ Hautement performant car les données transitent en binaire

✓ gRPC crée essentiellement une relation bidirectionnelle serveur-client entre les


microservices.
01/12/2025 Ikbel Sayahi 13
2 Communication Synchrone
▪ Méthode gRPC
✓ Un gRPC server est l’application qui expose
des services que d’autres applications peuvent
appeler à distance via gRPC.

✓ Un gRPC Client est un programme qui appelle


un gRPC Server.

✓ PROTO joue contrat d’échange entre le client et le


serveur. C’est le fichier de définition utilisé pour
décrire :
❖ les messages (structures de données)
❖ les services gRPC
❖ les types des champs
❖ les appels RPC
01/12/2025 Ikbel Sayahi 14
2 Communication Synchrone
▪ Méthode gRPC

01/12/2025 Ikbel Sayahi 15


2 Communication Synchrone
▪ Méthode gRPC

Microservice 1 : ProductService → expose gRPC


Microservice 2 : OrderService → consomme gRPC en tant que client
1) Créer le microservice gRPC

01/12/2025 Ikbel Sayahi 16


2 Communication Synchrone
▪ Méthode gRPC

2) Créer un fichier [Link]

01/12/2025 Ikbel Sayahi 17


2 Communication Synchrone
▪ Méthode gRPC

2) Configurer csprojet

01/12/2025 Ikbel Sayahi 18


2 Communication Synchrone
▪ Méthode gRPC

3) Implémentation du service gRPC

01/12/2025 Ikbel Sayahi 19


2 Communication Synchrone
▪ Méthode gRPC
3) Implémentation du service gRPC

01/12/2025 Ikbel Sayahi 20


2 Communication Synchrone
▪ Méthode gRPC
4) Activer le service dans [Link]

01/12/2025 Ikbel Sayahi 21


2 Communication Synchrone
▪ Méthode gRPC

5) Créer un client gRPC pour tester

Ajouter gRPC Client :

01/12/2025 Ikbel Sayahi 22


2 Communication Synchrone
▪ Méthode gRPC

5) Créer un client gRPC pour tester

Ajouter gRPC Client :

Copier le même fichier [Link] dans ce projet.

01/12/2025 Ikbel Sayahi 23


2 Communication Synchrone
▪ Méthode gRPC

5) Créer un client gRPC pour tester

Modifier le .csproj :

01/12/2025 Ikbel Sayahi 24


2 Communication Synchrone
▪ Méthode gRPC

5) Créer un client gRPC pour tester Code du client:

01/12/2025 Ikbel Sayahi 25


2 Communication Synchrone
▪ HTTP vs gRPC

Critère HTTP/2 gRPC


Framework RPC (Remote
Protocole de transport / Procedure Call) qui utilise
Type
communication HTTP/2 comme transport
par défaut
Permettre aux applications
Remplacer HTTP/1.1 pour
de microservices de
optimiser la
Objectif communiquer de manière
communication web (moins
efficace via appels de
de latence, multiplexage)
méthode distants
Niveau transport / Niveau application (au-
Niveau
protocole dessus de HTTP/2)

01/12/2025 Ikbel Sayahi 26


2 Communication Synchrone
▪ HTTP vs gRPC

Critère HTTP/2 gRPC


Requête-réponse classique Appels de méthodes comme si
Communication
(client → serveur) c’étaient locales (RPC)
Streaming bidirectionnel natif
Supporte le multiplexage de
Streaming (client→serveur,
flux, mais c’est basique
serveur→client, bidirectionnel)
Texte ou binaire (ex : JSON, Messages binaires via Protocol
Messages
HTML…) Buffers (Protobuf)

01/12/2025 Ikbel Sayahi 27


3 Communication Asynchrone

La communication asynchrone signifie que le service qui envoie une information ne bloque pas
son exécution en attendant une réponse.

•Émetteur : envoie un événement ou un message et continue son travail.


•Récepteur : reçoit et traite l’événement quand il le peut.

01/12/2025 Ikbel Sayahi 28


3 Communication Asynchrone
▪ Concepts clés

✓ Événement (Event)

C’est une notification qu’un changement ou une action a eu lieu.


Exemple: OrderCreated, ProductStockUpdated
✓ Producteur (Producer)
Le service qui publie l’événement.
Exemple: le OrderService publie OrderCreated lorsqu’une nouvelle commande est passée.

✓ Consommateur (Consumer)

Le service qui écoute et réagit aux événements.


Le InventoryService écoute OrderCreated pour mettre à jour le stock.
01/12/2025 Ikbel Sayahi 29
3 Communication Asynchrone
▪ Concepts clés

✓ Broker/ Bus d’événements

C’est l’intermédiaire qui transporte les événements entre producteurs et consommateurs.


Exemple: Kafka, RabbitMQ, Azure Service Bus, NATS

01/12/2025 Ikbel Sayahi 30


3 Communication Asynchrone
▪ Rabbit MQ

✓ RabbitMQ est un système de messagerie open-source basé sur le protocole AMQP (Advanced

Message Queuing Protocol).

✓ Il sert à transmettre des messages entre différentes applications ou microservices de manière

fiable et asynchrone.

01/12/2025 Ikbel Sayahi 31


3 Communication Asynchrone
▪ Rabbit MQ: caractéristiques

•Broker de messages : RabbitMQ agit comme un intermédiaire entre l’émetteur (producer)


et le récepteur (consumer).

•Découplage : Les producteurs et consommateurs n’ont pas besoin de connaître l’existence


de l’autre.

•Fiabilité : RabbitMQ peut garantir que les messages ne sont pas perdus.

01/12/2025 Ikbel Sayahi 32


3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base
1. Producer (producteur)
L’application qui envoie un message.

Exemple : un service de commande qui envoie des infos sur une commande passée.

2. Queue (file d’attente)


Où les messages sont stockés jusqu’à ce qu’un consommateur les prenne.
Exemple : order_queue pour les nouvelles commandes.

3. Consumer (consommateur)
L’application qui reçoit et traite les messages.

Exemple : un service de stock qui diminue la quantité après réception d’un message.
01/12/2025 Ikbel Sayahi 33
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base

4. Exchange (échangeur)
•Il reçoit les messages des producteurs et décide dans quelle queue les placer selon un
type de routage.

•Types d’exchanges :

•Direct : message envoyé à la queue dont le nom correspond à la clé de routage.


•Fanout : message envoyé à toutes les queues attachées.
•Topic : routage basé sur un motif.
•Headers : routage basé sur les headers du message.
5. Binding (liaison)
Lien entre un exchange et une queue avec une clé de routage.
01/12/2025 Ikbel Sayahi 34
3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base

01/12/2025 Ikbel Sayahi 35


3 Communication Asynchrone
▪ Rabbit MQ: Concepts de base

01/12/2025 Ikbel Sayahi 36


3 Communication Asynchrone
▪ Rabbit mq:Exemple

Lancer rabbimq en tant que logiciel installé ou bien le démarrer en tand que service windows

L’interface management est accessible sur : [Link]


•user: guest
•password: guest

01/12/2025 Ikbel Sayahi 37


3 Communication Asynchrone
▪ Rabbit mq:Exemple

Créer les microservices nécessaires:

Installer le package RabbitMQ

01/12/2025 Ikbel Sayahi 38


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]

01/12/2025 Ikbel Sayahi 39


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]

01/12/2025 Ikbel Sayahi 40


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Producer dans OrderService: [Link]

01/12/2025 Ikbel Sayahi 41


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Utilisation dans le controller

01/12/2025 Ikbel Sayahi 42


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService

01/12/2025 Ikbel Sayahi 43


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService

01/12/2025 Ikbel Sayahi 44


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService

01/12/2025 Ikbel Sayahi 45


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Créer un Consumer dans StockService

01/12/2025 Ikbel Sayahi 46


3 Communication Asynchrone
▪ Rabbit mq:Exemple
Lancer le consumer depuis [Link]

01/12/2025 Ikbel Sayahi 47

Vous aimerez peut-être aussi