Condividi tramite


Provider di flussi di Orleans

I flussi possono presentarsi in diversi tipi e forme. Alcuni flussi possono recapitare eventi tramite collegamenti TCP diretti, mentre altri tramite code permanenti. Diversi tipi di flusso possono usare strategie di invio in batch, algoritmi di memorizzazione nella cache o procedure di backpressure differenti. Per evitare che le applicazioni di streaming siano limitate solo a un subset di queste scelte comportamentali, i provider di flussi sono punti di estendibilità per il runtime di flusso di Orleans e consentono agli utenti di implementare qualsiasi tipo di flusso. Questo punto di estendibilità è simile ai provider di archiviazione di Orleans.

Provider di flussi di Hub eventi di Azure

Hub eventi di Azure è un servizio di inserimento dati completamente gestito e in tempo reale, in grado di ricevere ed elaborare milioni di eventi al secondo. È progettato per gestire l'inserimento di dati a bassa latenza e velocità effettiva elevata da più origini e la successiva elaborazione di tali dati da più consumer.

Hub eventi viene spesso usato come base di un'architettura di elaborazione eventi più ampia, in cui funge da "frontdoor" per una pipeline di eventi. Può essere usato per inserire dati da un'ampia gamma di origini, tra cui feed di social media, dispositivi IoT e file di log. Uno dei principali vantaggi di Hub eventi è la possibilità di aumentare le istanze per soddisfare le esigenze di carichi di lavoro di elaborazione eventi ancora più grandi. Offre inoltre disponibilità elevata e tolleranza di errore, con più repliche di dati distribuite in più aree di Azure per assicurare la disponibilità elevata.

Il pacchetto NuGet Microsoft.Orleans.Streaming.EventHubs contiene il provider di flussi di Hub eventi.

Provider di flussi di Coda di Azure

Il provider di flussi di Coda di Azure recapita gli eventi in Code di Azure. Sul lato producer, il provider di flussi di Coda di Azure accoda gli eventi direttamente in Coda di Azure. Sul lato consumer, il provider di flussi di Coda di Azure gestisce un set di agenti di pull che eseguono il pull degli eventi da un set di Code di Azure e li recapitano al codice dell'applicazione che li utilizza. È possibile considerare gli agenti di pull come un "microservizio" distribuito, ovvero un componente distribuito partizionato, a disponibilità elevata ed elastico. Gli agenti di pull vengono eseguiti all'interno degli stessi silos che ospitano i grani dell'applicazione. Non è quindi necessario eseguire ruoli di lavoro di Azure separati per eseguire il pull dalle code. L'esistenza degli agenti di pull, la loro gestione, la backpressure, il bilanciamento delle code tra di loro e la distribuzione di code da un agente in cui si verifica un errore a un altro agente sono operazioni completamente gestite dal runtime di flusso di Orleans e trasparenti per il codice dell'applicazione che utilizza i flussi.

Il pacchetto NuGet Microsoft.Orleans.Streaming.AzureStorage contiene il provider di flussi di Archiviazione code di Azure.

Adapter di code

Provider di flussi diversi che recapitano eventi in code permanenti presentano un comportamento simile e sono soggetti a un'implementazione simile. Viene fornito pertanto un unico oggetto PersistentStreamProvider generico estensibile, che consente agli sviluppatori di collegare diversi tipi di code senza scrivere un provider di flussi completamente nuovo da zero. PersistentStreamProvider usa un componente IQueueAdapter, che astrae i dettagli specifici dell'implementazione della coda e consente di accodare e rimuovere dalla coda gli eventi. Tutto il resto viene gestito dalla logica all'interno di PersistentStreamProvider. Anche il provider di Coda di Azure menzionato in precedenza viene implementato in questo modo: si tratta di un'istanza di PersistentStreamProvider che usa un oggetto AzureQueueAdapter.

Provider di flussi di messaggi semplici

Il provider di flussi di messaggi semplici, noto anche come provider SMS, recapita gli eventi tramite TCP utilizzando la normale messaggistica dei grani di Orleans. Poiché gli eventi in SMS vengono recapitati tramite collegamenti TCP non affidabili, SMS non garantisce il recapito affidabile degli eventi e non ripete automaticamente l'invio dei messaggi con errore per i flussi SMS. Per impostazione predefinita, la chiamata del producer a OnNextAsync restituisce un oggetto Task che rappresenta lo stato di elaborazione del consumer di flusso, che indica al producer se il consumer ha ricevuto ed elaborato correttamente l'evento. Se l'attività non riesce, il producer può decidere di inviare di nuovo lo stesso evento, ottenendo così l'affidabilità a livello di applicazione. Anche se il recapito dei messaggi di flusso viene fatto con il massimo impegno ma senza garanzia assoluta di successo, i flussi SMS sono affidabili. Ciò significa che l'associazione sottoscrittore-producer effettuata dal servizio di pubblicazione/sottoscrizione è completamente affidabile.

Vedi anche

Dettagli sull'implementazione dei flussi in Orleans