Modello server client per architettura N-Tier - Mappatura dei client clienterver richiesta / risposta client

1

Sto cercando di cercare un framework o una libreria o anche delle tecniche per gestire le comunicazioni client / server N-Tier.

Sto ridimensionando il mio software applicativo e sto vedendo questa comunicazione diventare sempre più ingombrante. Ho un server delle applicazioni, ma ho anche dei server centrali per ridimensionare la capacità di elaborazione e scambio dei dati dell'interfaccia utente dei client connessi.

Nella mia architettura ho un server, che può avere N Client Engine, che possono avere N client.

In particolare, sto riscontrando problemi relativi allo scenario seguente. Userò l'autenticazione come esempio (anche se è semplice ma raggiunge il punto).

Un client (client Web angolare) accede tramite un endpoint websocket di un server Web Jetty. Il messaggio viene inoltrato alla coda del motore Client. Il motore client, quando elabora il messaggio, crea una richiesta per il server e lo accoda. Il server, quando elabora quel messaggio, esegue l'autenticazione. Ora la risposta deve tornare indietro nello stack. Il server deve accodare un messaggio di risposta al motore client (a destra), quindi quando il modulo client elabora quel messaggio, deve inviare un messaggio alla connessione client (a destra) tramite l'endpoint websocket.

Ora questo è certamente possibile e l'ho fatto semplicemente mappando le informazioni giuste nel messaggio e persistendo in ogni messaggio finché non ritorna al client.

Tuttavia, questo mi sembra abbastanza schifoso per me. Ho pensato di non essere la prima persona ad avere questo problema. Tuttavia, non credo di aver capito come viene chiamato questo problema perché i miei termini di ricerca: Programmazione asincrona, modello di comunicazione Client Server, modello di comunicazione Client Server Server, modello di comunicazione N-Tier, ecc. Non hanno fornito ciò che sto cercando.

Esiste un nome specifico per questo problema?

Volevo fornire maggiori dettagli sul sistema N-Tier che ho.

  • Livello 1 - Server database (persistenza dati) 1 istanza
  • Livello 2 - ApplicationServer (soluzione in memoria) 1 istanza
  • Livello 3 - Server Delta (inoltro delta a N Client Engine) N istanze
  • Tier 4 - Client Engine (sincronizza i dati, gestione delle sessioni, transazioni di sola lettura) Istanze M
  • Livello 5 - Istanze Web Server (Websocket Server)
  • Livello 6 - Client (Webapp angolare)
posta Mark 23.11.2017 - 03:14
fonte

1 risposta

2

Sembra che il tuo reclamo centrale sia il routing:

The server has to queue a response message to the (right) Client Engine, then when the Client Engine processes that message, it has to send a message to the (right) client connection

Ho avuto esperienze positive con i kafka canali, in cui un'ape operaia si iscrive a un canale nominando la sua responsabilità e invia il risultato calcolato al canale successivo. Si adatta in modo flessibile man mano che i lavoratori vanno e vengono. Chiaramente se hai% frontend del client C , avrai bisogno di C di canali distinti e dovrai mantenere il nome di quel canale nella richiesta mentre salta dalla coda alla coda.

Consenti al tuo messaggio di accodare l'infrastruttura con i tuoi problemi di routing, piuttosto che preoccuparti delle tue app.

    
risposta data 23.11.2017 - 17:40
fonte

Leggi altre domande sui tag