Sto creando una soluzione di messaggistica con followingsup: tutti i messaggi vengono salvati su un DB, due o più processi di lettura leggeranno da questo DB e inviano dati ad altri processi che lo invieranno attraverso la rete.
Il mio approccio è illustrato di seguito,
I seguenti hanno 4 processi di invio con 4 fifos e 2 lettori con 2 fifos
reader0 ← legge i dati dal DB
reader1 ← legge i dati dal DB
invio di parte
network_handler0 ← network_handler_fifo0 ← reader0
network_handler1 ← network_handler_fifo1 ← reader1
network_handler2 ← network_handler_fifo2 ← reader0
network_handler3 ← network_handler_fifo3 ← reader1
ricezione parte
network_handler0 → reader_fifo0 → reader0 → scrivere su DB
network_handler1 → reader_fifo1 → reader1 → scrivere su DB
network_handler2 → reader_fifo0 → reader0 → scrivere su DB
network_handler3 → reader_fifo1 → reader1 → write to DB
Ho pochi problemi con questa configurazione, e tieni presente che il numero di processi potrebbe essere maggiore di quello basato sull'ambiente, quindi potrei renderlo 20 lettori e 10 network_handlers o potrebbe farlo come mostrato sopra.
-
La dimensione del buffer è 64K e la dimensione del messaggio è 200k, è abbastanza piccola da rendere la scrittura / lettura a / da fifo atomico?
-
Come possono rendere i processi consapevoli l'uno dell'altro, per esempio, il lettore 0 scrive su network_handler_fifo0 e network_handler_fifo2, come posso farlo iniziare a scrivere su altri fifo se quelli attuali sono pieni oi loro network_handler sono dea d
-
Ho pensato di far scrivere al lettore una scrittura più generale per iscritto, quindi ad esempio scrive su tutti i network fifos usando il meccanismo di blocco e smetto di scrivere su quello che è morto, non l'ho usato come blocco il meccanismo potrebbe rallentare.
BTW, ogni network_handler è un'associazione SCTP, quindi network_handler0 è l'associazione 0, network_handler1 è l'associazione 1 e così via.
Ogni idea è apprezzata. Voglio dire anche se devo cambiare la configurazione sopra.