WCF Cluster 1.0

Nach einiger Zeit, möchte ich jetzt endlich die erste Version von meinem WCF-Cluster Beispiel vorstellen. Wie man einen einfachen Client bauen kann hatte ich ja schon im vorigen Artikel geschrieben. Ich lade jetzt auch noch einen Command mit hoch, der Pi berechnet um mal ein richtiges Beispiel mit längerer Ausführungsdauer zu haben.

Der ganze Quellcode ist im Download mit drin, deshalb werde ich hier nicht viel reinkopieren. Das Distributor-Gerüst sieht so aus:

public class ComputingPowerDistributor : IComputingPowerDistributor
{
  public void ExecuteCommand(Stream input)
  {
      calculators.ElementAt(calculatorIndex).Value.ProducerExecuteCommand(input);
  }

  public void Connect()
  { 
     calculators[header.ClientAdress] = new ChannelFactory<IPowerProducerClient>(binding, new EndpointAddress(header.ClientAdress)).CreateChannel();
  }

  public void Disconnect()
  {
      calculators.Remove(header.ClientAdress);
  }
}

Die Producer/Calculator können sich an- und  abmelden, jeder Command, der von einem Consumer kommt wird an einen Producer weitergeleitet. Die Adressen und IDs werden im Header von der Nachricht übertragen.

Dann ist die Funktion von Producer/Consumer eigentlich nur noch Fleißarbeit. Einen WCF-Service im Code erstellen und die Methoden vom Distributor aufrufen. Der Producer ist ja immer gleich, deshalb habe ich dafür mal ein UI geschrieben, das im Moment so aussieht:

p1

Der Test-Conumer, der mitkommt sieht so aus:

p2

Der setzt 50 Commands ab, die bei der Pi-Berechnung mitmachen. Diese Commands werden der Reihe nach vom Distributor auf alle Calculator verteilt. Natürlich ist das noch nicht die Endlösung der Lastverteilung, aber zum Testen funktioniert es ganz gut.

Wenn man mit mehreren Computern arbeitet ist es wichtig vorher die Adresse vom Distributor zu ändern (im Moment als localhost), ansonsten sollte alles so funktionieren.

Als erstes muss man den Distributor Host starten, dann die Power Producer und den Consumer, die dll vom Command liegt schon im bin Verzeichnis.

Und hier ist der Link zum Download: Selen.Clustering

Veröffentlicht von

Winfried

Student TU Chemnitz