Periodische Cache-Replikation
Die Daten im Cache können periodisch aktualisiert werden. Die Periode wird mit dem Konfigurationsparameter updatePeriod eingestellt. In diesen Abständen fragt jeder DMZ-Server eigenständig seinen inneren Server ab, ob es Änderungen gab. Üblicherweise wird dann ein partielles Update gestartet. Falls seit dem letzten vollständigen Update mehr Zeit vergangen ist, als die ebenfalls konfigurierte fullUpdatePeriod, wird anstelle des partiellen ein vollständiges Update gestartet. Wenn zu Beginn eines partiellen Updates erkannt wird, dass seit dem letzten Update der innere Server oder sein AuthenticationService neu gestartet wurde, wird das partielle Update in ein vollständiges umgewandelt.
In einem partiellen Update wird mit Hilfe von Versionsnummern entschieden, welche Daten aktualisiert werden müssen. Dazu wird zuerst ermittelt, welche Partner-IDs betroffen sind und danach, ob die Änderung den Datensatz des Partners, der Kanäle oder der Zertifikate betrifft. Dadurch ist das Datenaufkommen minimal und auch die Update-Dauer sehr gering, so dass auch Perioden im Bereich etwa einer Minute möglich sind. Eine Periode unter drei Sekunden oder mit negativem Wert wird ignoriert und stattdessen der Defaultwert verwendet.
Im Message-Log (./logs/services/message.log) werden die Zeitpunkte des partiellen Updates eingetragen.
... SYSTEM:AUTH:MSGAUTHSERVICE: starting partial update of local cache database for partnerIDs: [] |
Falls die ID-Liste leer ist, wurden keine Daten kopiert, sondern nur die Version aktualisiert.
Wenn updatePeriod den Wert 0 hat, wird im laufenden Betrieb keine Aktualisierung erfolgen, auch kein vollständiges Update nach Erreichen der fullUpdatePeriod und auch nicht nach Neustart des inneren Servers oder bei einem Datumswechsel. Das unverzügliche Update nach einer Sync-Required-Nachricht vom inneren Server wird ebenfalls nicht durchgeführt. Der DMZ-Cache wird dann nach dem Initial-Update bei DMZ-Start nicht mehr verändert.
Wenn updatePeriod auf einen sehr großen Wert eingestellt ist, wird diese Periode praktisch niemals erreicht, aber das unverzügliche Update nach syncRequired wird ausgeführt, falls nicht gleichzeitig ignoreNotification auf true gesetzt ist. In diesem Fall wird ein Update nur dann ausgeführt, wenn der DMZ-Server Anfragen an den inneren Server sendet und in der Datenbank relevante Änderungen existieren, eventuell gefiltert über die Channel-Types entsprechend Abschnitt Einschränken Caching nach Channel Types (cachedChannelTypes ) . Wenn auf diese Weise ein Update gestartet wird, wird es dann als vollständiges Update ausgeführt, falls zwischenzeitlich das Datum gewechselt hat, der innere Server neu gestartet wurde oder die fullUpdatePeriod erreicht war.
Wenn fullUpdatePeriod den Wert 0 hat (Defaultwert), werden vollständige Updates nur dann ausgeführt, wenn überhaupt Updates erfolgen (siehe oben) und wenn entweder das Datum gewechselt hat oder der innere Server gestartet wurde.
Wenn fullUpdatePeriod einen sehr kleinen positiven Wert hat, z. B. 1, werden alle Updates als vollständiges Update ausgeführt. Das wird aber nicht empfohlen. Wann die Updates erfolgen, richtet sich jedoch nicht nach diesem Parameter, sondern nach den weiter oben beschriebenen Regeln.