Domanda

Solo una breve domanda riguardante un'applicazione Azure.Se ho diversi ruoli Web e di lavoro che devono comunicare, la documentazione indica di utilizzare il servizio Accodamento di Azure.

Tuttavia, ho appena letto che il nuovo bus di servizio .NET ora offre anche le code.Sembrano più potenti in quanto sembrano offrire un'API molto più dettagliata.Sebbene .NSB sembri più interessante, presenta un paio di problemi che mi rendono diffidente nell'usarlo in applicazioni distribuite.(ad esempio, Scadenza coda...se non posso garantire che una coda venga rinnovata in tempo potrei perdere tutto!).

Qualcuno ha avuto esperienza nell'utilizzo di una di queste due tecnologie e potrebbe dare qualche consiglio su quando sceglierne una rispetto all'altra.

Ho il sospetto che, sebbene il bus di servizio sembri più potente, poiché il mio caso d'uso è in realtà semplicemente consentire ai ruoli Web/di lavoro di comunicare tra loro, il servizio Accodamento di Azure è ciò che cerco.Ma sto solo cercando una conferma di ciò prima di mettermi all'angolo :-)

Grazie in anticipo.

AGGIORNAMENTO

Mi sono documentato sui due sistemi durante la pausa.Sembra sicuramente che il bus di servizio .NET sia progettato più specificamente per l'integrazione dei sistemi piuttosto che per fornire un sistema di messaggistica affidabile per scopi generali.Le code di Azure sono distribuite e così affidabili e scalabili in modo tale che le code .NSB non sono e quindi più adatte per il codice ospitato all'interno di Azure stesso.

Grazie per le risposte

È stato utile?

Soluzione

mi sento di raccomandare che si bastone con Azure code per la comunicazione tra i ruoli web e dei lavoratori. Utilizzando le code è il modo ufficiale e sanzionato di comunicare tra i processi Azure e io sinceramente dubito che vi programmare se stessi in un angolo. Service Bus (AppFabric) ha una testa più alto e, anche se veramente buono per parlare con applicazioni esterne, potrebbe non essere ottimale per i messaggi veloci e semplici all'interno della vostra applicazione Azure.

Altri suggerimenti

Code di archiviazione e bus di servizio

Ecco una ripartizione di alcune delle diverse considerazioni che ho avuto nel riflettere su questa domanda.

Disponibilità

Dall'interruzione dello spazio di archiviazione dello scorso novembre, Azure ha promesso che non avrebbe mai più distribuito il codice in tutte le regioni contemporaneamente: lo ha integrato nel sistema per renderlo impossibile. https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/

Ecco cosa dice MSDN sulla disponibilità:

Se stai già utilizzando BLOB o tabelle di Archiviazione di Azure e inizi a utilizzare le code, ti viene garantita una disponibilità del 99,9%.Se usi BLOB o tabelle con code del bus di servizio, la disponibilità sarà inferiore.

Le code di Azure sono progettate per supportare il disaccoppiamento dei componenti dell'applicazione per aumentare la scalabilità e la tolleranza agli errori.

Sviluppo

Personalmente, mi trovo a mio agio con le API di archiviazione e ho già bisogno dell'archiviazione BLOB in altre aree della maggior parte delle app.Le code di archiviazione utilizzano lo stesso SDK dei BLOB di archiviazione.Le code di Azure forniscono un modello di programmazione uniforme e coerente tra code, tabelle e BLOB

Costo

La modalità di ricezione ed eliminazione supportata dal bus di servizio offre la possibilità di ridurre il conteggio delle operazioni di messaggistica (e i costi associati) in cambio di una minore garanzia di recapito.

Sembra che ci siano alcuni strumenti per il controllo dei costi per il bus di servizio che potresti sfruttare se dovessi iniziare a mantenere un budget per eseguire la tua app: ho tentato di abbattere i potenziali costi della coda di archiviazione di seguito :).Per GRS si ottengono meno di cento dollari al mese con più di 40.000 code all'ora.Raggruppati con il resto dei nostri costi di archiviazione, non vedo alcun vantaggio nel concentrarsi sulla riduzione dei costi qui.(La larghezza di banda è la stessa per entrambi e si annulla durante il confronto)

Prezzi dello spazio di archiviazione

Ottieni code e operazioni gratuite illimitate: paghi per lo spazio

  • presupporre una dimensione media dei messaggi di 30 KB
  • supponiamo che 1000K in un MB non siano 1024
  • presumi che non raggiungerai il prezzo graduale superiore a 1 TB

30.000 / 1 messaggio * 1 TB / 1.000000000.000 * $ 0,095 / 1 GB * 1.000 GB / 1 TB = $ 0,00000285 / messaggio per il primo TB di utilizzo

1 messaggio / ~30.000 * 1.000.000.000 / 1 TB = 33333333 messaggi in un TB

33333333 messaggi * $ 0,00000285 / messaggio = ~ $ 95 dollari per il primo TB

nell'arco di un mese possiamo inviare circa 40.000 messaggi all'ora con quel primo TB

Prezzi del servizio autobus

  • Prezzo base 10 dollari al mese
  • pagamento per operazione (qualsiasi chiamata API è un'operazione): aggiungi una coda/ricevi una coda/monitora la coda/ecc.
  • ottieni 12,5 milioni di operazioni gratuite al mese
  • pagare per milione di operazioni successive

Difficile stimare l'utilizzo qui, ma 100 milioni di operazioni costano 80 dollari al mese

Ricezione batch

L'archiviazione può raggruppare fino a un massimo di 32 messaggi specificando il conteggio dei messaggi durante il recupero dei messaggi mentre il bus di servizio consente a un client della coda di raggruppare più messaggi in un'unica operazione di invio.

Pertanto l'archiviazione è la ricezione batch mentre il bus di servizio è l'invio batch.

Monitoraggio

Le code di Azure consentono di ottenere un log dettagliato di tutte le transazioni eseguite sulla coda, oltre a parametri aggregati.Questo tipo di supporto non è predefinito con il bus di servizio, ma probabilmente potrebbe trovare una soluzione predefinita da qualche parte.

Inoltro

Il bus di servizio dispone di una funzionalità di inoltro automatico mancante nelle code di archiviazione.

l'inoltro automatico consente a migliaia di code di inoltrare automaticamente i propri messaggi a un'unica coda, dalla quale l'applicazione ricevente consuma il messaggio.È possibile utilizzare questo meccanismo per garantire la sicurezza, controllare il flusso e isolare l'archiviazione tra ciascun editore del messaggio.

Duplicati

La funzionalità di rilevamento della duplicazione supportata dalle code del bus di servizio rimuove automaticamente i messaggi duplicati inviati a una coda o a un argomento, in base al valore della proprietà MessageID.

I messaggi della coda di archiviazione possono duplicarsi senza preavviso.

Metadati

Il bus di servizio fornisce 2 parti di un messaggio, intestazione+corpo.Questa è una funzionalità molto utile per un'infrastruttura distribuita a livello globale.Ti consente di decorare i tuoi messaggi con elementi come il nome della regione e l'ID dell'istanza.I messaggi in coda sono stringhe semplici.D'altro canto, le code di archiviazione di Azure forniscono supporto per attributi arbitrari che possono essere applicati alla descrizione della coda, sotto forma di coppie nome/valore.Quindi puoi decorare il messaggio nel bus di servizio e decorare la coda con le code di archiviazione

Garanzia di consegna

Il servizio Bus offre la consegna At-Least-Once e At-Least-Once mentre le code offrono solo la consegna At-Least-Once.Ciò potrebbe limitare la nostra capacità di utilizzare le code nel caso in cui gli abbonati simultanei costituissero un problema.

Prestazione

Le code di archiviazione di Azure offrono una latenza di 10 ms (all'interno di un data center) mentre la latenza del bus di servizio è di 20-25 ms.Il bus di servizio offre un polling lungo che sarebbe anche migliore di 10 ms se ne avessi bisogno.

Sicurezza

Le code di archiviazione utilizzano la chiave condivisa primaria/secondaria mentre il bus di servizio fornisce RBAC tramite Active Directory con ruoli mittente/destinatario/amministratore.

Riferimenti

A quanto mi risulta, il Service Bus (come è stato) ha avuto code per un po ', ma questi non sono garantiti per recapitare il messaggio - possibilità bon

Azure Code cuciture a partita, perché il vostro caso d'uso rimane di base con una semplice interfaccia Mettere Get basato su REST / / Peek.

I havs documentazione stati aggiornati di recente (2015/05/21) e dettagli con precisione quando si utilizza l'uno o l'altro, e le caratteristiche comuni (supporto delle transazioni, le dimensioni della coda e il messaggio, Time to Live, ... ):

https://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/

I modelli relativi alla coda appresi da uno sviluppatore possono essere applicati a entrambi.Entrambi possono essere utilizzati dal punto di vista dell'affidabilità e della facilità di implementazione.

Cose solo la coda di archiviazione può fare 1) il lavoratore che elabora un messaggio si arresta in modo anomalo.Un lavoratore successivo lo desidera leggere lo stato del messaggio per continuare da dove si era interrotto il lavoratore precedente.2) Sono necessari i registri lato server di tutte le transazioni eseguite sulle code.

Ma i confronti non contano.Se sviluppo di code personalizzate è ciò di cui abbiamo bisogno, quindi utilizza sempre la coda di archiviazione.È stato il primo ad essere sviluppato da Microsoft.Il bus di servizio è stato introdotto copiando BizTalk e lo scopo è l'integrazione (ibrido), quindi ci sono funzionalità avanzate in questa linea:sessioni, transazioni, lettere non consegnate automatiche, ecc.

Questo link fornisce un confronto, lo fa anche questo link.Sarà difficile analizzare tutto e iniziare con uno sviluppo agile da qui la regola sopra menzionata.

Per rendere le cose molto chiaro, questo è un confronto tra due componenti Azure, creato in un punto diverso nel tempo, per motivi diversi.

noreferrer code di archiviazione e le code di Service Bus - confronto e contrasto

  

Azure supporta due tipi di meccanismi di coda: code di stoccaggio e Service Bus   code.

     

code di stoccaggio, che sono parte dell'infrastruttura di storage Azure,   caratterizzato da una semplice interfaccia GET / PUT / PEEK REST-based, fornendo   affidabile, messaggistica persistente all'interno e tra i servizi.

     

code Service Bus sono parte di una più ampia messaggistica Azure   infrastruttura che supporta l'accodamento e publish / subscribe, e   più modelli avanzati di integrazione. Per ulteriori informazioni sul servizio   code di bus / argomenti / abbonamenti, vedere la panoramica di Service Bus.

     

Mentre entrambe le tecnologie di accodamento esistono simultaneamente, code di archiviazione   sono stati introdotti, come un meccanismo di archiviazione coda dedicato costruita   superiore dei servizi Azure. code Service Bus sono costruiti in cima   l'infrastruttura di messaggistica più ampio progettato per integrarsi   applicazioni o componenti applicativi che possono comprendere più   protocolli di comunicazione, contratti dati, domini di fiducia, e / o di rete   ambienti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top