Che cos'è AWS Kinesis? Modello di progettazione, casi d'uso e confronto
Pubblicato: 2022-07-01Viviamo nell'era delle integrazioni tra applicazioni, delle notifiche istantanee e degli aggiornamenti istantanei dei dati. In un tale scenario, diventa più importante creare, mantenere e modificare i sistemi in tempo reale.
Nel corso degli anni, sono stati sviluppati vari strumenti utili per aiutare a costruire e mantenere tali sistemi multipiattaforma. RabbitMQ, Kafka e AWS Kinesis sono tre di questi strumenti che hanno aiutato sviluppatori e ingegneri a lavorare senza problemi con i dati in tempo reale. Questi sistemi sono stati tutti creati e mantenuti tenendo conto di obiettivi diversi. Pertanto, vengono con i loro vantaggi e limiti distinti in base al lavoro a portata di mano.
Questo articolo parlerà in dettaglio di AWS Kinesis e di come funziona.
Kinesis è un servizio di streaming basato su AWS. Può essere utilizzato per elaborare tutti i tipi di dati: registri, dati IoT, dati video, praticamente qualsiasi formato di dati. Ciò ti consente di eseguire diversi modelli e processi di machine learning sui dati in tempo reale mentre fluiscono attraverso il tuo sistema. Quindi, riduce il fastidio di passare attraverso i database tradizionali aumentando l'efficienza complessiva.
Esplora i nostri corsi MBA popolari
Master in Business Administration presso la Golden Gate University | Master in Business Administration (MBA) Liverpool Business School | MBA della Deakin Business School |
MBA in marketing digitale presso la Dekin University | Executive MBA di SSBM | Visualizza tutti i corsi MBA |
Il modello di progettazione Pub/Sub
Prima di approfondire esattamente come utilizzare Kinesis, è essenziale saperne un po' di più sul modello di progettazione che utilizza. In questo caso, stiamo parlando del design dell'editore e dell'abbonato, che viene spesso definito modello di progettazione pub/sub. Questo modello di progettazione è stato sviluppato per avere l'editore, il mittente del messaggio, che invia gli eventi in Kinesis, un bus di eventi. Quindi, questo bus eventi distribuisce correttamente i dati di input a tutti gli abbonati.
Un elemento chiave da tenere a mente qui è che gli editori essenzialmente non hanno idea dell'esistenza di abbonati. Tutta la messaggistica e il trasporto della messaggistica è gestita interamente da AWS Kinesis.
In altre parole, il modello di progettazione pub/sub viene utilizzato per una comunicazione efficiente dei messaggi senza creare un design molto accoppiato. Invece, Kinesis si concentra sull'utilizzo di componenti indipendenti e sulla creazione di un flusso di lavoro distribuito complessivo da questo.
In sostanza, AWS Kinesis è un potente strumento di streaming che offre vantaggi distinti, soprattutto rispetto ad altri strumenti di streaming in tempo reale. Uno di questi vantaggi è che si tratta di un servizio gestito, quindi gli sviluppatori non devono gestire l'amministrazione del sistema. Ciò consente agli sviluppatori di concentrarsi maggiormente sul codice e sui sistemi e meno sui compiti amministrativi.
Ora, diamo un'occhiata ad alcuni casi d'uso di Kinesis.
Caso d'uso di AWS Kinesis – Streaming di dati
AWS Kinesis è utile per aziende grandi e piccole che desiderano gestire e integrare i propri dati in piattaforme diverse. Kinesis è vantaggioso in scenari su larga scala e piccoli per le organizzazioni che desiderano gestire e integrare i propri dati su più piattaforme.
Diamo un'occhiata a due grandi casi d'uso in cui le aziende hanno utilizzato AWS Kinesis per gestire senza problemi grandi quantità di dati in tempo reale.
Netflix
Netflix utilizza AWS Kinesis per elaborare più TB di dati di log ogni giorno. Netflix ha bisogno di un'applicazione centralizzata che registri tutti i dati in tempo reale. Utilizzando Kinesis, Netflix ha sviluppato Dredge, che arricchisce i contenuti con metadati in tempo reale. In questo modo, i dati vengono elaborati istantaneamente mentre passano attraverso Kinesis. Ciò elimina un noioso passaggio di caricamento dei dati in un database per l'elaborazione futura.
Veritono
Veriton fornisce servizi di intelligenza artificiale e machine learning. Utilizza i flussi video di AWS Kinesis per l'elaborazione dei dati dei clienti. Veriton applica anche modelli ML e AI al contenuto in tempo reale per migliorarlo con metriche e metadati. Utilizzando queste informazioni aggiuntive, Veritone semplifica la ricerca dei flussi video Kinesis osservando l'audio, il riconoscimento facciale, i dati con tag, ecc.
Questi sono solo due dei numerosi esempi di come le aziende oggi sfruttano AWS Kinesis per lavorare con lo streaming di dati in tempo reale in modo più efficiente.
Passiamo ai tecnicismi e ai componenti essenziali del flusso AWS Kinesis.
Impara i corsi di AI e ML dalle migliori università del mondo. Guadagna master, Executive PGP o programmi di certificazione avanzati per accelerare la tua carriera.
Streams vs Firehose
AWS Kinesis offre agli sviluppatori due prodotti principali: Kinetic Streams e Kinesis Firehose.
Per lavorare con Kinesis Stream, dovrai usare la Kinesis Producer Library. Ti consentirà di inserire tutti i dati in tempo reale nel tuo stream. Inoltre, puoi collegare questa libreria a quasi tutte le applicazioni o processi. Tuttavia, Kinesis Streams non è un servizio gestito al 100%. Pertanto, il team di sviluppatori dovrà ridimensionarlo manualmente quando necessario. Inoltre, i dati immessi nel flusso rimarranno lì per sette giorni.
Kinesis Firehose è leggermente più semplice da implementare. I dati forniti a Kinesis Firehose vengono inviati ad Amazon Redshift, Amazon S3 e persino Elasticsearch, il tutto utilizzando il motore AWS Kinesis. Successivamente, puoi elaborarlo secondo le tue esigenze. Se i dati sono archiviati in Amazon S3 o in qualsiasi altro sistema di storage AWS, puoi lasciarli lì per tutto il tempo che desideri.
Configurazione di un flusso su Kinesis
Prima di iniziare ad accedere a Kinesis, devi configurare uno stream accedendo all'AWS CLI. Nella shell dei comandi, immetti il comando seguente per creare un flusso chiamato DataProcessingStream
–stream-name DataProcessingStream \
–conteggio frammenti 1 \
–regione eu-ovest-1
Creazione di una pipeline di streaming con Python
Dopo aver impostato uno stream su Kinesis, devi iniziare a creare il produttore e il consumatore. I componenti principali di Kinesis ti aiutano a creare un livello di accesso per integrare altri sistemi, software e applicazioni.
In questo tutorial, lavoreremo con la libreria Python boto3 per connetterci a Kinesis.
Creare il produttore
Utilizzare il codice indicato di seguito per creare il produttore utilizzando il linguaggio di programmazione Python:
importa boto3
importa json
registrazione dell'importazione
logging.basicConfig(livello = logging.INFO)
session = boto3.Session(region_name='eu-west-1')
client = session.client('kinesis')
test_data = {'data_tag': 'DataOne', 'score': '10', 'char': 'Database Warrior'}
risposta = client.put_record(
StreamName='DataProcessingStream',
Data=json.dumps({
“data_tag”: test_data['data_tag'],
“punteggio”: test_data['punteggio'],
“char”: test_data['char']
}),
PartitionKey='a01'
)
logging.info("Inserisci nuovo punteggio dati: %s", test_data)
Per estrarre i dati, è necessario un altro script per ascoltare i dati inviati ai produttori. Per questo, puoi utilizzare ShardIterator per accedere a tutti i dati inseriti in Kinesis. In questo modo, puoi accedere ai record in tempo reale e futuri in Kinesis.
Creare il consumatore
Usa il codice indicato di seguito per creare un consumatore Python:
importa boto3
importa json
importazione sist
registrazione dell'importazione
logging.basicConfig(livello = logging.INFO)
session = boto3.Session(region_name='eu-west-1')
client = session.client('kinesis')
aws_kinesis_stream = client.describe_stream(StreamName='DataProcessingStream)
shard_id = aws_kinesis_stream['StreamDescription']['Shards'][0]['ShardId']
stream_response = client.get_shard_iterator(
StreamName='DataProcessingStream',
ShardId=shard_id,
ShardIteratorType='TRIM_HORIZON'
)
iteratore = stream_response['ShardIterator']
mentre Vero:
Tentativo:
aws_kinesis_response = client.get_records(ShardIterator=iteratore, Limite=5)
iteratore = aws_kinesis_response['NextShardIterator']
per record in aws_kinesis_response['Records']:
se 'Dati' in record e len(record['Dati']) > 0:
logging.info("Ricevuto nuovo punteggio dati: %s", json.loads(record['Dati'])))
tranne KeyboardInterrupt:
sys.exit()
Nell'esempio sopra, stiamo solo stampando i dati.
Problemi con le condutture Kinesis
La cinesi è davvero benefica, ma non è priva di sfide e carenze. Una delle sfide significative che dovrai affrontare lavorando con Kinesis può essere chiamata "osservabilità".
Man mano che lavori con diversi componenti AWS, il sistema che crei diventerà sempre più complesso. Ad esempio, se utilizzi le funzioni Lambda come produttore e consumatore e le colleghi a diversi sistemi di storage AWS, diventerà molto difficile gestire e tenere traccia di dipendenze ed errori.
Leggi i nostri articoli popolari relativi all'MBA
Stipendio dell'analista finanziario - Matricole ed esperto | Le migliori domande e risposte per le interviste per le risorse umane | Opzioni di carriera nel marketing MBA negli Stati Uniti |
Le migliori opzioni di carriera negli Stati Uniti dopo l'MBA in risorse umane | Le 7 migliori opzioni di carriera nelle vendite | Lavori finanziari più pagati negli Stati Uniti: dalla media al più alto |
Le 7 migliori opzioni di carriera in finanza negli Stati Uniti: da leggere | Le 5 migliori tendenze di marketing nel 2022 | Stipendio MBA negli Stati Uniti nel 2022 [tutte le specializzazioni] |
Insomma
Non c'è dubbio che lo streaming di dati e l'utilizzo di dati in tempo reale siano la necessità del momento e aumenteranno solo man mano che il nostro mondo produce sempre più dati. Quindi, se sei interessato a padroneggiare i trucchi di Kinesis, un corso professionale potrebbe aiutarti.
Il Master of Science in Machine Learning e AI di upGrad, offerto con la collaborazione di IIIT-B e LJMU, è un corso completo di 18 mesi progettato per aiutarti a iniziare con le basi dell'esplorazione dei dati e raggiungere tutti i concetti critici di NLP, Deep Apprendimento, apprendimento per rinforzo e altro ancora. Inoltre, puoi lavorare su progetti di settore, supporto professionale a 360 gradi, tutoraggio personalizzato, opportunità di networking tra pari e molto altro ancora per aiutarti a padroneggiare Machine Learning e AI.
1. AWS Kinesis può estrarre dati?
Amazon Kinesis è una soluzione di streaming di dati in tempo reale scalabile e durevole che funziona acquisendo continuamente GB di dati in tempo reale da migliaia di origini.
2. Un flusso Kinesis può avere più consumatori?
Sì, utilizzando gli iteratori shard puoi fornire più consumatori in un flusso Kinesis.
3. Con quale tipo di coda funziona AWS Kinesis?
AWS Kinesis è FIFO - First In First Out - nelle sue operazioni e nei processi di dati.