2010-08-26 4 views
5

Für einen Regierungsvertrag schlagen wir vor, eine Verkehrsüberwachungsarchitektur aufzubauen. Wir werden die folgenden Komponenten haben:Also ich spreche hier über eine SOA?

  • Videokamera ist rund um den Bereich von Interesse eingerichtet. Die Kameras werden sich ihrer Position und Ausrichtung sowie der Anzeigeparameter bewusst sein.
  • Ein GIS-Kartenserver, der für Straßen, Gebäude usw. abgefragt werden kann.
  • Ein Algorithmus, der rohe Video- und Straßenstandortinformationen aufnimmt und Autostandorte ausgibt.
  • Ein anderer Algorithmus berücksichtigt die Standorte von Autos und sehr niedrige Straßeninformationen und liefert Informationen darüber, welche Autos anomal fahren.
  • Eine andere Datenbank nimmt im Zeitverlauf Informationen über Autostandorte und Anomalieberichte auf und kann später abgefragt werden.
  • Ein Proxy (oder genauer gesagt eine Fassade) wird über die Archivdatenbank und die Echtzeitalgorithmen eingerichtet, um eine einheitliche Schnittstelle zu den Informationen bereitzustellen.
  • Ein Client verbindet sich mit dem Proxy und dem Straßenserver und malt verschiedene Darstellungen der Verkehrssituation auf dem Bildschirm.

Ich lerne gerade jetzt, was eine SOA ist. Ist dies ein idealer Kandidat für eine SOA mit serviceorientierter Architektur? Ich hatte gehört, dass SOA-Dienste zustandslos sein sollten (oder sind das nur REST-konforme Dienste?). Ich hatte auch gehört, dass es nicht ratsam sei, einen Dienst an den nächsten weiterzuleiten, weil dies die verborgene Komplexität erhöht und dass man etwas tun sollte um diese Situation zu verbessern (eine "Orchestrierung"?). Die oben genannten Dienste scheinen modular und wiederverwendbar zu sein. Zum Beispiel wird es viele Kameras, verschiedene Arten von Fahrzeugerkennung und Anomaliealgorithmen, verteilte Datenbanken und viele Kunden geben. Ich werde die Fähigkeit haben müssen, mit Ereignissen umzugehen: zum Beispiel, wenn ich mich für einen Service registrieren und benachrichtigt werden möchte, wenn ein großer Truck an diesem Punkt vorbeikommt.

Wenn dies nicht ideal von einer SOA implementiert wird, wo sonst sollte ich suchen. Wenn dies für eine SOA ideal ist, wo sollte ich dann mit der Entwicklung beginnen? (Und ich beginne grundsätzlich damit, die SOA-Seite von Wikipedia gelesen zu haben.) Gibt es hier gute Fallstudien?

Antwort

5

Ja, SOA ist in diesem Fall ideal (komplexes, verteiltes System mit einer breiten Mischung von Technologien), aber von dem Klang davon müssen Sie eine Menge mehr Forschung tun, um Ihr Kopf um das Konzept zu bekommen. Es ist kein hartes Konzept, es ist wirklich einfach, aber es gibt keinen vorgeschriebenen Weg, es zu tun. Ich schlage vor, über SOA case studies for similarly-sized projects, Erfolge und Misserfolge zu gehen.

Sie erwähnen eine Fassade für eines Ihrer Subsysteme. Erweitern Sie das gleiche Konzept auf den Rest Ihrer Komponenten. Z.B. Jeder Service ist eine Fassade für ein komplexes Subsystem.

Ich empfehle auch, ein paar verschiedene Web-Services in Ihrer Wahl von Technologien zu implementieren und willkürlich verschiedene Subsysteme abstrahieren (eine Datenbank sollte einer der Coponents sein.) Dann schreiben Sie einen Client, der sie nutzt. Dadurch erhalten Sie viele praktische Erfahrungen und Einblicke in das Konzept.

Zuletzt gedacht: Der einzige Bereich, in dem eine SOA-Architektur stolpern kann, ist, wenn Sie Videodaten zwischen mehreren verschiedenen Diensten verschieben müssen. Die zustandslose Transaktionseigenschaft von SOAs kann zu Leistungsproblemen führen, wenn sehr große Datenmengen bewegt werden oder wenn Massentransaktionen für sehr große Datenmengen ausgeführt werden. Sie müssen entweder das Video lokalisiert halten oder ein Back-End-Subsystem (Cheat) implementieren, um potentiell fiese Engpässe zu vermeiden.

+0

Sehr gute Beratung! Vielen Dank. Ein Kommentar allerdings, es gibt mehrere Dienste in meinem Rahmen, die nicht staatenlos sein können (oder sonst verkenne ich, was zustandslos in diesem Fall bedeutet). Zum Beispiel wird der Fahrzeugortungsdienst ein Client für den Videodienst sein und wird den Standort der Autos (ein Zustand von Art) durch kontinuierliches Betrachten neuer Videorahmen verfolgen. Vielleicht ist es wichtig, dass jede Dienstleistung den Zustand ihrer Kunden nicht erhalten soll. Ich denke, ich kann hier davon wegkommen. – JnBrymn

+0

Was ist, wenn ich möchte, dass der Dienst die Listener verfolgt und sie benachrichtigt, sobald neue Informationen verfügbar sind. Dies würde nicht den Service-Zustand seiner Kunden darstellen, aber es würde bedeuten, dass der Service seine Kunden immer auf dem Laufenden hält. Tut das etwas weh? – JnBrymn

+0

Die Clients und der Service haben eine engere Kopplung. Ein Client könnte offline sein und Sie müssen entscheiden, was der Dienst in einer solchen Situation tun soll, ein anderes System abbrechen, ignorieren, wiederholen oder benachrichtigen? – Kwebble