Message queue vs Socket bei grossen Datenmengen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
moritzz
Beiträge: 185
Registriert: 12.09.2009 14:56:58
Wohnort: Münster
Kontaktdaten:

Message queue vs Socket bei grossen Datenmengen

Beitrag von moritzz » 22.06.2010 01:16:06

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!!!
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Message queue vs Socket bei grossen Datenmengen

Beitrag von cosmac » 22.06.2010 12:16:59

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).
Beware of programmers who carry screwdrivers.

moritzz
Beiträge: 185
Registriert: 12.09.2009 14:56:58
Wohnort: Münster
Kontaktdaten:

Re: Message queue vs Socket bei grossen Datenmengen

Beitrag von moritzz » 22.06.2010 15:56:45

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.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Message queue vs Socket bei grossen Datenmengen

Beitrag von suno » 22.06.2010 16:31:45

rabbitmq, das ist asyncron und skaliert sehr gut

Antworten