Devo dividere i miei messaggi con i canali o con i contenuti?

1

Sto costruendo un sistema usando redis come sistema sub-pub.

Sto pensando a modi per rappresentare più gruppi ai quali i clienti possono iscriversi. Potrei farlo con un canale per gruppo, ma ciò potrebbe portare a un vasto numero di canali sul lato redis e a più abbonamenti da ciascun canale.

In alternativa, potrei inserire un identificatore di gruppo nei miei messaggi. Ogni cliente avrebbe un abbonamento singolo per un canale per tutti i gruppi. I client ricevono tutti i messaggi e fanno il loro filtraggio.

"Privacy" non è un problema qui; è ok per i client vedere i messaggi di cui non hanno bisogno.

Quindi: ci sono considerazioni per i server o client redis che dovrebbero indurmi a favorire un approccio rispetto all'altro?

FWIW, i miei client sono client nodejs.

    
posta Dancrumb 16.07.2017 - 20:13
fonte

1 risposta

2

Penso che l'approccio al canale sia preferito rispetto a un identificatore di gruppo. I clienti devono solo abbonarsi ai messaggi che sono effettivamente importanti per loro. Anche se questo può portare a molti canali e connessioni Redis, l'alternativa creerebbe abbonamenti molto chiacchieroni in cui i messaggi vengono inviati ai sottoscrittori ma immediatamente scartati perché non hanno l'identificatore giusto del gruppo. Se si dispone di client con larghezza di banda costosa / limitata (ad esempio dispositivi mobili), ciò potrebbe avere un impatto negativo sul client per ricevere messaggi inutili.

Redis non ha limiti rigidi sul numero di canali - è limitato dal numero di connessioni che può mantenere. Ho letto che il numero di connessioni può essere ridimensionato con la replica master / slave. Se si finisce con il ridimensionamento al di là di ciò che è ragionevole con Redis, vorrei migrare a uno dei molti servizi pub / sub pagati.

    
risposta data 16.07.2017 - 22:43
fonte

Leggi altre domande sui tag