Come scalare un'applicazione server C #

1

Sto scrivendo per la prima volta un'applicazione server / client TCP piuttosto semplice. È un progetto personale per l'istruzione, ma mi piace molto che le mie applicazioni siano estensibili e scalabili nel caso in cui il codice sia abbastanza buono da essere utilizzato altrove.

Sto usando il server / client TCP asincrono di Microsofts come mio punto di partenza link

Il mio obiettivo finale è essere in grado di avere un qualche tipo di applicazione ServerManager a cui il client si connette per la prima volta, e viene poi reindirizzato sulla base della capacità di quel server.

La mia domanda è: i client vengono reindirizzati su un altro server fisico, oppure il ServerManager genera un'altra istanza di TCPServer sulla stessa macchina e li collega lì (non è nemmeno sicuro di come funzionerebbe)?

    
posta BarryBones41 06.08.2015 - 22:58
fonte

1 risposta

1

Beh, dipende da quali risorse hai già. Ad esempio, se l'applicazione utilizza tutti i core del computer, semplicemente girando su un'altra istanza dell'applicazione non significa necessariamente che le richieste vengano gestite più velocemente perché le due applicazioni condivideranno le risorse sul server.

La cosa importante da ricordare qui è che in genere non ha senso girare su un'altra istanza dell'applicazione che finirebbe per usare le stesse risorse della prima istanza (per esempio se provano ad accedere allo stesso hard guidare allo stesso tempo, il sistema operativo deve continuare a passare l'accesso al disco rigido tra le due applicazioni).

La maggior parte degli ambienti multi-server utilizza load balancer per distribuire automaticamente le richieste tra macchine fisiche (vedere il collegamento nella risposta di JeffO o link ) quindi una delle cose da tenere a mente quando si programma la scalabilità, è che un client potrebbe non avere sempre ogni richiesta gestita dallo stesso server.

    
risposta data 16.01.2016 - 17:24
fonte

Leggi altre domande sui tag