Reservation hotel Microservice est une application basée sur des microservices construite avec REST , gRPC, GraphQL et Kafka en utilisant MongoDB comme base de données. Le projet est composé de deux entités : Hotel et Reservation.
-
🔵 Node.js est un environnement d'exécution JavaScript côté serveur, qui permet aux développeurs de construire des applications Web et des serveurs.
-
⚙️ Restful est un terme utilisé pour décrire les services Web qui suivent les principes de l'architecture REST (Representational State Transfer).
-
🚀 gRPC est un framework RPC (Remote Procedure Call) développé par Google, utilisé pour la communication entre services distribués.
-
🌐 GraphQL est un langage de requête de données développé par Facebook, permettant aux clients de définir la structure des données requises.
-
🍃 MongoDB est un système de gestion de base de données NoSQL, stockant les données sous forme de documents JSON.
-
📨 Kafka est un système de messagerie de type publication/abonnement conçu pour remplacer les courtiers de message traditionnels.
-
reservationsModel: définit la structure et le comportement d'un modèle de "Reservation".
-
reservation.proto: Fichier de définition Protocol Buffers pour le microservice "Reservation".
-
reservationMicroservice: détaille la gestion des opérations liées aux reservations.
-
hotel.proto: Fichier de définition Protocol Buffers pour le microservice "Hotel".
-
hotelsModel: définit la structure et le comportement d'un modèle de "Hotel" .
-
hotelMicroservice: détaille la gestion des opérations liées aux hotels.
-
resolver.js: Fonctions de résolution GraphQL pour gérer les requêtes liées aux entités "Hotel" et "Reservation".
-
schema.js: Fichier de définition du schéma GraphQL qui décrit les requêtes et mutations disponibles pour l'API.
-
apiGateway: comment les requêtes clients sont gérées et dirigées vers les différents microservices.
Parameter | Type | Description |
---|---|---|
id |
String |
Required |
customer_id |
String |
Required |
reservation_date |
Date |
Required |
check_in_date |
Date |
Required |
check_out_date |
Date |
Required |
room_type |
string |
Required |
-
id :le clé primaire du table de réservation .
-
customer_id : l'identifiant du client effectuant la réservation .
-
reservation_date : la date à laquelle la réservation a été effectuée .
-
check_in_date : la date d'arrivée prévue pour la réservation .
-
check_out_date : la date de départ prévue pour la réservation .
-
room_type : le type de chambre réservée .
Parameter | Type | Description |
---|---|---|
id |
String |
Required |
name |
string |
Required |
description |
string |
Required |
address |
string |
Required |
amenities |
string |
Required |
rooms |
string |
Required |
-
id :le clé primaire du table de l'hôtel .
-
name :le nom de l'hôtel .
-
description : la description de l'hôtel .
-
adresse : l'adresse de l'hôtel .
-
amenities : une liste des équipements fournis par l'hôtel .
-
rooms une liste de sous-documents représentant les chambres disponibles dans l'hôtel.
Chaque chambre est représentée par un objet avec les champs suivants
-
type : le type de la chambre .
-
price_per_night : le prix par nuit de la chambre .
-
available : un indicateur booléen indiquant si la chambre est disponible ou non.
Téléchargez tous les fichiers, puis installez les dépendances nécessaires.
- Node.js ( 20.11.0 )
- GraphQL ( 16.1.0 )
- Restful ( 0.4.5 )
- Kafka ( 3.7.0 )
- GET /hotel : Récupère tous les hôtels de la base de données.
- GET /hotel/:id : Récupère un hôtel spécifique par son ID.
- POST /hotel/add : Crée un nouvel hôtel dans la base de données.
- PUT /hotel/update/:id : Modifie un hôtel spécifique par son ID.
- DELETE /hotel/:id : Supprime un hôtel spécifique par son ID.
- GET /reservation : Récupère toutes les réservations de la base de données.
- GET /reservation/:id : Récupère une réservation spécifique par son ID.
- POST /reservation/add : Crée une nouvelle réservation dans la base de données.
- PUT /reservation/update/:id : Modifie une réservation spécifique par son ID.
- DELETE /reservation/:id : Supprime une réservation spécifique par son ID.
Voici la liste des ports utilisés par chaque service dans l'architecture :
- Port utilisé : 50052
- Protocole : gRPC
- Port utilisé : 50051
- Protocole : gRPC
- Port écouté : 3000
- Protocoles : REST et GraphQL
- Port écouté : 9092
- Protocole : Kafka
Pour démarrer le serveur de l'API Gateway, exécutez la commande suivante :
nodemon apiGateway.js
Pour démarrer le serveur de gestion des hotels , exécutez la commande suivante :
nodemon hotelMicroservice.js
Pour démarrer le serveur de gestion des reservations , exécutez la commande suivante :
nodemon reservationMicroservice.js
Exécutez la commande suivante pour démarrer le serveur Zookeeper :
.\bin\windows\zookeeper-server-start.bat config\zookeeper.properties
Exécutez la commande suivante pour démarrer le serveur Kafka :
.\bin\windows\kafka-server-start.bat config\server.properties
Copyright (c) 2024 Mohamed Ouni
Ce projet est sous licence MIT 📝 . Veuillez consulter le fichier License 📄 pour plus de détails.