Frage

Ich habe die 2 lassen sagen (aber sie werden in Zukunft noch mehr werden) vollständig entkoppelt Systeme. System A und B

Lassen Sie uns sagen, jede Information auf jedem System eine informationID hat. Es gibt nichts, das informationID stoppen das gleiche auf verschiedenen Systemen zu sein. Was identifiziert eindeutig eine Information über alle Systeme hinweg ist eine Quelle-informationID Paar.

Nehmen wir an, ich brauche eine Information von System A nach System B exportieren Ich möchte dann das gleiche Stück von Informationen aus dem System B und Re-Import es in System A exportieren und ich müssen in der Lage sein zu erkennen, das ist das gleiche Stück von Informationen.

Was ist der beste Weg, diese Erfahrung in Menschen zu tun?

Das ist, was ich denke zu tun:

  1. Setup ein Nachrichten-Bus zwischen der Systeme mit Nachrichtenwarteschlangen.
  2. Setup-Endpunkte für jedes System dass überwacht Änderungen und erzeugen gewickelte Befehle in Nachrichten, die gepumpt wird in Warteschlangen (zB wenn ein Teil der Information ist erstellt / gelöscht / aktualisiert).
  3. Zuweisen Reihen zu den Endpunkten relativ zu erstellen / löschen / update Befehle nicht, um vertrauen Systemnamen, sondern nur über eine allgemeine Hierarchie - so dass jedes System muss nicht über das wissen andere.
  4. Weisen Sie einen treshold auf update / delete / create-Befehl zu jedem Endpunkt so dass keine Befehle Erfüllung der Anforderung treshold wird herausgefiltert und nicht verarbeitet

Damit wird der Tatsache nicht lösen, dass ich noch um originalSource zu tragen brauchen + originalSourceID though.

Jede Hilfe sehr geschätzt.

War es hilfreich?

Lösung

Dieses Problem wird von EAI (Enterprise Application Integration) angesprochene Anbieter wie Tibco und webMethods (jetzt der Software AG Teil). Ich habe Tibco noch nie benutzt, aber ich habe verwendet webMethods diese Art von Problemen zu lösen, so dass ich nur auf webmethods konzentrieren würde. Zum Beispiel in einem Unternehmen, Daten über Mitarbeiter könnten in residieren Active Directory und Peoplesoft. webMethods konnten Änderungen, Ergänzungen, um sicherzustellen, verwendet wird, löscht in einem System (Anwendung) in den anderen in Echtzeit widerspiegeln. In einer anderen Organisation, Daten über Mitarbeiter auch in einer Oracle oder SQL Server-Datenbank sein könnten. Auch kein Problem. Diese EAI-Tools wie webMethods können zu einer Vielzahl von Back-Ends sprechen. webMethods ist nicht auf eine einzige Quelle und ein einzelnes Ziel beschränkt, sondern weil es eine Publish-Subscribe-Architektur hat, Daten aus einer einzigen Quelle an mehrere interessierte Ziele fließen kann, die auf eine bestimmte Information zu abonnieren. Garantierte Lieferung und können andere Merkmale können in diesen Produkten gefunden werden. Zurück zum Mitarbeiter Beispiel letztlich, wenn man es richtig macht, zu einem bestimmten Zeitpunkt, alle Systeme und Anwendungen in einem Unternehmen können die gleichen Informationen über die Mitarbeiter ohne Abweichungen enthalten.

So zu tun, anstatt Programmierung in C # oder Java, werden Sie webMethods Programmierung tun, die wie eine 4GL-Sprache sehr viel. Ich nenne es die Programmierung, weil es immer noch Logik beteiligt, Schleife, wenn dann sonst, Zweig, Variablen, die Pakete, usw., aber es ist sehr Verfahren orientiert, das heißt kein Konzept der OOP überhaupt.

Diese EAI-Tools sind mit begrenzten Zwecken im Auge gebaut und eines der Ziele ist es, Daten zwischen verschiedenen Systemen in einem Unternehmen leicht zu synchronisieren. Und sie machen ihre Arbeit sehr gut.

Der Nachteil ist, diese Tools eine Menge Geld kosten. Die Unternehmen haben oft eine langfristige Strategie, bevor in diesen Tools zu investieren.

Andere Tipps

Wie jemand schon geschrieben, das klingt wie ein typisches EAI Problem. Auch wenn EAI-Tools teuer sein verwendet, jetzt gibt es eine große Auswahl an kostenlosen Open-Source-Tools. Im Folgenden eine Liste der, die ich am liebsten

  1. OpenESB
  2. Mule
  3. Apache ServiceMix
  4. Apache Camel

Mein Favorit ist OpenESB, ich weiß es am besten, hat es eine vollständige IDE (Netbeans), optionale Unterstützung von einem großen Verkäufer und ein riesige Menge an zusätzlichen Komponenten . Für seine Einfachheit und Wirksamkeit Ich liebe dann Apache Camel, aber Sie können einige von denen, und entscheiden, versuchen, welche für Sie besser funktioniert. Dann können Sie selbst entscheiden, für alle die Support-Dienstleistungen zu kaufen.

Wir tun so ziemlich genau die Art von A -> B -> A, was Sie beschreiben. Wir versuchen zunächst in Betracht gezogen zu haben, die alle A, B, C etcs Peers zu sein, aber das war zu hart, so dass wir jetzt eine als Master bezeichnen, und die Sklaven andere. Es ist immer noch leicht genug, um Material von einem Slave zum anderen zu gelangen, sondern über den Master.

Es ist alles über Web-Services getan - Datensätze nach oben und unten von Slave und umgekehrt zu meistern, und der Slave läuft der Export auf sich selbst, und ruft den Import auf dem Master. Es sagt dann den Master einen Export zu tun, und führt den Import auf sich selbst.

So ist der Code auf jedem System identisch ist. Es ist nur die Sklaven, die ihr Zuhause nennen.

Die Export- und Importprozesse sagen die relevanten Business-Objekte alle Auflistung zu tun und Speichern von Sachen, da sie bereits wissen, wie zu instanziiert und bleiben sich von DataRows.

Es ist nicht eine viel Zehner-Transaktionen pro Sekunde Architektur, aber es funktioniert, und kann nahezu Echtzeit-Synchronisation erreichen.

Wir haben nicht auf die Quelle / Id Einzigartigkeit verbessert, nebenbei gesagt:)

Dies ist enorm vereinfacht, wenn Sie jede Information eine GUID zuweisen. Wenn Sie den Überblick über Quelle und andere IDs halten müssen, das ist in Ordnung, aber die Informationen shuold immer mit den zugeordneten GUID reisen.

Wenn eine Maschine die gewünschten Informationen wiedersieht, wird es die GUID sehen und es mit den vorhandenen Daten, und dann können Sie entscheiden, was zu tun ist. Aber Sie bereits wissen, dass es das gleiche Datenstück - nur besser gereist

.

Beachten Sie, dass GUIDs in einer solchen Weise erzeugt werden, dass jede Maschine eine eigene erstellen und sie werden nicht in Konflikt (für alle praktischen Absichten und Zwecke) mit den auf einem anderen Rechner erstellt GUIDs oder der gleichen Maschine an einem anderen Zeit.

Dies ist einer der größeren Gründe GUIDs erstellt wurden.

-Adam

Es sei denn, dass eine spezifische Beschränkung im System-Design ist dies zu verhindern, würde ich vorschlagen, das gemeinsame / sharable Informationen in einem separaten DB Ausklammern, dass die beiden anderen können entweder Referenz- oder nur lokal replizieren. Dann brauchen Sie nicht den Dual-Element-Schlüssel noch eine aufwendige ESB contraption ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top