2017-10-18 11 views
0

Ich brauche einen Arbeiter, um neue Dateneinträge in einer Spaltenfamilie zu abonnieren. Ich muss auf der Herstellerseite die Dienste aufrufen, die Daten verbrauchen, oder die Spaltenfamilie nach neuen Daten abfragen, was eine Verschwendung von Ressourcen bedeutet und auch zu einer längeren Latenz führt.Ist es möglich, einen externen Trigger in Cassandra zu haben?

Ich möchte, dass ein externer Dienst aufgerufen wird, wenn neue Daten in die Spaltenfamilie geschrieben werden. Ist es möglich, nach dem Eintreffen neuer Daten einen externen Dienst aufzurufen, z. B. einen REST-Endpunkt?

Antwort

3

Es gibt zwei Funktionen, triggers und CDC (Änderung der Datenerfassung), die möglicherweise funktionieren. Sie können einen Trigger erstellen, um Updates zu empfangen und die http-Anfrage auszuführen, oder Sie können CDC verwenden, um eine Kopie der Mutationen als Replikat zu erhalten, um sie durchzugehen.

CDC ist besser für die Konsistenz, da ein Trigger ausgelöst wird, bevor Mutationen angewendet werden, kann Ihr API-Endpunkt benachrichtigt werden, aber dann die Mutation nicht anwenden, so dass Sie einen inkonsistenten Zustand haben. Trigger sind jedoch einfacher, da Sie sich keine Gedanken über die Deduplizierung machen müssen, da es nur 1 pro Abfrage und 1 pro Replikat gibt. Oder Sie können beide verwenden, Trigger, die einen zwischengespeicherten Zustand aktualisieren, und dann CDC mit einem Map-Reduce-Job, um Inkonsistenzen zu beheben.

Verwandte Themen