Seite 1 von 7

Easy Cluster DLL - Verteiltes Rechnen & mehr

Verfasst: 27.02.2009 20:14
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

Verfasst: 28.02.2009 22:31
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...)

Verfasst: 28.02.2009 22:47
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:

Verfasst: 01.03.2009 13:46
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

Verfasst: 01.03.2009 15:52
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.

Verfasst: 01.03.2009 17:52
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

Verfasst: 01.03.2009 19:57
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

Verfasst: 01.03.2009 20:27
von Josef Sniatecki
Funktioniert super,

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

:allright:

Verfasst: 02.03.2009 18:09
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

Verfasst: 02.03.2009 19:12
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