2012-04-06 14 views
1

Ich habe mehrere Knoten, von 2 Arten.Erlang bestimmen "Typ" von Remote-Knoten

Eine Art von Knoten, wird eine Arbeit auf einem bestimmten Server, die andere wird etwas anderes tun.

Nennen wir sie "Typ1" und "Typ2".

ich starten sie mit:

erl -pa ebin -name [email protected] -setcookie abc 
erl -pa ebin -name [email protected] -setcookie abc 
erl -pa ebin -name [email protected] -setcookie abc 

sub1.mydomain.com, sub2.mydomain.com und sub3.mydomain.com sind 3 verschiedene Server über das Internet.

Offensichtlich ist Typ2-Knoten hier, um beide Typ1 miteinander zu verbinden. Type2 Server ist der einzige "sichere" Knoten, der am Leben ist, damit die ganze Sache funktioniert.

Typ1-Server sind dynamisch. Wenn ich also einen neuen Typ1-Server starte, pingt er Typ2-Server an, um eine Verbindung zu allen anderen Knoten herzustellen.

Die Sache ist, wenn mindestens 2 Typ1 Knoten laufen, muss ich die Arbeit clustern.

So würde Ich mag von den Knoten() zurück, um zu bestimmen, welcher Knoten Typ1 sind ...

ich wäre in der Lage die Zeichenfolge atom_to_string zu bekommen, und dann überprüfen Sie die Typ1 mit dem zurückgegebenen String, aber es scheint, als wäre es ein falscher Weg, es zu tun ... Auch die Verwendung bestimmter Ports ist aufgrund von Einschränkungen nicht möglich.

Irgendwelche Vorschläge würden geschätzt.

Antwort

1

In Erlang, Knotennamen sind Atome und Atome sind konstanter Literale, so dass Sie nicht auf Mustererkennung auf Teile eines Atoms der Lage sein werden (im Griechischen "a-tomos" bedeutet "unsplittable") .

Leider müssen Sie so etwas wie konvertieren jedes Atom in eine Zeichenfolge (eine Liste von Zeichen) und wenden Sie Ihre Regexp darauf (es scheint, Sie tun dies bereits).

sagte, ich würde vorschlagen, dass Sie einen Blick auf haben:

http://learnyousomeerlang.com/distributed-otp-applications

OTP werden Sie mit vielen Dingen helfen Sie versuchen, mit Ihrer verteilten Anwendung zu erreichen.

Verwandte Themen