Come gestisco meglio le quote del bus di servizio in Azure?

1

Sto cercando di determinare il modo migliore per realizzare il seguente scenario utilizzando il bus di servizio di Azure. Ho milioni di dispositivi (software desktop, app per telefoni cellulari, ecc.) Che devono ricevere messaggi inviati in base agli abbonamenti. Questo di per sé è abbastanza facile. Tuttavia, il bus di servizio ha dei limiti sul numero di abbonamenti per argomento, filtri per abbonamento, ecc. (Elencati di seguito). Quindi, detto questo, mi chiedevo se qualcuno ha risolto questo problema prima o se ci sono buone pratiche o altro.

Ipotesi

  • 20.000 clienti
  • ciascuno con appliance 1- *
  • ogni appliance con un clienteId, applianceId
  • ogni appliance gestisce i dispositivi 1- *
  • ogni dispositivo con dispositivoId

Requisiti

  • scopri le appliance per customerId (filtro per clienteId)

    • Quando un cliente effettua l'accesso, è necessario "eseguire il ping" di tutte le appliance appartenenti a tale cliente.
  • comandi per appliance specifiche (filtro per applianceId)

    • Una volta che conosciamo tutte le appliance utilizzate dal cliente, possiamo eseguire comandi contro appliance specifiche.
  • comandi su un dispositivo specifico (filtro per ID dispositivo)

    • Possiamo anche fornire comandi contro un dispositivo specifico per un dispositivo specifico

Ora, nessuno se questo è molto difficile. In realtà mi sto solo imbattendo in alcune delle quote del Service Bus visto qui: link

  • 2000 filtri / argomento
  • 2000 abbonamenti / argomento
  • 10.000 argomenti totali e queus per spazio dei nomi

Quindi la mia prima inclinazione era di avere un singolo SB Namespace con un singolo un Topic e un singolo Subscription . Ogni appliance potrebbe quindi semplicemente aggiungere o utilizzare il seguente SqlFilter s:

  1. Appliance di CustomerId: ciò consentirebbe la messaggistica con tutte le appliance che appartengono a un cliente specifico.
  2. Appliance by applianceId: ciò consentirebbe la messaggistica con un'appliance specifica.
  3. Dispositivo per ID dispositivo: ciò consentirebbe la messaggistica con un dispositivo specifico per un dispositivo specifico.

Utilizzando le ipotesi di cui sopra che sarebbero 20k filtri per # 1, un filtro per appliance (supponiamo che sia un milione) per # 2 e potenzialmente milioni di filtri per # 3.

Ovviamente non funzionerebbe. Potrei anche spingermi fino al punto di ignorare il n. 3 che mi lascerebbe comunque con oltre un milione di filtri. Questa è la quota specifica con cui mi sto imbattendo.

Le due cose più importanti qui sono che posso inviare messaggi a tutte le appliance di proprietà di un cliente e la seconda è che posso inviare messaggi a un singolo dispositivo. Le apparecchiature e i dispositivi che comunicano non sono un problema.

Le code possono figurare in questa equazione ma sostituire semplicemente gli argomenti con le code in determinati scenari alleggerirà solo parte del problema.

In ogni caso, fammi sapere se qualcuno ha qualche idea!

    
posta devlife 27.09.2014 - 16:54
fonte

0 risposte

Leggi altre domande sui tag