La couche d'intégration

Relays

Les Relays se situent à la frontière entre 3forge et les systèmes externes. Leur rôle : faire entrer les données en direct dans le maillage et mettre en œuvre des modèles d'architecture spécifiques pour la montée en charge et le traitement des données.

Rôle dans le maillage

À la frontière de l'intégration

Les Relays se connectent aux flux temps réel, aux systèmes de messagerie, aux bases de données, aux fichiers et aux applications locales au moyen de gestionnaires de flux et d'adaptateurs. À mesure que l'information arrive, un Relay peut l'analyser, la valider et la transformer avant de l'acheminer vers un ou plusieurs Centers. Effectuer ce travail à la frontière de l'intégration réduit la logique propre à chaque source qu'il faudrait sinon implémenter en aval.

Les Relays peuvent aussi offrir au Center un accès contrôlé aux ressources externes. Ils peuvent émettre des requêtes vers des bases de données, charger des données, accéder à des fichiers et à des journaux, lancer des processus locaux ou envoyer des commandes aux applications en aval.

Les Relays forment ainsi la couche d'intégration et de transport du maillage : au plus près de la source, conscients du contenu du message, et chargés de le livrer sous la forme et dans la direction qu'exige le reste du système.

Les Relays à la frontière de l'intégration, entre les systèmes externes et les Centers du maillage

Les Relays servent à deux usages :

Flux temps réel

Centers et Relays peuvent tous deux se connecter directement aux bases de données. Les Relays sont en outre conçus pour se connecter aux flux temps réel : ils terminent le protocole, puis analysent, valident et normalisent chaque message avant qu'un Center ne le reçoive.

Plugins disponibles

Modèles de montée en charge

Répartir le travail entre plusieurs Centers, équilibrer la charge, répliquer un flux vers un serveur de secours à chaud ou conserver les messages pendant l'indisponibilité d'une destination : tout cela repose sur les règles de routage du Relay. Les modèles ci-dessous illustrent ce second usage.

Exemples de modèles

Sept façons de déployer les Relays

Les Relays ne se limitent pas à transmettre des messages. Les règles de routage peuvent déterminer quels messages vont vers quels Centers, répliquer certains flux vers plusieurs destinations ou écarter les messages qui ne répondent pas aux critères définis. Elles permettent ainsi des traitements distribués, où le travail est réparti entre plusieurs Centers avant que l'état obtenu ne soit recombiné.

Routage dynamique des messages et Map Reduce

  • Des règles aiguillent chaque message vers un Center de traitement spécialisé selon son contenu, la charge ou une logique sur mesure, configurables en temps réel
  • Chaque Center traite sa part, et une opération map-reduce fusionne les résultats
Règles de routage dynamique et Map Reduce entre des Centers de traitement spécialisés
Règles de routage dynamique et Map Reduce. Les règles de routage déterminent la destination.

Messagerie garantie

  • Chaque mise à jour critique est persistée durablement et livrée, quels que soient la charge ou les aléas du réseau
  • Les messages sont consignés dans un journal d'écriture anticipée (write-ahead log), si bien qu'un Center déconnecté peut se reconnecter et rejouer ce qu'il a manqué
  • Pas de dédoublonnage, mais la durabilité et la continuité qu'exigent les systèmes de trading, de risque et de conformité en temps réel
Journalisation write-ahead log et rejeu en aval pour la messagerie garantie
Messagerie garantie

Transformation et routage des messages

  • Inspecter, modifier, enrichir ou filtrer les messages en transit, sans code sur mesure
  • Conçu pour FIX et les autres protocoles financiers, où les contreparties diffèrent et où les formats doivent être normalisés
  • Masquer les champs sensibles ou router selon le contenu
Transformation des messages : inspecter, modifier, enrichir, filtrer ou router les messages en transit
Transformation des messages. Grâce aux règles déclaratives et au scripting, 3forge permet une logique rapide et souple, adaptée à l'évolution des besoins de trading et de conformité.

Équilibrage de charge par règles de routage

  • La réplication répartit la charge entre les Centers selon les règles de routage du Relay
  • Plus de Centers, plus de redondance et d'évolutivité
  • Réplication multirégion et mondiale
Équilibrage de charge de bases de données entre plusieurs Centers selon les règles de routage du Relay
Équilibrage de charge des bases de données

Réplication des données

  • Bases de données Center principale et de secours à chaud, par simple configuration
  • Le secours surveille l'état du principal et prend le relais en cas de panne
  • Toutes les données sont déjà chargées en mémoire sur le secours
Réplication des données entre une base Center principale et un secours à chaud
Réplication des bases de données

Agrégation des données de marché

  • Fait converger de nombreuses sources sensibles à la latence vers un ou plusieurs Centers
  • Quand la vue agrégée fait la différence, par exemple la liquidité sur plusieurs places d'exécution
  • Construit la profondeur de marché de niveau 2
Agrégation des données de marché : flux de prix de plusieurs places d'exécution réunis dans une vue unifiée
Exemple d'agrégation de flux de prix entre places d'exécution

Agrégation des données de trading

  • Fait converger de nombreuses sources de données de trading pour les requêtes temps réel et historiques
  • Carnets d'ordres de nombreux clients et exécutions de plusieurs places
  • Agrégation des carnets d'ordres entre classes d'actifs
Agrégation des données de trading : carnets d'ordres de plusieurs systèmes de gestion des ordres réunis pour les requêtes temps réel et historiques
Exemple d'agrégation d'ordres entre systèmes de gestion des ordres

Cache, persistance et traitement

Les Relays sont au plus près de la source. Les Centers sont là où vit l'état.

SQL en mémoire sur l'état en direct, base historique à l'échelle du pétaoctet et moteur de traitement d'événements complexes, le tout dans le même runtime gouverné.