Exemples de solution de données de streaming
Scénario 1 : offre Internet basée sur la localisation
La société InternetProvider fournit des services Internet avec une variété d'options de bande passante à des utilisateurs du monde entier. Lorsqu'un utilisateur s'inscrit à Internet, la société InternetProvider lui propose différentes options de bande passante en fonction de sa localisation géographique. Compte tenu de ces exigences, la société InternetProvider a mis en œuvre un service Amazon Kinesis Data Streams pour exploiter les détails et la localisation des utilisateurs. Les détails et la localisation des utilisateurs sont enrichis par différentes options de bande passante avant la publication dans l'application. AWS Lambda

Traitement de flux de données avec AWS Lambda
Amazon Kinesis Data Streams
Amazon Kinesis Data Streams
Lors de la mise en œuvre d'une solution avec Kinesis Data Streams, vous créez des applications de traitement de données personnalisées appelées applications Kinesis Data Streams. Une application Kinesis Data Streams classique lit les données d'un flux Kinesis en tant qu'enregistrements de données.
Les données intégrées à Kinesis Data Streams sont garanties pour être hautement disponibles et élastiques, et sont disponibles en quelques millisecondes. Vous pouvez ajouter en permanence différents types de données à un flux Kinesis, notamment des parcours de navigation, des journaux d'application et des données de réseaux sociaux, et ce, depuis plusieurs centaines de milliers de sources. En quelques secondes, ces données sont accessibles à vos applications Kinesis
Amazon Kinesis Data Streams est un service de données de streaming entièrement géré. Il gère l'infrastructure, le stockage, la mise en réseau et la configuration nécessaires à la diffusion en continu de vos données, en s'adaptant au débit de celles-ci.
Envoi de données à Amazon Kinesis Data Streams
Il existe plusieurs manières d'envoyer des données à Kinesis Data Streams, ce qui vous permet de concevoir vos solutions de manière flexible.
-
Vous pouvez écrire du code en utilisant un des kits SDK AWS
pris en charge par plusieurs langages populaires. -
Vous pouvez utiliser Amazon Kinesis Agent, un outil permettant d'envoyer des données à Kinesis Data Streams.
La bibliothèque Amazon Kinesis Producer Library (KPL) simplifie le développement d'applications producteur en permettant aux développeurs d'atteindre un débit d'écriture élevé pour un ou plusieurs flux de données Kinesis.
Facile à utiliser et hautement configurable, la bibliothèque KPL peut être installée sur vos hôtes. Elle sert d'intermédiaire entre le code de votre application producteur et les actions de l'API Kinesis Streams. Pour plus d'informations sur la bibliothèque KPL et sa capacité à produire des événements de manière synchrone et asynchrone à l'aide d'exemples de code, reportez-vous à Écriture dans le flux de données Kinesis à l'aide de KPL.
Dans l'API Kinesis Data Streams, deux opérations différentes permettent d'ajouter des données à un flux : PutRecords
et PutRecord
. L'opération PutRecords
envoie plusieurs enregistrements à votre flux par demande HTTP tandis que PutRecord
soumet un enregistrement par demande HTTP. Pour obtenir un débit plus élevé pour la plupart des applications, utilisez PutRecords
.
Pour de plus amples informations sur ces API, consultez Ajout de données à un flux. Vous trouverez les détails de chaque opération d'API dans le document Amazon Kinesis Data Streams API Reference.
Traitement des données dans Amazon Kinesis Data Streams
Pour lire et traiter les données des flux Kinesis, vous devez créer une application consommateur. Il existe différentes manières de créer des consommateurs pour Kinesis Data Streams. Certaines de ces approches incluent l'utilisation d'Amazon Kinesis Data Analytics
Les applications consommateur pour Kinesis Data Streams peuvent être développées à l'aide de la KCL, qui vous permet de consommer et de traiter les données à partir de Kinesis Data Streams. La KCL prend en charge de nombreuses tâches complexes associées à l'informatique distribuée, telles que l'équilibrage de charge sur plusieurs instances, la réponse aux défaillances d'instance, la vérification des enregistrements traités et la réaction au repartitionnement. La KCL vous permet de vous concentrer sur l'écriture de la logique de traitement des enregistrements. Pour plus d'informations sur la façon de créer votre propre application KCL, veuillez consulter Utilisation de la bibliothèque client Kinesis.
Vous pouvez vous abonner à des fonctions Lambda pour lire automatiquement des lots d'enregistrements de votre flux Kinesis et les traiter si des enregistrements sont détectés dans le flux. AWS Lambda interroge périodiquement le flux (une fois par seconde) et, lorsqu'il détecte de nouveaux enregistrements, appelle la fonction Lambda en transmettant ces nouveaux enregistrements en tant que paramètres. La fonction Lambda n'est exécutée que lorsque de nouveaux enregistrements sont détectés. Vous pouvez mapper une fonction Lambda à un consommateur à débit partagé (itérateur standard).
Vous pouvez créer un consommateur qui utilise une fonction appelée sortance améliorée lorsque vous avez besoin d'un débit dédié que vous ne voulez pas opposer aux autres consommateurs qui reçoivent des données du flux. Cette fonction permet aux applications consommateur de recevoir des enregistrements provenant d'un flux avec un débit pouvant atteindre 2 Mo de données par seconde par partition.
Dans la plupart des cas, avec Kinesis Data Analytics, la bibliothèque client Kinesis, AWS Glue ou AWS Lambda doit être utilisé pour traiter les données d'un flux. Toutefois, si vous préférez, vous pouvez créer une application consommateur à l'aide de l'API Kinesis Data Streams. L'API Kinesis Data Streams fournit les méthodes GetShardIterator
et GetRecords
pour extraire les données d'un flux.
Dans ce modèle d'extraction, votre code extrait les données directement depuis les partitions du flux. Pour de plus amples informations sur l'écriture de votre propre application consommateur à l'aide de l'API, consultez Développement d'applications consommateur personnalisées avec un débit partagé avec AWS SDK for Java. Vous trouverez des détails sur l'API dans le document Amazon Kinesis Data Streams API Reference.
Traitement de flux de données avec AWS Lambda
AWS Lambda
AWS Lambda s'intègre en mode natif à Amazon Kinesis Data Streams. Les complexités liées à l'interrogation, à la création de points de contrôle et à la gestion des erreurs sont supprimées lorsque vous utilisez cette intégration native. Cela permet au code de fonction Lambda de se concentrer sur le traitement de la logique métier.
Vous pouvez mapper une fonction Lambda à un débit partagé (itérateur standard) ou à un consommateur à débit dédié avec diffusion améliorée. Avec un itérateur standard, Lambda interroge chaque partition de votre flux Kinesis pour des enregistrements qui utilisent le protocole HTTP. Pour réduire la latence et optimiser le débit en lecture, vous pouvez créer un consommateur de flux de données avec diffusion améliorée. Les consommateurs de flux de cette architecture obtiennent une connexion dédiée à chaque partition sans entrer en concurrence avec les autres applications lisant le même flux. Amazon Kinesis Data Streams pousse les enregistrements vers Lambda via HTTP/2.
Par défaut, AWS Lambda appelle votre fonction dès que des enregistrements sont disponibles dans le flux. Pour mettre en mémoire tampon les enregistrements des scénarios de traitement par lots, vous pouvez mettre en œuvre une fenêtre de traitement par lots pendant cinq minutes maximum à la source de l'événement. Si votre fonction renvoie une erreur, Lambda procède à des tentatives de traitement du lot jusqu'à ce qu'il y parvienne ou que les données expirent.
Récapitulatif
La société InternetProvider a exploité Amazon Kinesis Data Streams pour diffuser les détails et la localisation des utilisateurs. Le flux d'enregistrement a été utilisé par AWS Lambda pour enrichir les données avec des options de bande passante stockées dans la bibliothèque de la fonction. Après l'enrichissement, AWS Lambda a de nouveau publié les options de bande passante dans l'application. Amazon Kinesis Data Streams et AWS Lambda ont géré l'approvisionnement et la gestion des serveurs, permettant ainsi à la société InternetProvider de se concentrer davantage sur le développement d'applications métier.