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.
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.
www.mddynamics.fr/app/api?mddynamics.id=app23
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.
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.
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.
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)
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)
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