La cinématique des micro-services¶
Vue d’ensemble des microservices de l’application :
Entre le datasource
et le datamodel
¶
prérequis: |
|
---|
Le microservice datasource
¶
Le datasource
sert les fichiers de données :
- Les fichiers YAML de modèles de données chargés par le datasource sont dans
$ROOTPATH/dataModel/eole/release
. - Ils sont copiés par le
Dockerfile
du datasource:COPY dataModel/eole /data/seed
- Le datasource se connecte au service crossbar (en fait un message est émis au démarrage depuis chaque conteneur, ce comportement n’est pas spécifique au conteneur datasource)
Le micro-service servermodel
¶
servermodel
réagit quand un message est envoyé de datasource (viacrossbar
)en cas d’ajout de fichier YAML, il faut :
stopper le conteneur
datasource
:docker stop $(docker ps -aqf "name=zephir_datasource")
effacer ce conteneur:
docker rm $(docker ps -aqf "name=zephir_datasource")
effacer l’image de ce conteneur:
docker rmi zephir_datasource
lancer un rebuild de datasource:
zephir-compose -b dev -- up --build -d datasource
une fois le rebuild fait, les fichiers YAML sont recopiés à nouveau dans l’image
un index des YAML est regénéré et le nouveau YAML est pris en compte.
au démarrage de
servermodel
, ce microservice demande l’état dedatasource
Important
Il est aussi possible, en cas de modification des fichiers YAML du datasource,
de relancer programmatiquement le rechargement des données du datasource,
en appelant le message servermodel.describe
avec le paramètre schema
renseigné à True
.
Les messages crossbar au moment du start¶
Un message générique est émis à chaque démarrage de conteneur
ce message émis, si le conteneur qui a démarré est datasource
,
alors servermodel
va réagir.
En pseudocode, on filtre sur:
if name == 'datasource' and status in ['started', 'start']:
status
peut avoir la valeur start
quand le conteneur est en train de démarrer,
ou started
quand on demande l’état du microservice.
servermodel envoie le message `self.publish('v1.zephir.services.available', name='datasource')
à crossbar,
et crossbar répond started
.
Note
l’événement stop
n’est actuellement pas pris en compte.