Ho cercato di capire come si ridimensionerebbe un'applicazione che utilizza socket tcp / ip per la comunicazione con il client server. Ad esempio nel seguente schema:
+------------+
| Server |
+------------+
| |
| |
|tcp/ip|
|socket|
connections
| |
| |
+------------+ +------------+
| Client_001 | | Client_002 |
+------------+ +------------+
Due client si stanno connettendo a un server. È possibile eseguire un'azione e il risultato può essere inviato a tutti i client connessi al server. Questo è tutto bene e dandy. Tuttavia, se si dovessero introdurre alcuni server applicativi aggiuntivi dietro un sistema di bilanciamento del carico come questo:
+------------+ +------------+
| server_001 | | server_002 |
+------------+ +------------+
| |
| |
+------------+
| HAProxy |
+------------+
| |
| |
|tcp/ip|
|socket|
connections
| |
| |
+------------+ +------------+
| Client_001 | | Client_002 |
+------------+ +------------+
I client effettuano le connessioni al servizio di bilanciamento del carico, quindi il servizio di bilanciamento del carico delegherà le connessioni a uno dei due server.
Supponiamo che client_001 esegua il programma e che il bilanciamento del carico li colleghi a server_001, quindi client_002 esegue il programma e il servizio di bilanciamento del carico li collega a server_002.
server_001 esegue un'azione per conto di client_001 e invia in risposta un flusso di byte a tutti i client connessi. Tuttavia, poiché client_002 è connesso a server_002, non riceve questo flusso di byte.
Che mi porta alla mia domanda: come puoi inviare una risposta a tutti i client connessi indipendentemente dal server al quale erano connessi tramite il servizio di bilanciamento del carico?