Prozess & Kommunikation

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
MaxDau
User
Beiträge: 1
Registriert: Sonntag 23. Mai 2021, 16:55

Hallo

Ich bin absoluter Einsteiger, also bitte tierlieb sein :D

Aktuell habe ich ein Programm, welches aus einer Datei gestartet wird und mehrere Threads öffnet. Die Kommunikation untereinander ist daher noch sehr einfach, wenn auch nicht schön geregelt.
Jetzt möchte ich das Programm in Module aufteilen, welche es mir ermöglichen soll, nach Bedarf, Teile der Software auf anderen Geräten / VMs zu starten. Die Aufteilung ist notwendig, da bestimmte Module nur einmal gestartet werden können, andere aber (je nach Einstellungen und verfügbarer Leistung) mehrfach gestartet werden können.

Die Frage:
Wie ermögliche ich eine Kommunikation unter den Modulen bei
- Situation A: Alle Module laufen auf dem gleichen Gerät (Normallfall wird hier jedes Modul nur einmal gestartet)
- Situation B: Module sind teilweise auf unterschiedlichen Geräten verteilt

In vielen Fällen wird es ausreichen alle Module auf einem Gerät laufen zu lassen. Dennoch möchte ich bei der Entwicklung gleich die Fälle berücksichtigen, bei denen einen Verteilung notwendig ist.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Wenn du absoluter Einsteiger bist, dann bin ich mir sicher, dass das, was du mit Threads und derem Datenaustausch tust, wahrscheinlich falsch ist.
Threads sind kompliziert. Der Datenaustausch mit denen erst recht. Wenn du keine Queue verwendest, machst du wahrscheinlich etwas falsch.

Und all das kannst du vergessen, wenn du Programme auf verschiedenen Rechnern laufen lässt. Dann brauchst du für die Kommunikation ganz andere Mechanismen. Wahrscheinlich über das Netzwerk. Und dann solltest du auf ein bewährtes Protkoll setzen, bevor du dir etwas eigenes auszudenken versuchst.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Lokal ist das alles mit multiprocessing moeglich. Eine wirklich verteilte Anwendung ist schon fortgeschritten - denn einfach so Prozesse auf anderen Computern starten ist ja nicht moeglich. Das muss also irgendwie ermoeglicht werden, also Services geschrieben, oder gar so Dinge wie Kubernetes + Co genutzt werden. Das haengt aber auch von deiner Umgebung ab - Windows vs Linux/Mac.
Antworten