È necessario elaborare 2 milioni di messaggi 100k al secondo e indirizzarli a un particolare evento, delegato o delegato multicast

5

Devo elaborare 2 milioni di messaggi al secondo (forse in una configurazione di ridimensionamento) e indirizzare ciascun messaggio a un delegato o delegato multicast.

Domanda

Come dovrei strutturare la mia applicazione in C # in modo che io possa raggiungere il le migliori prestazioni quando si riceve il messaggio e lo si indirizza al  delegato corretto?

Dettagli aggiuntivi

Ogni messaggio in entrata ha le seguenti proprietà nel formato di un array JSON:

  • Clienti
  • Categoria
  • TopicID
  • DateTime
  • Dati []

Ogni messaggio verrà elaborato da una funzione delagate interessata a una o più di queste proprietà.

Sono necessari semplici esempi di elaborazione dei delegati:

  • Una funzione contatore clienti può contare la quantità di messaggi per cliente,
  • Un contatore di categorie può contare la quantità di messaggi che neutralizzano
  • Un contatore cliente conterrà i messaggi univoci per quel cliente.
posta random65537 09.05.2012 - 17:45
fonte

1 risposta

5

200 GB di dati al secondo?

Per fare questo non avrai molto aiuto con C #, tutte le applicazioni di High Performance Computing sono scritte in C / C ++, quindi per cominciare, dovresti cercare di andare in questa direzione semplicemente per sfruttare la loro esperienza , librerie e framework.

Detto questo, molte attività di telecomunicazione vengono svolte utilizzando linguaggi funzionali e forniscono flussi di input di una grandezza simile a quello che ti aspetti, quindi prova anche Haskel.

In ogni caso, il primo compito è dividere il flusso di input su diversi server, quindi passarli a più server per l'elaborazione. In questi casi, non sono necessari delegati, è necessaria un'architettura di passaggio del messaggio completo che sia stateless ed efficiente in termini di memoria. Prova OpenMPI per alcuni suggerimenti.

    
risposta data 09.05.2012 - 18:33
fonte