Scrittura di un logger di chat distribuito

-1

Sto provando a scrivere un logger IRC di altissima qualità in grado di gestire messaggi come 1k al secondo. Il mio database di scelta è Cassandra e forse più tardi potrei dare un'occhiata a Scylladb.

La mia domanda è come scrivo la parte software da distribuire. Come ottimizzarlo orizzontalmente. Il modo ovvio sarebbe di avere più client connessi a IRC e ciascuno gestisce canali diversi. Ma vorrei dividere meglio il carico di lavoro?

Sono nuovo nello sviluppo di software come questo e mi chiedevo cosa avresti pensato sarebbe stato l'approccio più pulito qui. Carico solo 100 canali per istanza del mio software e quindi forse comunico tramite rabbitmq che mi sono unito a questi canali e nessun altro ha bisogno di farlo? Come potrei renderlo ridondante che forse i canali vengono sempre uniti due volte. (I messaggi hanno un ID univoco da IRC, quindi non ci saranno problemi nel DB delle doppie voci, è sufficiente inserire errori)

I problemi principali qui sono, come faccio a distribuire "canali" / carichi di lavoro tra più client, il migliore.

    
posta gempir 07.08.2018 - 08:07
fonte

1 risposta

0

Per distribuire un elenco di canali tra vari client, è sufficiente avere una tabella di database

table Channel
    varchar(50) id
    varchar(50) name
    varchar(50) clientId

Compila la tabella con i canali che desideri monitorare e inserisci il client con il cliente che vuoi monitorare su quel canale.

Se possibile, fare in modo che il programma che popola la tabella attivi le istanze del client come richiesto, iniettando o leggendo il suo ID all'avvio

Ogni client controllerà la tabella per i canali che dovrebbe monitorare e avviare una connessione.

Un programma monitor monitorerà i client e riassegnerà i loro canali in caso di arresto anomalo.

    
risposta data 07.08.2018 - 11:00
fonte

Leggi altre domande sui tag