Easy Cluster DLL - Verteiltes Rechnen & mehr

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Easy Cluster DLL - Verteiltes Rechnen & mehr

Beitrag von cxAlex »

Easy Cluster ist eine DLL die es einfach macht verteiltes Rechnen in eure Anwendungen zu integrieren, bzw. Funktionen eurer Anwendungen übers Netzwerk zur Verfügung zu stellen. Auch für Fernwartungstools kann man diese Funktionen schnell und unkompliziert verwenden.

Das ganze ist geteilt in einen Master - Part, der Funktionen auf Slaves ausführen kann, und einen Slave - Part der Funktionen zur Verfügung stellt.

Features:
  • Beliebig viele Übergabe-Parameter
  • Als Übergabe Parameter stehen Long/Integer/Float/Double/Quad/Speicherblöcke zur Verfügung
  • Als Rückgabewerte stehen Long/Integer/Float/Double/Quad/Speicherblöcke zur Verfügung
  • MultiCore Unterstützung
  • Event oder Callback - Managemant
  • Master kann beliebig viele Slaves verwalten
  • Slave kann beliebig viele Master verwalten
  • Sender/Receiver arbeiten unabhängig (abgesichert), auch bei sehr viel Traffic perfomat
  • Sender/Receiver bei viel Traffic in Threads ausgelagert werden
  • Umfangreiches & einfach erweiterbares Client/Server - Managemant
  • Optionale automatische Kompression
ToDo:
  • x64 Unterstützung (ab PB 4.4 wegen Semaphorenproblem)
  • Events für Slave (#Master_Connect, ...) *erledigt*

Das Programm ist noch in der Entwicklung, und der Funktionsumfang wird sicher noch erweitert. Ihr dürft EasyCluster in euren Projekten verwenden solange diese Freeware/OpenSource sind. Bei kommerzieller Software/Shareware ist zuerst eine Anfrage an mich zu stellen.

Dem Download liegten ein Master/Slave Demo bei. Eine detailierte Funktionsbeschreibung zu allen Befehlen findet ihr in der Datei ECluster_inc.pbi

Download:

http://paladiumproject.q-soft.ch/public ... luster.zip

Projekt-Homepage:

http://paladiumproject.q-soft.ch/wordpress/?page_id=4

Bild
Zuletzt geändert von cxAlex am 29.05.2009 19:58, insgesamt 8-mal geändert.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

So, war heute den ganzen Tag beschäftigt, drum wirds die neue Version erst Sonntag Nachmittag geben. Bis dahin: Hat schon jemand den Code getestet? Gibt es Probleme?

Konnte den Code bisher nur in einem Netzwerk aus 3 XP Pro - Quad Rechnern testen, mich würde speziell interessieren ob unter Vista Probleme (UAC usw.) auftreten. Auch sonstige Wünsche/Anregungen/Bugmeldungen sind willkommen.

Für Interessierte:

Genau genommen ist dieses Bibliothek eine RPC - Variante, gekoppelt mit MultiThreading und dynamisch aufgebaut (keine fixe Parameteranzahl da Stacking usw...)
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Interessant ist es auf jeden Fall. Ich hab nur leider grad keinen Verwendungszweck daher nicht getestet. Hab mir das Projekt aber vorgemerkt. :wink:
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
coder
Beiträge: 204
Registriert: 25.09.2005 17:53
Computerausstattung: Intel Core2Quad Q8200 @ 2.33GHz
ASUS P5Q3, 2GB DDR3-1066 RAM, ATi Raedeon HD 4850
Wohnort: Deutschland
Kontaktdaten:

Beitrag von coder »

Erstmal muss ich sagen, das das ein wirklich sehr interressantes Projekt ist! :allright:
Aber ich hab in der SlaveDemo einen kleinen Fehler entdeckt:
Bei mir sagt der Debugger bei FreeMemory(*Mem) (in den CRC32- und MD5-Proceduren) immer
The specfied "*MemoryID" is not valid.
Kann aber auch sein, dass das an mir liegt, denn ich hab ein so ähnliches Problem schon bei anderen DLLs beobachtet...

mfg coder
Windows 7 x64 | PureBasic 4.60 4.50 4.02
Ja verdammt, meine Eltern wohnen immer noch bei mir!
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Das Problem hab ich auch.

Denke das da der PB Debugger nicht mit klarkommt wenn ein Thread aus ner DLL auf ne PB Funktion zugreifen will (besonders wenn Strings drinnen vorkommen).

Du musst einfach den Debugger deaktivieren,ThreadSave aktivieren, dann geht alles glatt. Keine Abstürze usw.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Update:
  • Slave quitiert Empfang von Jobs (#Event_Job_Received, #Event_Job_Unknown)
  • Slave Events (#Event_Master_Connect, ...)
  • Unterteilung Master_Event_*, Slave_Event_*
  • Interne Optimierungen
  • Beispiel-Sources verbessert
Bugreports/Wünsche/Beschwerden/Verbesserungsvorschläge/Kritik/Götzenverehrung & Lobpreisungen immer wilkommen :mrgreen: !

Download 1. Post oder:

http://www.paladiumx.forgesoft.net/publ ... r_Beta.zip
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Update:
  • Mehr Slave Events (#Event_Master_DoJob, #Event_Master_GetServiceInfos,...)
  • ECluster_Slave_LogEvents(): Events ein/abschaltbar, sonst baut sich bei Silent-Servern nur ne gigantische Event-Queue auf
  • ECluster_Slave_Event_Job(): JobName des aktuellen Events ermitteln
  • Demos verbessert
Die Democodes sind jetzt inklusive GUI usw, und könnten so nun wirklich ernsthaft benutzt werden. (Nur das es eben keinen Sinn macht sich nen MD5 oder nen CRC Remote berechnen zu lassen, eher ein Bild rendern oder einen Serial validieren... :mrgreen:) Die Demos liegen ab jetzt auch als EXEn bei, für alle die zu faul sind den Compiler anzuwerfen 8)

Genaue Beschreibung aller Konstanten/Funktionen usw. wie immer in der ECluster_inc.pbi

Bild

Download im 1. Post oder:


http://www.paladiumx.forgesoft.net/publ ... r_Beta.zip
Zuletzt geändert von cxAlex am 01.03.2009 21:17, insgesamt 1-mal geändert.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Funktioniert super,

obwohl das UAC von Vista manchmal bei solchen Sachen nerven
kann.

:allright:
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
coder
Beiträge: 204
Registriert: 25.09.2005 17:53
Computerausstattung: Intel Core2Quad Q8200 @ 2.33GHz
ASUS P5Q3, 2GB DDR3-1066 RAM, ATi Raedeon HD 4850
Wohnort: Deutschland
Kontaktdaten:

Beitrag von coder »

Top Arbeit! :allright:
Was noch evt. nützlich sein könnte, ist eine Funktion um zu überprüfen (vom Master aus), wie viele Aufgabe noch in Queue des Slaves sind oder wie viele Threads er maximal gleichzeitig bearbeitet.

Was auch noch super wär, das sich die Master bei dem Slave anmelden müssen und die Verbindung dann verschlüsselt erfolgt, so dass nicht jeder einfach rechen Kapazitäten auf den Slaves nutzen kann. Könnte mann vlt. über Callbacks regeln, aber das ist nicht so wichtig...

mfg coder
Windows 7 x64 | PureBasic 4.60 4.50 4.02
Ja verdammt, meine Eltern wohnen immer noch bei mir!
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

coder hat geschrieben:Top Arbeit! :allright:
Was noch evt. nützlich sein könnte, ist eine Funktion um zu überprüfen (vom Master aus), wie viele Aufgabe noch in Queue des Slaves sind oder wie viele Threads er maximal gleichzeitig bearbeitet.
Ist schon für die nächste Version geplant.
Es gibt kein maximales Limit, theroretisch ist die Anzahl der Jobs nur durch den Arbeitsspeicher + SwapDatei begrenzt. Der Slave arbeitet immer nur mit so vielen Threads wie du vorher eingestellt hast, alle anderen Jobs warten solange in einer Queue. (siehe JobQueue)


Das mit der Authentifizierung hab ich mir schon überlegt, aber hab mir dann gesagt das man das ja auch in den Service-Proceduren intern lösen kann. Also das man zuerst z.B. "MyService_Authentificate" aufrufen muss, und nur wenn der Job die gesendeten User-Daten akzeptiert kriegt man ein Handle mit dem man weiterarbeiten kann usw.... .

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten