Che cos'è una "app di streaming", esattamente?

1

Sto cercando di superare tutti gli hipster, il buzzwording del pie-in-the-sky e di affrontare una domanda molto semplice e fondamentale:

Che cos'è un'applicazione di streaming?

Secondo il sito di Kafka

"Kafka is used for building real-time data pipelines and streaming apps"

Streaming app ... hmmm. OK, allora che cos'è una "app di streaming" ?! Secondo Quora , uno stream Java è:

[A sequence] of bytes that you can read from (InputStream and its subclasses) or write to (OutputStream and its subclasses)...

Non sembra che quella definizione si adatti. Da quello che posso raccogliere da vari articoli, una "app in streaming" sembra essere un'app che viene costantemente alimentata dai dati. Ma questa definizione non si applica anche a:

  • Un servizio HTTP RESTful, i cui client web inviano costantemente dati per tutto il giorno (e anche, interrogandoli per i dati)
  • Un broker di messaggi standard (AMQP, ecc.) i cui client sono costantemente in lettura / scrittura nelle code per tutto il giorno
  • Qualsiasi server di rete basato su TCP, i cui client TCP leggono e scrivono costantemente dati per tutto il giorno (inclusi i server di gioco MMO)
  • ?!?!

Quindi chiedo, perché qualcuno, da qualche parte, ha davvero bisogno di fare chiarezza su questo: " Un'app di streaming è solo alla moda, parola d'ordine di moda hipster o c'è una definizione distintiva per un'app di streaming che lo distingue da tutti i miei esempi sopra? "

    
posta smeeb 06.06.2017 - 15:43
fonte

4 risposte

7

Un'app di streaming è un'app che consuma un flusso di dati.

Un flusso di dati viene trasmesso formattato in un modo che può essere utile anche se incompleto. Poiché i dati di flusso parziale non richiedono una trasmissione completa, ciò consente ai consumatori di unirsi e andarsene in qualsiasi momento. Inoltre, consente la trasmissione continua, sebbene possa avviarsi e fermarsi su richiesta. Modella come funzionano le trasmissioni radiotelevisive.

Ciò contrasta con i trasferimenti di file che potrebbero essere inutili da consumare fino al completamento del trasferimento.

I flussi Java consentono il consumo di dati parziali ma non fanno nulla per trasferire dati su una rete da soli.

E come ogni parola buzz popolare, i soldi vengono spesi per far sembrare che sia più di quello che è.

    
risposta data 06.06.2017 - 16:59
fonte
1

In un'applicazione di streaming Kafka, il produttore:

  • Pubblica messaggi nel vuoto.
  • Non posso aspettarti una risposta immediata da una destinazione prevista (che sarebbe RPC).
  • Potrebbe non avere nemmeno una destinazione prevista (pensa log).
  • Si può dare la certezza che i messaggi sono memorizzati in modo duraturo da Kafka e non andranno persi.
  • Può essere data la certezza che i messaggi sono archiviati in ordine.
  • Non ha idea se zero, uno o più processi stiano leggendo i suoi messaggi in un dato momento o quanto lontano siano i consumatori.
  • Non ha idea di quante volte, o da quante parti, quei messaggi saranno consumati.

Il consumatore:

  • Agisce sui messaggi che estrae uno stream / log / coda remoto / qualunque cosa tu voglia chiamare.
  • Non sta tentando di comunicare nuovamente con la stessa funzione che ha inviato il messaggio.
  • Non si preoccupa necessariamente di quanto tempo sono stati prodotti i messaggi.
  • Non interessa necessariamente chi li ha letti, o se sono "fatti" (sebbene questa semantica possa essere sovrapposta alla gestione delle partizioni e degli offset, ad esempio in Samza).

I client del servizio HTTP non possono inviarlo a meno che il servizio HTTP non sia vivo e restituisca 200 OK mentre i client inviano. Il server non può "restare indietro" di più del timeout HTTP senza causare errori o riprodurre richieste di un'ora fa.

I messaggi di solito scompaiono da un broker di messaggi una volta consumati. Un consumatore di Kafka può "riavvolgere" e "cercare" nel passato, in base a periodi di conservazione. Nuove applicazioni di streaming possono apparire e consumare messaggi da settimane fa, nello stesso modo in cui consumano messaggi da pochi secondi.

Il server di rete TCP deve essere attivo e ACKing per ricevere dati, in modo simile al servizio HTTP.

    
risposta data 07.06.2017 - 08:07
fonte
0

Ho sentito per la prima volta il termine streaming alla fine degli anni '90 quando ero in una squadra che stava contribuendo a sviluppare un'applicazione di consegna "Streaming Video". Anziché trasferire l'intero file video da un server a un client locale su cui era installato un lettore, il contenuto video proveniva dal server in un flusso. Il lato client aveva la possibilità di consumare qualsiasi sottoinsieme del video totale e riprodurlo. Finché il flusso può trasportare dati abbastanza velocemente da avere una certa quantità di buffer risiede sul client, il contenuto può essere riprodotto in modo affidabile senza salti o lacune nel video / audio presentato all'utente. Questa è stata la mia prima esposizione allo streaming che ora è la norma su praticamente tutti i contenuti multimediali.

    
risposta data 06.06.2017 - 17:13
fonte
-3

Un'applicazione di streaming è dove l'applicazione viene trasmessa in streaming all'utente, invece di essere installata in anticipo su un computer. Lo streaming di applicazioni è un metodo di distribuzione di applicazioni virtualizzate. Lo streaming dovrebbe essere trasparente per l'utente. Il client ottiene informazioni sufficienti dal server per attivare l'applicazione, che è generalmente inferiore al 10 percento dell'applicazione. Quindi il resto viene trasmesso in streaming al client in background, anche quando l'utente finale sta eseguendo altre attività. Lo streaming di applicazioni utilizza il protocollo RTSP (Real Time Streaming Protocol). È comunemente usato insieme alla virtualizzazione desktop.

Ci sono molte informazioni su Internet Ad esempio Wikipedia - link

    
risposta data 06.06.2017 - 16:18
fonte