Question & Réponses

1. Combien y-a-t’il de services différents ?

L'application DockerCoins est composée de cinq services distincts :

  • rng : Ce service génère des nombres aléatoires nécessaires à la création de DockerCoins. Il fonctionne comme un serveur HTTP interne qui renvoie des nombres en réponse à des requêtes. Son image est construite localement à partir du répertoire rng.

  • hasher : Ce service calcule un hash pour chaque nombre fourni par rng. Si le hash commence par un "0", cela indique qu'un DockerCoin a été généré avec succès. Le service reçoit les nombres via des requêtes HTTP POST et retourne les résultats. Son image est construite localement à partir du répertoire hasher.

  • worker : Le cœur de l'application, ce service orchestre les interactions entre rng, hasher, et redis. Il récupère des nombres aléatoires auprès de rng, les envoie à hasher pour calculer leurs hash, et stocke les résultats valides dans redis. Son image est également construite localement à partir du répertoire worker.

  • redis : Cette base de données NoSQL est utilisée pour stocker les DockerCoins générés. Elle sert à conserver les résultats produits par le worker. Le service utilise l'image officielle redis:5 et expose le port 6379 pour la communication avec les autres services.

  • webui : Ce service fournit une interface utilisateur accessible via un navigateur web. Il récupère les données stockées dans redis et affiche des informations comme la vitesse de création et le nombre total de DockerCoins générés. Le service fonctionne sur le port 8000 et utilise une image construite localement à partir du répertoire webui.


2. Combien de ces services utilisent une image officielle ?

Un seul service utilise une image officielle : redis, qui utilise l’image redis:5.


3. Sur quel port local a lieu la redirection du service webui ?

Le service webui est exposé sur le port local 8000, comme spécifié dans le fichier docker-compose.yml. Ce fichier configure les ports de chaque service, et pour webui, la ligne suivante établit cette redirection :

ports:
  - "8000:80"

Cela signifie que le port 8000 du conteneur webui est mappé au port 8000 de la machine hôte, ce qui permet d’accéder à l'interface web en ouvrant un navigateur sur l'URL : http://localhost:8000.


4. Quelle est votre vitesse de création de Dockercoins ?

La vitesse de création de DockerCoins, telle qu'affichée sur l'interface Web, est d'environ 4.0 hashes/second.


5. Étudiez le résultat, et comparez avec la commande docker ps.

Comparaison

docker-compose ps

  • Liste uniquement les conteneurs du projet Docker Compose actuel.

  • Ajoute des colonnes spécifiques comme SERVICE et STATUS.

  • Exemples :

    • webui : Port 8000.

    • rng : Port 8001.

    • hasher : Port 8002.

docker ps

  • Liste tous les conteneurs actifs sur l’hôte Docker, même hors Compose.

  • Affiche des détails comme CONTAINER ID et NAMES.

Observations pour DockerCoins

  • Conteneurs actifs : 6 (dont 2 worker scalés).

  • Ports exposés :

    • webui : 8000

    • rng : 8001

    • hasher : 8002


6. Est-ce que votre taux de génération a été multiplié par 10 ?

Réponse : Non, le taux n'a pas été multiplié par 10 malgré l'ajout de conteneurs supplémentaires pour le service worker.

Pourquoi ?

Ce résultat montre que worker n'est pas le goulot d’étranglement de l’application. Cela signifie que les performances de l'application sont limitées par un autre service, probablement rng ou hasher.

Pour confirmer cela, vous pouvez identifier le service avec la latence la plus élevée en utilisant des outils tels que curl ou Measure-Command sous Windows, comme décrit dans la section 🚦 Détection du goulot d’étranglement

Si nécessaire, terminez la commande de mesure des performances ou d'analyse avec :

Ctrl+C

7. Lequel a le plus de latence, et est donc notre goulot d’étranglement?

Le service RNG (Random Number Generator) présente la latence la plus élevée avec 96 millisecondes (ms), contre seulement 19 millisecondes (ms) pour le service Hasher. Cela indique que le service RNG est le goulot d’étranglement dans la chaîne de traitement de DockerCoins.

Analyse :

  • Le service RNG est responsable de fournir des nombres aléatoires pour le processus de minage des DockerCoins.

  • Une latence plus élevée dans RNG ralentit l'ensemble du processus, car les services suivants (Hasher, Worker) dépendent de sa sortie.


8. Quelle est l’ip de votre serveur Docker host1 ?

L'adresse IP de mon serveur Docker host1 est 192.168.253.150.


9. A quoi pouvez-vous le voir?

La sortie indique que l’hôte Docker utilisé est host1, avec l’adresse tcp://192.168.253.150:2376 et les informations sur les conteneurs, volumes et images actifs.


10. Qu’est-ce qui vous indique que tous les nœuds sont majeurs.

Le statut MANAGER STATUS de chaque nœud est soit Leader soit Reachable.


11. Quel est l’état de la plupart de vos nœuds ? Que cela signifie-t’il ?

Les nœuds présentent un mélange de statuts :

  • host2 : Les tâches Elasticsearch sont Running.

  • host3 et host1 : Les tâches échouent avec des statuts Shutdown et des erreurs comme non-zero exit (1) et non-zero exit (137).

Signification : Cela indique que certains nœuds ne parviennent pas à exécuter Elasticsearch, probablement en raison d’un manque de ressources (mémoire) ou d’une configuration système inadaptée. Cela déséquilibre la charge du cluster, forçant les tâches à s’exécuter uniquement sur les nœuds fonctionnels comme host2.


12. Quelle est la différence de notre réseau dockercoins comparé aux autres ?

  • SCOPE : swarm signifie que ce réseau est partagé entre les nœuds du cluster.

  • Contrairement à un réseau bridge local, l’overlay permet une communication multi-hôtes.


13. Quel est le taux de génération de Dockercoins ?

Une fois les services en cours d'exécution, le taux de génération indiqué dans l'interface est d'environ 4.0 hashes/second.


14. Quel est le taux de génération de dockercoins?

Après l’augmentation des réplicas, le taux de génération atteint environ 6.0 et 12 hashes/second.


15. Ouvrez la webui, quel est votre vitesse de génération de Dockercoins ?

Grâce à la répartition globale, la vitesse augmente considérablement et atteint environ 16.0 et 30 hashes/second.


16. Une fois toutes les instances de worker mises à jour, quel est le taux de génération de dockercoins ?

Le taux devient plus stable, atteignant environ 25.0 et 35 hashes/second.


17. Attendez que les instances soient downgradées, quel est le taux de génération de Dockercoins ?

La génération diminue légèrement, oscillant entre 10.0 et 30 hashes/second.

Last updated