2022-02-24 19:43:43 +00:00
|
|
|
|
\
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
![ChocoMiner](dockercoins-diagram.svg)
|
|
|
|
|
|
|
|
|
|
Fier de respecter le paradigme des micro-services, notre ChocoMiner fonctionne
|
2022-02-24 19:43:43 +00:00
|
|
|
|
ainsi :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
* le `worker` demande à `rng` de générer un grand nombre aléatoire,
|
|
|
|
|
* le `worker` envoie ce grand nombre au `hasher`, qui lui retourne un hash,
|
|
|
|
|
* si le condensat respecte les contraintes pour obtenir une pépite, on est content,
|
|
|
|
|
* et on recommence, ainsi de suite, pour avoir le maximum de pépites.
|
|
|
|
|
|
|
|
|
|
Chaque seconde, le `worker` envoie à `influxdb` le nombre de hashs et de
|
|
|
|
|
pépites qu'il a ainsi pu obtenir.
|
|
|
|
|
|
|
|
|
|
Une interface graphique (`chronograf`) permet d'interroger la base de données
|
|
|
|
|
pour afficher des statistiques.
|
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
### Obtenir l'application
|
|
|
|
|
|
|
|
|
|
Les micro-services sont regroupés sur le dépôt suivant :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```shell
|
2021-11-19 23:00:30 +00:00
|
|
|
|
git clone https://git.nemunai.re/srs/chocominer.git
|
2019-11-26 15:00:39 +00:00
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
### Rappels sur la découverte de services
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
Dans Docker, nous avions vu que nous n'avions pas besoin de connaître les IP
|
2022-02-24 19:43:43 +00:00
|
|
|
|
des conteneurs : un serveur DNS nous permettait de se connecter aux différents
|
2019-11-26 15:00:39 +00:00
|
|
|
|
services à partir de leurs noms.
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Dans Kubernetes, le même principe s'applique : dans aucun cas, nous ne devrions
|
2021-11-19 23:00:30 +00:00
|
|
|
|
inscrire en dur des adresses IP. Il convient d'utiliser au maximum le système
|
2022-02-24 19:43:43 +00:00
|
|
|
|
DNS, car les IP sont susceptibles de changer !
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
### Tester avec `docker-compose`
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
<div lang="en-US">
|
2019-11-27 12:11:20 +00:00
|
|
|
|
```bash
|
|
|
|
|
docker-compose up
|
|
|
|
|
```
|
2022-02-24 19:43:43 +00:00
|
|
|
|
</div>
|
2019-11-27 12:11:20 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Une fois le `docker-compose` lancé, nous devrions pouvoir accéder à l'interface
|
|
|
|
|
de chronograf pour voir l'avancement de recherche de pépites :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2019-11-27 12:11:20 +00:00
|
|
|
|
<http://localhost:8888/sources/1/dashboards/1>
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
### Montée en puissance
|
|
|
|
|
|
|
|
|
|
Avec `docker-compose`, on peut facilement monter en puissance. Commençons en
|
|
|
|
|
augmentant doucement le nombre de `worker`, pour voir si cela a un impact :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
<div lang="en-US">
|
2019-11-27 12:11:20 +00:00
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d --scale worker=2
|
|
|
|
|
```
|
2022-02-24 19:43:43 +00:00
|
|
|
|
</div>
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
On remarque que le nombre de hashs calculés augmente ! Génial ! Continuons
|
|
|
|
|
d'augmenter alors :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
<div lang="en-US">
|
2019-11-27 12:11:20 +00:00
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d --scale worker=10
|
|
|
|
|
```
|
2022-02-24 19:43:43 +00:00
|
|
|
|
</div>
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Mais l'augmentation n'est plus aussi nette, on semble atteindre un palier au
|
|
|
|
|
bout d'un moment...
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
### Identification du goulot d'étranglement
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
|
|
|
|
De nombreux outils existent pour réaliser des tests de performance, essayons
|
|
|
|
|
`httping` sur nos différents services pour voir si un service ne serait pas
|
2022-02-24 19:43:43 +00:00
|
|
|
|
la cause des ralentissements :
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
- Testons `rng` : `httping -c 3 localhost:8001`,
|
|
|
|
|
- puis testons `hasher` : `httping -c 3 localhost:8002`.
|
2019-11-26 15:00:39 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Il semblerait que notre application `rng` nécessite d'être exécutée en
|
|
|
|
|
parallèle ! Mais on ne peut pas faire la répartition de charge facilement avec
|
|
|
|
|
`docker-compose` !
|