2008-09-15 13 views
4

Ich entwickle eine Lösung, die in mehreren Datenzentren in mehreren Regionen der Welt eingesetzt wird, wobei jedes Rechenzentrum eine replizierte Kopie von Daten aufweist, die in jeder Region aktiv aktualisiert werden. Ich werde in jedem Rechenzentrum eine Kombination aus mehreren Datenbanken und Dateisystemen haben, deren Zustand konsistent gehalten werden muss (innerhalb eines Rechenzentrums). Diese mehreren Repositories werden von einer SOA-Serviceschicht abgedeckt.Replikationstechnologien auf Anwendungsebene

Ich kann einige Latenz in der Replikation tolerieren, und Regionen müssen offline sein, und dann später aufholen.

Angesichts der mehreren Back-End-Repositories von Daten, kann ich nicht einfach auf unabhängige Replikationslösungen für jeden einzelnen verlassen, um einen konsistenten Zustand zu halten. Ich führe daher dazu, die Replikation auf der Anwendungsebene zu implementieren - indem ich die SOA-Anforderungen in irgendeiner Weise repliziere. Ich muss sicherstellen, dass Replikationsschleifen nicht auftreten und dass die letzten Writer-Bedingungen korrekt sortiert sind.

Was ist Ihrer Erfahrung nach das beste Muster zur Lösung dieses Problems, und gibt es gute (freie oder andere) Produkte, die untersucht werden sollten?

Antwort

0

Sie geben nicht genug Details, um sich Ihrer Anforderungen sicher zu sein, aber ich denke, dass Sie SQL Server Merge Replikation überprüfen sollten. Es ermöglicht die asynchrone Replikation mehrerer Datenbanken mit voller Konfliktauflösung. Sie müssen einen globalen Master festlegen und alle anderen Datenbanken werden auf diesen repliziert, aber alle Datenbankinstanzen sind voll funktionsfähig (Lesen/Schreiben), und Sie können die Replikation in beliebigen Intervallen planen. Wenn eine Region offline geht, können sie später ohne Probleme aufholen - wenn der Master offline geht, wird jeder unabhängig arbeiten, bis die Replikation fortgesetzt werden kann.

Ich würde gerne andere Lösungen dieser flexiblen wissen (abgesehen von Lotus Notes/Domino natürlich, die nicht sehr trendy in diesen Tagen ist).

2

Lotus/Domino ist Ihre Antwort. Ich arbeite seit zehn Jahren damit und es ist genau das, was Sie brauchen. Es mag nicht trendy sein (eine Wahrnehmung, die ich herausfordern würde), aber es ist leistungsstark, anpassungsfähig und sehr sicher. Die neueste Version R8 ist die beste.

0

Ich denke, dass Ihre Antwort auf einer Pub/Sub-Architektur basieren muss. Ich gehe davon aus, dass Sie zuverlässige Nachrichten zwischen Ihren Rechenzentren haben, so dass Sie sich darauf verlassen können, dass veröffentlichte Aktualisierungen letztendlich empfangen werden. Wenn Ihr gesamter Zugriff auf die Daten-Repositorys über einen Dienst erfolgt, können Sie der Orchestrierung jedes Ihrer Update-Services eine Ereignisbenachrichtigung hinzufügen, die alle interessierten Datenzentren des Ereignisses benachrichtigt. Im Idealfall ist die Master-Datenbank die einzige, die diese Aktualisierungen sendet. Wenn die Master-Datenbank die einzige ist, die die Updates sendet, können Sie das Routing der Benachrichtigungen an den Knoten, der sie generiert hat, ausschließen und somit Update-Schleifen vermeiden.

1

Sie sollten IBM Lotus Domino unbedingt in Betracht ziehen. Eine Lotus Notes-Datenbank kann zwischen Standorten nach einem vordefinierten Zeitplan replizieren. Das Replikat in Notes/Domino ist definitiv ein sehr leistungsfähiges Feature und ermöglicht die vollständige Replikation von Daten zwischen Standorten. Auch wenn ein Server beim nächsten Verbindungsaufbau nicht verfügbar ist, wird er einfach repliziert und synchronisiert.

Bis zur SOA Service Tier konnten Sie mit Domino Designer einen Webservice schreiben. Seit Notes/Domino 7.5.x (glaube ich) konnte Domino Webservices bereitstellen und konsumieren.

1

AS was andere empfohlen, ich werde auch Lotus Notes/Domino empfehlen. 8.5 ist wirklich sehr leistungsfähige Anwendung Entwicklung platfrom