Ich habe einen CRUD-Webservice und bin damit beauftragt worden, einen Weg zu finden, um sicherzustellen, dass wir keine Daten verlieren, wenn die Datenbank ausfällt. Jeder ist sich bewusst, dass wir, wenn die Datenbank ausfällt, nicht "lesen" können, aber für eine bestimmte Teilmenge der Operationen wollen wir sicherstellen, dass wir keine Daten verlieren.Ist RabbitMQ, ZeroMQ, Service Broker oder etwas Ähnliches eine geeignete Lösung für die Erstellung eines Hochverfügbarkeitsdatenbank-Webservice?
Ich habe den Eindruck, dass dies von Diensten wie 0MQ, RabbitMQ oder einem der Microsoft MQ-Dienste abgedeckt ist. Obwohl ich nach ein paar Tagen Lesen und Nachforschung nicht einmal sicher bin, dass es sich bei den Nachrichten, über die wir in MQ-Services sprechen, um Datenbankoperationen handelt. Ich bin mir jedoch 100% sicher, dass ich so viele Hallo Welten anstellen kann, wie ich mir jemals erhoffen kann.
Wenn ich eine Nachrichtenwarteschlange verwenden kann, um der Datenbank eine Schutzebene hinzuzufügen, würde ich mich zu Rabbit neigen (weil es anscheinend durch Abstürze bestehen bleibt), aber das Ziel ist eine Microsoft SQL Server Datenbank, vielleicht eine von Ihre Lösungen (wie SQL Service Broker oder MSMQ) sind besser geeignet.
Die wirklich grundlegende Frage, über die ich mir noch nicht sicher bin, ist, ob ich überhaupt mit dem richtigen Kartenspiel spiele (sozusagen).
Mit dem Wunsch nach einem hochverfügbarem Webservice, der auch bei einem Ausfall der Datenbank funktioniert, ist es sinnvoll, eine Rabbit MQ Instanz "zwischen" Webservice und Datenbank zu stellen? Vielleicht ist der richtige Link in der Kette, dass RabbitMQ Nachrichten an den Webserver sendet?
Oder gibt es eine andere Lösung, um dies zu erreichen? Im Moment gibt es eine Reihe von Ideen, um einen Weg zu finden, Weblogs im Falle eines Datenbankausfalls oder so etwas zu erstellen ... aber wir sind immer noch in einem frühen Stadium, dass (zumindest ich) keine Ahnung habe, was ich 'weiß'. Ich werde es tun.
Ist Nachrichtenwarteschlange die richtige Lösung?
Kein Problem - Bedenken Sie auch, dass die Verwendung von Warteschlangen immer noch nicht alle Datenverluste verhindert, z. B. Client-Browser-Anforderungen können fallen gelassen werden, wenn IIS zu beschäftigt ist, sie zu versenden. –
Service Broker kann problemlos mit EF oder ADO.Net verwendet werden. Funktioniert sogar großartig mit async/erwarten. –