Un des modules open source les plus populaires d’Akka est Akka Streams. Basé sur les principes des “Reactives Streams” que Lightbend a conjointement popularisé avec des ingénieurs de Netflix, Oracle, Pivotal et d’autres entreprises, ce module permet le traitement des flux de données en temps réel avec gestion de la contre-pression (backpressure). Comme pour le protocole TCP, la contrepression permet de se prémunir contre la surcharge d’un système par un producteur de messages.

Reactive Streams et Akka Streams

figure11

Sur la figure ci-dessus, sur la gauche, sont représentées les terminologies utilisées par Java 9 (publisher/producteur, processeur, subscriber/consommateur) et, sur la droite, l’équivalent dans Akka Streams (source, flow/ flux, sink). Dans la version 9 de Java, cette implémentation n’est pas destinée à être utilisée directement mais plutôt à servir de base pour une implémentation d’un outil de streaming.

L’équipe Lightbend ainsi que la communauté Open Source d’Akka ont construit Akka Streams en se basant sur les principes des “Reactive Streams” et en ajoutant des fonctionnalités supplémentaires dans l’étape “Flow”. Les fonctionnalités les plus populaires sont inspirées de la programmation fonctionnelle, comme les “filter”, “fold”, et “map”, qui ont des méthodes permettant de transformer la donnée lors de son passage dans la pipeline de transformation (étape Flow).

 

Akka Streams, Akka HTTP, et Alpakka

figure-12

Akka HTTP est développé à partir d’Akka Streams afin de traiter les requêtes HTTP et les transformer en réponses HTTP. Le “Flow” représente la transformation qui intervient au sein du stream. La partie Flow d’Akka Streams ou Akka HTTP utilise des websockets pour traiter les messages au fur et à mesure de l’entrée dans la “source”.

La librairie Alpakka permet d’avoir une alternative réactive à Apache Camel et basée sur les principes des “Reactive Streams”. Ci-dessous une liste de connecteurs open source compatibles avec Alpakka permettant de créer des contrepression aux points d’entrée/sortie d’Apache Camel.

Connecteurs :

  • AMQP Connector
  • Apache Geode connector
  • Apache Solr Connector
  • AWS DynamoDB Connector
  • Azure Storage Queue Connector
  • AWS Kinesis Connector
  • AWS Lambda Connector
  • Cassandra Connector
  • AWS S3 Connector
  • AWS SNS Connector
  • Elasticsearch Connector
  • AWS SQS Connector
  • File Connectors
  • FTP Connector
  • HBase connector
  • IronMq Connector
  • JMS Connector
  • MongoDB Connector
  • MQTT Connector
  • OrientDB Connector
  • Server-sent Events (SSE) Connector
  • Slick (JDBC) Connector
  • Spring Web
  • Unix Domain Socket Connector

Résumé

Voici les éléments clés à retenir de cette section :

  • Les principes des Reactive Streams fournissent de la contrepression (backpressure) aux applications à forte volumétrie pour éviter de les saturer,
  • Akka Streams est l’implémentation des principes des Reactive Streams et fournit une librairie riche pour la gestion des traitements des flux de données,
  • Akka HTTP et Alpakka sont des modules gérant la contrepression et fournissant respectivement un serveur HTTP résiliant et une solution “ESB” dans l’écosystème d’Akka.

 


NidhalSpécialiste de sujets liés aux Architecture Reactives, j’ai travaillé sur de nombreux projets stratégiques de refonte SI impliquant plusieurs métiers. Je suis également passionné par les sujets liés à l’Agile, je contribue d’ailleurs au blog Organisation Performante.

N’hésitez pas à me faire un retour sur cet article ou à me contacter sur LinkedIn pour partager nos actualités!

Nidhal

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Abonnez-vous à notre newsletter

Saisissez votre adresse e-mail pour vous abonner à ce blog et recevoir les derniers articles publiés!