Comment la glace Zeroc se compare-t-elle à 0 mq? Je sais que 0 mq / carrefour et DDS sont très similaires, mais je ne peux pas sembler comprendre où se trouve la glace. P>
J'ai besoin d'implémenter rapidement un système qui décharge des données de marché en temps réel de C ++ à C #, en tant que première phase de mon projet. La phase suivante consistera à mettre en œuvre une architecture basée sur l'événement avec un pub / sous-conception sous-jacente. p>
Je suis prêt à utiliser TCP .. Mais le système est en cours d'exécution sur un seul serveur 24 Core .. Une option IPC serait donc agréable. D'après ce que je comprends que la glace n'est que TCP, tandis que DDS et 0Mq ont une option IPC. p>
Actuellement, je me penche vers l'utilisation de protobuguf avec de la glace ou du carrefour Io. A été désactivé du site Web OpenSplice DDS. J'ai fait des recherches sur les différentes options, envisageait à l'origine OpenMPI + Boost: MPI, mais il ne semble pas y avoir MPI pour .NET. p>
Ma question est la suivante: p>
Comment la glace se compare-t-elle à 0 mq? Je ne peux pas envelopper ma tête autour de ça. Était incapable de trouver quoi que ce soit en ligne qui compare les deux. p>
Merci d'avance. p>
........ En savoir plus sur mon projet: P>
Utilisez actuellement Cumake C ++ sous Windows, mais le plan consiste à passer à Centos à un moment donné. Une fonctionnalité souhaitée supplémentaire consiste à stocker les données TIC et tous les messages dans une base de données "NOSQL" telle que HBASE / Hadoop ou HDF5. Est-ce que l'une de ces bibliothèques de middleware / Messagerie / Pub-Sub-Sub a une intégration de base de données? p>
4 Réponses :
jaybny, p>
zmq: Si vous voulez de bonnes performances réelles et que le seul travail pour la phase 1 de votre travail consiste à déplacer des données de C ++ sur C #, la ZMQ est la meilleure option. Avoir un pub / sous-modèle pour l'architecture axée sur les événements est également quelque chose que ZMQ peut vous aider, avec son modèle de messagerie intégré. ZMQ prend également en charge vos exigences de votre IPC dans ce cas. Par exemple: vous pouvez avoir une instance de votre application qui consomme 24 cœurs par multithreading et communiquant via IPC. P>
ZEROC ICE: La glace est un cadre RPC beaucoup comme le Corba. p>
par exemple. Socket / ZMQ - Vous envoyez un message sur le fil. Lisez-la à l'autre bout, analyser le message, faites une certaine action, etc. Zeroc Ice - Créez un contrat entre client et serveur. Le contrat n'est rien d'autre qu'un modèle d'une classe. Maintenant, le client appelle une méthode de procuration de cette classe, et le serveur implémente / les actions et renvoie la valeur. Ainsi, INT Résultat = mathclass.add (10,20) est ce que le client appelle. La méthode, les paramètres, etc. est désignée et envoyée sur le serveur, le serveur implémente la méthode d'ajout, renvoie le résultat et le client obtient 30 comme le résultat. Ainsi, le côté du client, l'API n'est qu'une proxy pour un serviteur exécutant sur un hôte distant. P>
Conclusion: Zeroc Ice a de belles entreprises d'entreprise qui sont vraiment bonnes. Toutefois, pour vos exigences de projet, ZMQ est le bon outil. P>
J'espère que cela aide. P>
En termes de performances brutes, la glace Zeroc est très rapide. Pour la plupart des cas, cela devrait suffire. Si toutefois, vos besoins sont des subtilsecondes, une faible latence, etc. puis ZMQ est un meilleur choix.
Je ne dirais pas que Zeroc Ice est "beaucoup comme corba", voir zeroc.com/icevscorba.html < / a>
Pour moi .. la bonne réponse était la croisée des carrefours d'E / S. Cela fait tout ce que j'ai besoin .. mais toujours incapable de pub / sous lors de l'utilisation de protobufs ... Je suis sûr que Zeroc Ice est idéal pour la CPI distribué, mais 0 mq / carrefour, vous donne la flexibilité supplémentaire pour utiliser la communication inter-thread. p>
REMARQUE: Sous Windows, 0MQ n'a pas d'IPC. p>
Donc, dans l'ensemble, la fourchette de 0 mq est la meilleure. Mais vous devrez rouler votre propre Windows / IPC (ou utiliser TCP :: 127 ..) et les fonctions de filtrage de la topique d'éditeur pour le pub / sous. p>
Merci d'avoir partagé! Vous dites que le carrefour (vs zmq) est la meilleure fourche, avez-vous vu des différences spécifiques (stabilité / fonctionnalités, etc.) ou que cette conclusion est plus basée sur la communauté / support disponible? Je suis actuellement à la recherche d'une solution similaire moi-même.
Cela ressemble à des carrefours d'E / S a cessé le développement en juillet, sur la base d'un commentaire que le Créateur l'a abandonnée pour un nouveau projet et la cessation de commettre le référentiel principal.
Crossroads I / O est propre et sans bug. Il fournit la fonctionnalité de base de la messagerie avec toutes les peluches. Je l'utilise dans la production et je prévois de contribuer à l'avenir. Pensez aux carrefours comme un 0 mq minimaliste.
Nanomsg est le nouveau carrefour
Certaines réflexions sur Zeroc: Très vite; Capable d'avoir plusieurs points de fin; Capable de charger l'équilibre sur les points d'extrémité; Capable de se reconnecter à un point d'extrémité différent au cas où l'un des nœud tombe en panne. Ceci est transparent à l'utilisateur final; A une bonne chaîne d'outils (IceGrid, Icestorm, Icebox, etc.); Distribué, haute disponibilité, basculement multiple, etc. p>
En dehors de cela, je l'ai utilisé pour des modules de code d'échange à chaud (quelque chose de similaire à Erlang) en présentant le client crée le proxy avec plusieurs points d'extrémité, puis sur chaque point de terminaison pour une mise à niveau rapide une par une. Avec la nouvelle tentative transparente à un point d'extrémité différent, je pourrais avoir le système jusqu'à ce que j'ai fait une mise à niveau. Pas sûr s'il s'agit d'une fonctionnalité annoncée ou d'un effet secondaire non annoncé :) p>
Globalement, il est très facile de réduire vos serveurs si besoin d'utiliser de la glace Zeroc. P>
Je sais que Zeromq fournit un ensemble fantastique d'outils et de modèles de messagerie et je continuerais à l'utiliser pour mes projets pour animaux de compagnie. Cependant, le problème que je vois est qu'il est très facile d'aller à la mer et de perdre une trace de tous vos composants distribués. Ceci est un must dans un environnement distribué. Comment saurez-vous où sont vos clients / serveur lorsque vous devez mettre à niveau? Si l'un des composants dans la chaîne ne reçoit pas de message, comment identifier l'endroit où se trouve le problème? l'éditeur? le client? ou l'un des ponts (REP / REQ, XREP / XREQ, etc.) entre? P>
Globalement, Zeroc fournit un bien meilleur outil et écosystème pour les solutions d'entreprise. P>
et il est open source :) p>
nanomsg, du gars qui a écrit le carrefour et 0 mq (je pense). p>
Alors que la persistance dans une bibliothèque MQ n'est pas inouïe, l'intégration de la base de données dans votre couche de messagerie sonne maladroitement. Ne vous inquiétez pas à ce sujet, embrassez la distribution à la place. S'abonner à votre éditeur de données de votre tick et stockez l'entrée sur un DB crée une application agréable et autonome.
On pourrait penser que ceci: tous les messages d'une session doivent être résolfs en cas de blocage de l'application en aval et de redémarrage. Donc, il peut donc être pensé à une longue "transaction de message", que si elle n'est pas complètement complétée .. Nécessité de se résoudre .. Il existe donc un moyen logique de dire que la couche de messages doit ressentir tous les messages "manqués" lorsqu'une application démarre. Mais je suis d'accord avec toi.