Skip to main content

Concepts

MD Dynamics Link est une plateforme d'exécution d'algorithmes distribués (streams) composés de fonctions lambdas pouvant être exécutées sur de nombreux nodes et endpoints, en parallèle, en load-balancing, avec routage, etc. Faisons le tour des concepts à l'oeuvre

Streams

Développez vos apis, micro-services, services métiers stateless ou statefull, etc. sous forme de streams. Un stream est un algorithme composé de fonctions lambdas distribuées sur le réseau de nodes et d'endpoints de la plateforme. Les données sont traitées sous forme d'événements (messages) transmis en streaming mais de nombreux patterns sont disponibles (publish/subscribe, request/reply, request/reply multi-destinataires, notification synchrone/asynchrone, agrégations, etc.)

Nodes

La plateforme est constituée d'un réseau de nodes (JVM) inspiré des réseaux peer-to-peer, capables d'établir des connexions dynamiques en fonction de la logique des algorithmes exécutés. Chaque node gère le déploiement automatique des streams et fournit un ensemble de services de base (processing, cache, storage, http, etc.)

Endpoints

Chaque lambda d'un stream est exécutée sur une URL de distribution pour laquelle vous pouvez choisir le nombre d'endpoints. Ces endpoints peuvent être vus comme des "instances adressables" d'une lambda.

URL de distribution

L'URL de distribution associée à une lambda permet d'atteindre n'importe quel(s) node(s) et endpoint(s) cible(s) et de transmettre les messages avec le mode de distribution choisi : load-balancing, broadcasting, routage, map/reduce, etc.

Par défaut, les données sont distribuées en streaming et broadcastées (envoyées à tous les endpoints cibles)

Distribution par path: Ce mode de distribution permet d'atteindre tous les endpoints présents sur le chemin désigné par l'URL.

Cible tous les endpoints mappés sur le chemin suivant
www.mddynamics.fr/app/api -> www.mddynamics.fr/app/api/sales, www.mddynamics.fr/app/api/customers, ..

Distribution par clé: Ce mode de distribution permet de router les données pour les traiter dans l'ordre, les grouper ou les agréger. Si plusieurs clés sont utilisées, l'ordre global des messages reçus n'est pas garanti. En revanche, tous les messages associés à la même clé sont reçus dans l'ordre d'émission sur chaque endpoint cible.

Cible tous les endpoints correspondant à la clé indiquée
www.mddynamics.fr/app/api?mddynamics.id=app23
Cible tous les endpoints correspondant à la clé saleID issue du flux
www.mddynamics.fr/app/api?mddynamics.id=/saleID

Distribution par load-balancing: Ce mode de distribution "load-balance" les messages de façon homogène vers les endpoints cibles. L'ordre global des messages reçus par les endpoints cibles est aléatoire.

Exemple
www.mddynamics.fr/app/api?mddynamics.auto

Distribution sur le node local: Ce mode de distribution peut être ajouté aux modes précédents pour limiter la distribution aux endpoints locaux au node d'exécution de la lambda.

Exemple
www.mddynamics.fr/app/api?mddynamics.auto&mddynamics.local

Distribution par scope: distribution des messages sur les endpoints ayant le scope désigné (le scope est associé aux endpoints du service "stream-plugin" des nodes cibles dans conf/network.ttl), utile pour du edge computing.

Exemple
www.mddynamics.fr/app/api?mddynamics.scope=region-ouest

Distribution par load-balancing sur scopes: distribution prioritaire par load-balancing sur les scopes désignés, puis selon les autres paramètres de distributions le cas échéant (permet une distribution ciblée sur des catégories d'endpoints désignés par une même url)

Exemple
www.mddynamics.fr/app/api?mddynamics.route=region-ouest,region-nord&mddynamics.auto

Distribution limitée: La durée de vie des messages échangés ou des requêtes peut être limitée par timeout, en millisecondes (default=10 minutes)

Cible tous les endpoints correspondant à la clé indiquée (distribution automatique)
www.mddynamics.fr/app/api?mddynamics.auto&mddynamics.timeout=3000

Vous pouvez transmettre en paramètres de l'URL des données issues des messages reçus par la lambda en spécifiant le chemin vers la donnée, par exemple, mddynamics.id=/sequence/flight/number

Lambdas

Le stream DSL propose plusieurs types de lambdas pour gérer le flux logique d'un stream: from, to, broadcast, map, reduce, when, otherwise, parallel, store, read, reply