Question

Est-ce une bonne idée d'utiliser des prises pour envoyer des données entre deux serveurs, ou devrais-je utiliser quelque chose comme MQ pour déplacer les données.

Mes questions: sont prises fiables, si je dois une fois la livraison seulement / assurée des données

?

Y at-il d'autres solutions?

Merci.

Était-ce utile?

La solution

Les prises sont une API de niveau d'application pour effectuer la communication réseau. La fiabilité des prises dépend du protocole de réseau que vous sélectionnez lorsque vous créez la prise. Si vous sélectionnez TCP / IP, vous obtiendrez le transfert « fiable » ... jusqu'à une limite. Si vous sélectionnez UDP / IP, vous obtiendrez le transfert « peu fiable ».

Comme indiqué dans d'autres réponses, TCP garantit que vous ne perdez pas ou corrompre les données jusqu'à un certain point:

  1. s'il y a un réseau assez longtemps arrêt, ou de l'expéditeur ou le destinataire meurt d'une connexion TCP / IP brisera et vous perdrez des données à moins que vous prendre des mesures pour relancer le lien.
  2. s'il y a un réseau     la corruption des données de niveau, il y a     faible probabilité que ce ne sera pas     détectée par les totaux de contrôle.

Pour des niveaux plus élevés de garanties de fiabilité que TCP / IP fournit, vous devez mettre en œuvre checksumming plus sensibles et les mécanismes de livraison garantie sur le dessus de votre application de la couche de réseau basée sur les sockets. Ou utiliser un message produit faire la queue qui fait dur le travail pour vous.

Donc, la réponse à votre question est que cela dépend de la façon dont vous utilisez Sockets, et à quel niveau de fiabilité de votre système nécessite.

Autres conseils

Les prises sont aussi fiables que vous faites votre mise en œuvre, et sur la base du matériel sous-jacent. Si vous ne voulez pas les tracas de faire un service de livraison garantie (dans quelles conditions? 100% ne va jamais arriver), un système de file d'attente de messages est un bon pari. La file d'attente de messages sera mis en œuvre tous la persistance, faire la queue, etc, que relances vous devez vous mettre en œuvre si vous êtes allé avec les sockets standard.

Vous devriez probablement utiliser un MQ si vous besoin d'une livraison garantie, peu importe ce qui se passe (comme si l'autre partie est hors ligne pour l'entretien) et vous ne voulez pas écrire vous-même toute la logique. Sockets est ce que vous utilisez pour vous connecter à une autre partie, peu importe si cette partie est le MQ ou le récepteur final du message.

Socket sont fiables puisque chaque communication se fait sur le dessus de celui-ci, y compris MQ.

Mais vous pouvez ajouter un peu de livraison garanteed avec MQ pour améliorer la fiabilité de votre application. Qu'Est-ce que c'est? la livraison garanteed assure que votre message est traité au moins une fois, et plus d'une fois, par le consommateur. le consommateur est éteint? le producteur est éteint? le serveur MQ est éteint? les pannes de disque? grâce à MQ, aucun message ne sera perdu, quoi qu'il arrive (à condition que votre administrateur connaît son métier). En plus de cela, si vous redémarrez le consommateur, aucun message ne sera traité deux fois. Wich peut être important si les messages contiennent des transferts millions de dollars. Mais il ne garantit pas que votre message est traité en une quantité Raisonnable de temps. et le temps de traitement est parfois plus important que la prestation de garanteed, en fonction de votre application.

Il est à vous de choisir la meilleure façon de communiquer entre vos serveurs en fonction de vos besoins. la livraison de livraison Garanteed a à la fois le coût financier et la performance, donc il doit être utilisé que si nécessaire (en millions realy dollars tranfers par exemple).

Pour la plupart des applications, vous pouvez obtenir quelque chose de satisfaisant que par vos messages lorsque réessayant échoue, alors. Mais ce n'est pas vraiment une livraison unique GARANTI. ne pas essayer de la mettre en œuvre par vous-même, il est un truc très difficile que seuls quelques-uns sont en mesure d'atteindre. Il est useles à considérer redevelopping un logiciel aussi compliqué que MQ ou Apache AQ.

L'espoir qui aide.

  • jeb

Sockets est le mécanisme pour transférer des données brutes. Tout le reste est mis en œuvre sur le dessus de cela. Dans le modèle de réseau OSI ils appartiennent à la couche 4. Bien qu'ils mettent en œuvre de bout en bout fiable connexion, ils sont rarement utilisés comme protocole final. Vous avez besoin presque toujours de mettre en œuvre une couche d'application. Ce que cela serait dépend de votre application (avez-vous besoin de transférer des fichiers ou tout simplement envoyer des messages) et votre infrastructure réseau.

Si vous utilisez un de , le protocole TCP assure que les données ne se perdent pas dans la transmission et est peu susceptible d'être corrompus (bien que vous devez décider si ses checksums 16bit sont suffisantes ou vous avez besoin d'un mécanisme de contrôle de la couche d'application).

Quels sont les systèmes MQ fournissent, et ce que vous pouvez ou ne pouvez pas besoin est fiabilité, à savoir la capacité de garantir la livraison, même face à des défaillances matérielles ou logicielles intermittentes.

En fonction du type de données d'un service Web simple peut être la solution la plus rapide. Ils sont relativement faciles à mettre en place et de test. Bien que quelques exemples précis je besoin de savoir quel type de données et de l'environnement que vous utilisez.

Il dépend largly du type d'application que vous développez. Il vous écrivez un programme où vous avez besoin d'une réponse ou ack du message envoyé alors sockets TCP sont bonnes. Mais, si vous implémentez une sorte de workflow de scénario, vous devez utiliser un message Queues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top