Hey,
ich stehe hier grade vor einem Problem und bin nicht sicher, wie ich es am besten loesen kann. Ich habe einen Haufen Daten (~1TB, wobei ein Set jeweils aus int,double,double besteht) die aus einem Javaprozess kommen und so schnell wie moeglich verarbeitet werden muessen. Die Verarbeitung wird in einem optimierten C++ Programm passieren, welches als eine Art lokaler Server auf dem selben System laeuft. Ich muss also irgendwie die Daten geschickt, schnell und moeglichst unkompliziert in das C++ Programm kriegen. Bisher sehe ich 2 Alternativen, habe allerdings mit beiden so meine Bedenken oder Probleme:
1. Message Queue: Sollte im Prinzip sehr schnell sein, aber wie kriege ich die Daten von dem Java Programm in die Message Queue die vorher vom C++ Code erzeugt wurde? Mit msg_notify koennte der Spass dann auch asynchron laufen, so dass ich nicht in einem while(true) haenge und unnoetig mehr Last auf der CPU habe.
2. Sockets: Relativ simpel zu implementieren aber dafuer muss ich durch den Netzwerkstack. Das finde ich irgendwie unschoen und ich habe Bedenken, dass genau das der Flaschenhals wird.
Hat da jemand eine Idee? Vielleicht eine 3. Loesung die mir bisher nicht eingefallen ist?
Bin fuer jeden Beitrag dankbar!!!
Message queue vs Socket bei grossen Datenmengen
Message queue vs Socket bei grossen Datenmengen
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
Re: Message queue vs Socket bei grossen Datenmengen
hi,
Am schnellsten sollte es mit shared memory gehen, weil die Daten so nicht umgeschaufelt werden müssen. Zur Synchronisation der beiden Programme reicht dann evt. signal(2) und sleep(3).
Am schnellsten sollte es mit shared memory gehen, weil die Daten so nicht umgeschaufelt werden müssen. Zur Synchronisation der beiden Programme reicht dann evt. signal(2) und sleep(3).
Beware of programmers who carry screwdrivers.
Re: Message queue vs Socket bei grossen Datenmengen
Hey,
danke erstmal fuer die Antwort. Also das Problem was ich bei Shared Memory sehe ist, dass ich mich dann auch um die Verwaltung, Groesse usw kuemmern muss. Das wuerde mir bei Message Queues oder Sockets ja erspart bleiben.
Ausserdem habe ich vergessen zu sagen, dass die Ergebnisse des C++ Codes anschliessend wieder zurueck in den Java-Prozess muessen.
danke erstmal fuer die Antwort. Also das Problem was ich bei Shared Memory sehe ist, dass ich mich dann auch um die Verwaltung, Groesse usw kuemmern muss. Das wuerde mir bei Message Queues oder Sockets ja erspart bleiben.
Ausserdem habe ich vergessen zu sagen, dass die Ergebnisse des C++ Codes anschliessend wieder zurueck in den Java-Prozess muessen.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
Re: Message queue vs Socket bei grossen Datenmengen
rabbitmq, das ist asyncron und skaliert sehr gut