Denne
Here to stay
|
Prinzipiell gibt es 3 Möglichkeiten in Service orientierten Netzwerken Services zu finden, wenn man von der Infrastruktur komplett unabhängig sein möchte:
1) Service Provider kündigen ihren Service mit z.B. Broadcast-Nachrichten regelmäßig an. 2) Service Clients "suchen" im Netzwerk mittels Broadcast-Nachrichten nach Services (Service Provider antworten mit Unicast-Nachrichten). 3) Du hast eine Service Registry, in welcher alle Services eingetragen sind und Clients wie in einem Telefonbuch "nachschlagen" können. Hierfür gibt es wiederum mehrere Ansätze. Da es für deinen Fall aber kompletter Overkill ist imho, gehe ich darauf nicht weiter ein.
Stichwort: Service Discovery in Service Oriented Architectures
|
XeroXs
Vereinsmitglieddoh
|
2.) Klingt ideal - bedingt aber dass ich das Subnetz meines Services kennen muss oder? (oder ich halt eine Liste an Möglichkeiten absuche..)
|
Denne
Here to stay
|
Leider kenne ich mich mit Subnetzmasken nicht mehr sooo gut aus (länger her, dass ich das in der Uni hatte und privat habe ich damit nichts am Hut), aber könnten config-Files hier vllt helfen? Hier könnte man vllt direkt die IP-Adressen der Server angeben, auf welchen die Services laufen? Wäre ja von dem eigentlich Programm unabhängig.
|
XeroXs
Vereinsmitglieddoh
|
Dort stehe ich momentan - und es ist einfach richtig unpraktisch beim ausrollen von hundert und mehr Clients.
Noch dazu gehts um Mobile Apps - d.h. die Config muss irgendwie aufs Device, und bei iOS sogar direkt ins Bundle.. sehr unpraktisch, und skaliert halt überhaupt nicht.
Auf der anderen Seite den Server konfigurieren wäre kein Problem - deshalb ist die Broadcast Funktion (wenn sie vom Server in ein gezieltes Subnetz geht) durchaus möglich.
Traumvariante wäre natürlich ganz ohne Konfiguration, wo sich die beiden einfach so finden ;-)
Bearbeitet von XeroXs am 04.08.2015, 14:51
|
Denne
Here to stay
|
Hmm okay, da hast du Recht. Einzige Lösung die mir einfällt diesbezüglich wäre in der App ein Menüpunkt, wo jeder Client die IP-Adressen einmalig eingeben müsste. Würde direkt in der App funktionieren und muss nur einmal (von jedem Client) erledigt werden. edit (wegen deinem edit): Oder das am Server zu konfigurieren und jede x sec vom Server nen Broadcast zum "Ankündigen" des Services verschicken. Falls sowas Flach fällt und theoretisch Services in anderen Subnetzen laufen könnten, musst du Broadcast-Nachrichten "dorthin" schicken. Da die App ja nicht wissen kann, welche Subnetze existieren, müsste die App nach meiner Logik alle Subnetze "abklappern". Vielleicht hilft dir das hier: http://stackoverflow.com/questions/...-across-subnetsIch sag mal so: Technisch sollte es umsetzbar sein. Aber wenn jeder Client das ganze Netzwerk + alle möglichen Subnetze mit Broadcast-Nachrichten flutet ists bissl hässlich. Im Lan aber nicht sooo tragisch vom Traffic.
Bearbeitet von Denne am 04.08.2015, 14:58
|
roscoe
tinkerer
|
Wenn Du eine Lösung willst, die überall und immer ohne individuelle Konfiguration (auf Kundenebene oder auf Geräte-/Servicebene) funktioniert, geht das mE nicht ohne Eingriff in die Infrastruktur, sei das jetzt DNS oder Router.
Der Router entscheidet anhand seiner Konfiguration, ob er Broadcasts (und wenn ja, welche) er wohin durchlässt, ein gezieltes Schicken am Router "vorbei" geht nicht.
|
XeroXs
Vereinsmitglieddoh
|
@Denne: Dein Link klingt auch eher so als könnt ich mir das Broadcasten vom Server ins Client-Subnetz abschminken  @roscoe scheint so :/
|
XXXprod
I'm gonna be made!
|
Broadcasten in ein fremdes Subnetz glaub ich nicht das funktionieren wird. Aber wenn es eine selbstgestrickte Lösung sein soll, was spricht dagegen einen zentralen Ansprechpunkt zu erstellen, den alle Clients erreichen und der gibt den Clients nur zurück, welche Server(Dienste) es gibt. (Ähnlich wie bereits vorgeschlagen nur halt selbst implementiert).
Diese zentrale Stelle müsste nicht mal die Server kennen, sondern die Server registrieren sich selbstständig bei ihr. Dadurch fällt der ganze Broadcast murks weg und du bist nicht an irgendwelche dritten Tools gebunden.
|
Denne
Here to stay
|
Okay ja, ich da kommt wohl auf die Router an was ich gerade so lese. Scheint wohl nicht immer gegeben zu sein, dass Router Broadcast und/oder IP Multicast in andere Subnetze zulassen :/
XXXprod: Dafür müssten die Clients die IP von der zentralen Stelle kennen. Wenn das möglich wäre, könnten die Clients auch direkt die IPs von den Serven haben. Oder verstehe ich was falsch?
|
XXXprod
I'm gonna be made!
|
Naja in dem Fall müssten alle Clients (und dazugehörigen Server) nur genau 1 IP(bzw. Namen) kennen, wobei sich die Serverkonstellation beliebig verändern könnte.
//Edit: Ich hab glaub ich die Aufgabenstellung auch nicht komplett verstanden. Warum dürfen die Clients nichts von den Servern wissen?
|
Denne
Here to stay
|
Aber sie müssten eben eine IP kennen und hier liegt das Problem, soweit ich das verstanden habe  Genau das (Konfiguration der Clients, weil bei jedem Kunden im Netzwerk die zentrale Stelle ja eine andere IP haben könnte) soll ja vermieden werden, wenn möglich. @ XXXprod: Dürfen sie schon. Hier geht es darum, dass Clients ohne Konfiguration die Server finden sollen. Man kann die Server-Adressen nicht "hardcoden", da sie in jedem Netzwerk anders sein können und es soll ohne Konfiguration der App funktionieren. Von daher braucht man einen "universalen" Weg, die Server im Netzwerk zu finden.
Bearbeitet von Denne am 04.08.2015, 15:13
|
XXXprod
I'm gonna be made!
|
Ich denke das man mit DNS hier am besten fährt. Kenn mich da zwar nicht so gut aus, aber es muss ja möglich sein einen überall eindeutigen Namen zu definieren, der dann nur per DNS konfiguriert wird und alle Clients verwenden dann diesen Namen.
|
mr.nice.
differential image maker
|
Es gibt einige Protokolle die dafür in Frage kämen, abhängig von mehreren Faktoren wie Art der Umsetzung , Betriebssystem der Clients...
Zeroconf (avahi oder bonjour), Multicast DNS, Simple Service Discovery Protocol, Link-Local Multicast Name Resolution, Service Location Protocol, um einige zu nennen.
|
XeroXs
Vereinsmitglieddoh
|
Die ServerIP kann (und ist) jedes mal anders. Der Servername ist ebenfalls jedes mal anders (Gegeben durch die Richtlinien der Netzbetreiber).
Die Clients vorkonfigurieren bedeutet für jeden Kunden eigene Builds - in der Pflege und Wartung extrem aufwendig, und skaliert einfach überhaupt nicht.
Ein Alias am DNS wäre denkbar - würde ich gerne vermeiden, denn damit wird das ganze sehr schnell zum "Projekt" in einer Firma, und damit verschlechtern sich die Chancen des Rollout. Außerdem wäre ein einheitlicher Name nicht möglich - es gibt durchaus Situationen wo mehrere Server in einem Netz erreichbar sind.
@mr.nice. danke, schau ich mir mal an. Clients sind Android/iOS.
|
Denne
Here to stay
|
Wieso müssen die Clients vorkonfiguriert sein? Kann nicht jeder Kunde von euch bzw Benutzer der App einfach unter Einstellungen selbst die Server IPs für das Netzwerk, in welchem er die App verwendet, eintragen? Ich habe bisher gegen diesen Vorschlag noch kein Argument gelesen, welches dagegen sprechen würde.
|