TCP de multidiffusion et le multithreading
J'ai besoin de trouver des clients qui peuvent multidiffusion à d'autres clients de manière fiable. Ce qui implique que je vais utiliser TCP pour se connecter de manière fiable entre les clients au sein d'un groupe de multidiffusion. N'est-ce pas jusqu'à n^2 nombre de connexions? Cela semble un peu ridicule à moi. Ne pas/ne devrait pas il y avoir un moyen plus facile de multidiffusion avec fiabilité?
EDIT: UNIX/C
EDIT: je n'ai pas de clarifier la façon dont le multithreading entre en jeu. mais si j'étais à ouvrir n^2 connexions, j'ai pensé, je serais le multithreading et c'est même plus de complication que je veux.
Avez-vous besoin de multidiffusion? Vous pouvez essayer de la structuration de vos clients en star/anneau/type de grille modèles de trop...
yep, besoin de multidiffusion. je n'ai pas le pouvoir de changer les choses, malheureusement.
qu'est-ce que cela a à voir avec le multithreading?
yep, besoin de multidiffusion. je n'ai pas le pouvoir de changer les choses, malheureusement.
qu'est-ce que cela a à voir avec le multithreading?
OriginalL'auteur Fantastic Fourier | 2010-03-16
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs fiable de solutions de multidiffusion.
J'ai essayé les deux premiers.
Norme est simple, fonctionne comme norme udp multicast, mais intègre nacks... excelent si vous n'avez pas besoin de plus. Il y a quelques implémentations également le support de la bande passante de l'adaptation et d'autres améliorations.
DDS est un pas en avant. C'est vraiment génial (je sais que la mise en œuvre RAI et il fonctionne très bien) et a beaucoup de fonctionnalités ainsi qu'une très bonne conception. Il est basé sur la fiabilité et la faute tolerancy et il y a un ouvrir de mise en œuvre.
Par la façon dont, au moins DDS et la NORME ne nécessitent pas de n^2 connexions. Ils fonctionnent comme des multidiffusion udp.
OriginalL'auteur Jorge Córdoba
En fonction de votre plate-forme cible....
Vous pouvez prendre un coup d'oeil à Pragmatique De Multidiffusion Général. C'est, comme je le comprends, ce que Microsoft MSMQ et Tibco rendez-vous de l'utiliser et il peut être consulté via Winsock (voir: http://msdn.microsoft.com/en-us/library/ms740125(SV.85).aspx).
OriginalL'auteur Len Holgate
Vous avez besoin de prendre un coup d'oeil à 0MQ qui est une haute vitesse Système de Messagerie qui a comme l'un de ses capacités fiable de multidiffusion à l'aide de la (PRAGMATIC General Multicast) à l'aide de OpenPGM.
Il y avait un article sur elle récemment dans lwn.net:
0MQ: UNE nouvelle approche à la messagerie
OriginalL'auteur Robert S. Barnes
de multidiffusion et TCP sont mutuellement exclusifs.
La mise en œuvre de la fiabilité de la livraison sur UDP est la noix. Personne ne fait cela depuis les années 1980 et il est impossible de faire ce que bon que n'importe quel bas prix pile TCP, en termes de performances et de BW frais généraux. Correction: parfois, il est fait manuellement, mais seulement sur les exotiques transports, comme extrêmement longue et étroite tuyaux.
N^2 connexions n'est pas très malin. Une connexion avec 1Hz keepalive ne coûte pas beaucoup. Quels sont les coûts est le trafic. C'est ce que votre conception doit se concentrer sur la.
Je suis en désaccord. À partir d'une vaste expérience dans l'examen de nombreuses applications financières (conseil TASE, autres) toute l'équipe qui est allé pour UDP était désolé pour elle. Ils permettront de pertinence des excuses comme "la charge du système et de l'application cible"
Ce qui vous fait dire pas de corps met en œuvre multicast fiable? Vous avez tort --> en.wikipedia.org/wiki/Reliable_multicast
Radzivilovsky je ne dirais pas que la mise en œuvre fiable UDP est "noix" - si j'étais d'accord c'est pas du tout simple. Nous utilisons fiable UDP un peu dans le réseau multi-joueur jeux de code mais j'avoue que je n'aurais pas envie de la mise en œuvre moi-même 🙂
il n'y a plus de noix de difficulté. Je ne discute pas sur la possibilité de faire fiable UDP. Pourtant, j'ai vu manqué de suite, donc la plupart des caractéristiques importantes de moderne piles TCP, je ne peux même pas commencer à énumérer. Je voudrais rebut l'ensemble de ces implémentations. Ils ne sont plus qu'un étudiant de deuxième année du NIH.
OriginalL'auteur Pavel Radzivilovsky
Sûr il y a un moyen plus efficace - vous de rester à l'aide de l'UDB, et réimplémenter fiable envoyer vous-même. Pas trivial. Mais au moins, vous avez seulement besoin de garder les paquets émis une FOIS sur le site envoi.
Assez ignorant de réponse. TCP est point à point, il parle de la diffusion. De réimplanter le cadre de la TCP est la seule solution si vous ne voulez PAS le trafic à être distribué X fois (x étant le nombre d'auditeurs). La réalité ne se plie pas à Andrew B de drôles d'idées.
OriginalL'auteur TomTom
PGM est une option, comme mentionné ci-dessus. Le problème que nous avons eu avec elle, c'est que si un client ne peut pas suivre la lecture des données entrantes, il est déconnecté.
Depuis nous n'avons jamais pu fiable garantie "assez rapide" clients, nous avons mis en place notre propre fiabilité du protocole sur le dessus de UDP multicast. La mise en œuvre n'est pas entièrement générique quand il s'agit de dynamique se connecte/déconnecte, mais il pourrait fonctionner pour vous. Vous pouvez trouver à la mise en œuvre ici:
http://www.equalizergraphics.com/cgi-bin/viewvc.cgi/trunk/src/lib/net/rspConnection.h?view=markup
http://www.equalizergraphics.com/cgi-bin/viewvc.cgi/trunk/src/lib/net/rspConnection.cpp?view=markup
OriginalL'auteur eile
Juste une pensée, mais est-ce que votre travail doit être fait avec un protocole de réseau. Vous pouvez également regarder à la mise en œuvre de ce avec un message de service, avec une publication-abonnement de base du modèle.
Si vous avez besoin de mise en réseau, alors vous allez avoir à traiter avec soit un grand nombre de connexions, ou de s'assurer de la livraison vous-même. Faites très attention à vos exigences avant de descendre la route.
OriginalL'auteur Andrew B