Comment chargez-vous le trafic TCP d'équilibrage?
Je suis en train de déterminer comment l'équilibre de la charge de trafic TCP. Je comprends comment HTTP équilibrage de la charge fonctionne parce que c'est une simple Requête /Réponse de l'architecture. Cependant, je ne suis pas sûr de la façon dont vous l'équilibre de la charge de trafic TCP lors de vos serveurs sont à essayer d'écrire des données à d'autres clients. J'ai joint une image du flux de travail pour un simple TCP serveur de chat où nous voulons équilibrer le trafic à travers les N serveurs d'applications. Existe-il des équilibreurs de charge là-bas qui peut faire ce que je suis en train de faire, ou dois-je besoin de faire des recherches sur un sujet différent? Merci.
source d'informationauteur Brian DiCasa
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, votre schéma suppose que l'équilibrage de charge est d'agir comme un (TCP) proxyce qui n'est pas toujours le cas. Souvent Routage Direct (ou Direct au Serveur de Retour) est utilisé, ou NAT de Destination est effectuée. Dans les deux cas, la connexion entre le serveur principal et le client est direct. Dans ce cas, c'est essentiellement la connexion TCP qui est distribué entre les serveurs back-end. Voir la suite pour plus d'info:
Évidemment TCP proxy n'existe pas (HAProxy être un), auquel cas le mandataire gère les deux côtés de la connecton, de sorte que votre application doit être en mesure d'identifier le client en entrant l'IP/Port (ce qui allait se passer à partir de la procuration plutôt que de le client). Le proxy va gérer faire passer les messages au client.
De toute façon, on en revient à la conception de l'application que j'imagine que le problème est d'avoir une session commune du magasin (une base de données d'un certain type, ou de la clé=>valeur magasin comme le Redis), de sorte que lorsque votre application serveur dit "j'ai besoin d'envoyer un message à Frank" il peut déterminer quels serveur d'arrière-plan Frank est connecté à (DB), et le signal de ce serveur pour envoyer le message. Vous réduire le problème de connexions (à partir du même client) se déplaçant autour de différents serveurs backend en ayant des connexions persistantes (tous les équilibreurs de charge peut le faire), ou en utilisant quelque chose d'intrinsèquement persistant comme un websocket.
C'est probablement une vision des plus simplistes que je n'ai aucune expérience avec le logiciel de chat. Évidemment DB serveurs eux-mêmes peuvent être répartis entre plusieurs machines, pour la tolérance de panne et d'équilibrage de charge.