Question

Je l'ai disons 2 (mais ils vont devenir plus à l'avenir) des systèmes entièrement découplées:. Système A et le système B

Disons que chaque élément d'information sur chaque système a un informationID. Il n'y a rien arrêter le informationID être les mêmes sur différents systèmes. Ce qui identifie de façon univoque une information sur tous les systèmes est une paire source-informationID.

Disons que je dois exporter une information du système A à un système B. Je veux ensuite exporter la même information du Système B et réimporter dans le système A et je dois être en mesure de reconnaître que ce le même élément d'information.

Quelle est la meilleure façon de le faire dans l'expérience des gens?

est ce que je pense à faire:

  1. Installation d'un bus de messages entre le systèmes avec des files d'attente de messages.
  2. paramètres de configuration pour chaque système qui surveillera les modifications et générer des commandes enveloppés dans messages qui seront pompés dans les files d'attente (par exemple quand une information est créé / supprimé / mise à jour).
  3. Attribuer classe aux points d'extrémité par rapport à créer / supprimer / mise à jour les commandes afin de se fier à aucun Les noms de système, mais seulement sur un général hiérarchie - de sorte que chaque système n'a pas besoin de savoir sur le autres.
  4. Attribuer un sur seuil mise à jour / supprimer / créer à chaque commande point final de sorte que les commandes ne répondant à l'exigence de seuil seront filtrés et non traité

Cela ne résoudra pas le fait que je dois encore transporter OriginalSource + originalSourceID bien.

Toute aide appréciée.

Était-ce utile?

La solution

Ce problème a été résolu par l'EAI (Enterprise Application Integration) Les fournisseurs comme Tibco et webMethods (maintenant partie de Software AG). Je ne l'ai jamais utilisé Tibco, mais je l'ai utilisé webMethods pour résoudre ce genre de problèmes, donc je vais me concentrer sur webMethods. Par exemple, dans une entreprise, les données sur les employés pourraient résider dans Active Directory et PeopleSoft. webMethods pourrait être utilisée pour assurer des changements, des ajouts, une suppression dans un système (application) sera reflétée dans l'autre en temps réel. Dans une autre organisation, les données sur les employés pourraient également être dans une base de données Oracle ou SQL Server. Encore une fois, pas un problème. Ces outils EAI webMethods comme peuvent parler à une grande variété de back-ends. webMethods ne se limite pas à une seule source et une cible unique, mais parce qu'il a une publish-subscribe l'architecture, les données provenant d'une source unique peut circuler à cibles multiples intéressés qui souscrivent à une information particulière. Livraison garantie et mai autres caractéristiques se trouvent dans ces produits. Retour à l'exemple des employés, en fin de compte, si l'on fait le droit, à tout moment, tous les systèmes et applications dans une entreprise peuvent contenir les mêmes informations sur les employés sans écart.

Ainsi, au lieu de faire la programmation en C # ou Java, vous allez faire la programmation webMethods qui est très semblable à un langage 4GL. Je l'appelle la programmation parce qu'il ya encore logique qui, en boucle, si alors d'autre, branche, variables, paquets, etc, mais il est très orienté procédure, à savoir pas de concept de POO du tout.

Ces outils EAI sont construits avec des fins limitées à l'esprit et l'un des objectifs est de synchroniser les données entre les systèmes disparates dans une entreprise facilement. Et ils le font très bien leur travail.

L'inconvénient est ces outils coûtent beaucoup d'argent. Les entreprises ont souvent une stratégie à long terme avant d'investir dans ces outils.

Autres conseils

Comme quelqu'un a déjà écrit, cela ressemble à un problème typique EAI. Même si les outils EAI utilisés pour être coûteux, maintenant il y a un large choix de libres, des outils open source. Voici une liste de ceux que j'aime plus

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

Mon préféré est OpenESB, je le sais mieux, il a un IDE complet (Netbeans), un support optionnel d'un grand vendeur et un énorme quantité de composants supplémentaires . Pour sa simplicité et son efficacité, je puis aime Apache Camel, mais vous pouvez essayer certains de ceux et de décider lequel fonctionne mieux pour vous. Ensuite, vous pouvez même décider d'acheter des services de soutien pour tous ceux-ci.

Nous faisons à peu près exactement le genre de A -> B -> Une chose que vous décrivez. Nous avons d'abord envisagé d'essayer d'avoir tous les A, B, C ETCS étant pairs, mais qui était trop dur, donc on désigne aujourd'hui l'un comme maître, et les autres esclaves. Il est encore assez facile d'obtenir des choses d'un esclave à l'autre, mais par le maître.

Il est tout fait sur les services Web - jeux de données vont monter et descendre de l'esclave au maître et vice versa, et l'esclave se l'exportation sur lui-même, et appelle l'importation sur le maître. Il dit alors le maître de faire une exportation, l'importation et court sur lui-même.

Le code est donc identique sur chaque système. Il est seulement les esclaves que la maison appellent.

Les processus d'exportation et d'importation indiquent les objets métier concernés de faire tout leur liste et d'autres choses sauver, car ils savent déjà comment instancier et se persistent de DataRows.

Il est pas beaucoup de-dizaines de transactions par seconde architecture, mais il fonctionne, et peut réaliser la synchronisation en temps réel presque.

Nous n'avons pas amélioré la source / unique Id, par la voie:)

est extrêmement simplifiée si vous affectez chaque information un GUID. Si vous avez besoin de garder une trace de la source et d'autres ID, qui est très bien, mais les informations shuold voyager avec son GUID attribué.

Quand une machine voit cette information à nouveau, il va voir le GUID et l'associer avec les données existantes, et vous pouvez décider quoi faire. Mais vous savez déjà c'est la même pièce de données - juste mieux voyagé

.

Gardez à l'esprit que GUIDs sont créés de telle sorte que chaque machine va créer son propre et ils ne seront pas les conflits (pour toutes fins pratiques) avec les GUIDs créés sur une autre machine, ou la même machine à un autre temps.

Ceci est l'une des plus grandes raisons GUIDs ont été créés.

-Adam

À moins d'une limitation spécifique dans la conception du système empêchant, je vous suggère d'affacturage les informations partagées / partageable dans un DB séparé que les deux autres peuvent référence ou simplement reproduire localement. Ensuite, vous n'avez pas besoin de la clé à double élément ni aucun engin complexe ... ESB

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top