Freigeben über


Schnappschussreferenzen

Snapshot-Referenzen sind spezielle Schlüssel-Werte, die auf eine bestimmte Momentaufnahme in einem App-Konfigurationsspeicher verweisen. Sie ermöglichen es Ihnen, die Sicherheit der unveränderlichen Konfiguration (Snapshots) mit der Flexibilität zu kombinieren, zur Laufzeit dynamisch zu bestimmen, welchen Snapshot eine Anwendung verwendet.

Bei der direkten Momentaufnahmeverwendung wählt eine Anwendung eine Momentaufnahme anhand des Namens im Code aus. Das Ändern der zielbezogenen Momentaufnahme erfordert eine neue Bereitstellungs- oder Konfigurationsänderung im Codepfad, der die Konfiguration erstellt. Snapshotverweise entfernen diese Einschränkung: Sie laden einen Referenzschlüsselwert einmal, und wenn sich der Name der Zielmomentaufnahme später ändert, laden Konfigurationsanbieter die Konfiguration automatisch in den neuen unveränderlichen Satz neu.

Warum Snapshotverweise verwenden?

Snapshot-Referenzen bieten Folgendes:

  • Einfache Updates: Aktualisieren Sie die referenzierte Momentaufnahme, ohne den Anwendungscode zu berühren, auch während der Laufzeit.
  • Unveränderliche Konfigurationssätze: Jede Momentaufnahme bleibt unverändert, wobei Auditierbarkeit und Rollbackgarantien erhalten bleiben.

Funktionsweise

Ein Momentaufnahmeverweis wird als Schlüsselwert gespeichert, dessen Wert den Namen der zu verwendenden Momentaufnahme enthält. Wenn ein Konfigurationsanbieter Schlüsselwerte lädt, werden alle Snapshot-Verweise zwischen den ausgewählten Elementen automatisch aufgelöst. Die Schlüsselwerte der referenzierten Momentaufnahme werden in die Konfiguration der Anwendung zusammengeführt. Wenn sich der Verweis auf eine andere Momentaufnahme ändert, führt die Aktualisierung des Konfigurationsanbieters dazu, dass die Inhalte der neuen Momentaufnahme geladen werden.

Hinweis

Sie müssen keine spezielle API aufrufen, um Snapshotverweise zu aktivieren. Wenn Sie den Schlüsselwert auswählen, der eine Snapshot-Referenz ist, erfolgt die Auflösung automatisch.

Erstellen einer Snapshot-Referenz

  1. Öffnen Sie Ihren App-Konfigurationsspeicher im Azure-Portal.
  2. Wählen Sie Konfigurations-Explorer aus.
  3. Klicken Sie auf Erstellen.
  4. Wählen Sie Momentaufnahme-Referenz aus.
  5. Geben Sie einen Schlüssel für den Verweis ein. Legen Sie optional eine Bezeichnung fest.
  6. Wählen Sie den Zielmomentaufnahmenamen aus der Liste aus (oder geben Sie ihn ein).
  7. Wählen Sie "Erstellen" aus.

Nach der Erstellung wird der Snapshotverweis zusammen mit anderen Schlüsselwerten im Konfigurations-Explorer angezeigt.

Verbrauch von Snapshot-Verweise

Es ist kein neuer Code erforderlich, um einen Momentaufnahmeverweis zu verwenden. Wenn ein Schlüssel für eine Momentaufnahme-Verweis Teil der ausgewählten Schlüsselwerte beim Erstellen der Konfiguration ist, löst der Anbieter automatisch diesen auf und lädt die Schlüsselwerte der referenzierten Momentaufnahme. Vergleichen Sie dies mit der direkten Nutzung von Snapshots, bei der Sie explizit eine API wie SelectSnapshot("SnapshotName") aufrufen und die Auswahl der Snapshot-Option beim Start festlegen, sodass ein späterer Wechsel eine Codeänderung oder eine erneute Bereitstellung erfordert.

Verhalten bei Aktualisierung

Wenn die Aktualisierung konfiguriert ist, führt das Ändern des Ziel-Snapshot-Namens in einem Snapshot-Verweis dazu, dass die Anwendung nahtlos die neue Snapshot verwendet.

  1. Die Anwendung wird gestartet.
  2. Der Konfigurationsanbieter ruft ausgewählte Schlüssel-Werte ab, einschließlich eines Snapshots.
  3. Der Konfigurationsanbieter löst den Verweis auf Snapshot Snapshot_A auf und lädt deren Schlüssel-Werte.
  4. Der Verweis auf die Momentaufnahme wird aktualisiert, um auf Snapshot_B zu verweisen (immer noch unveränderlich).
  5. Der Konfigurationsanbieter erkennt, dass sich der Snapshotverweisschlüsselwert geändert hat.
  6. Der Konfigurationsanbieter wird erneut aufgelöst. Die Schlüsselwerte von Snapshot_A werden entladen. Die Konfiguration wird neu geladen und liefert die Schlüssel-Werte von Snapshot_B.

Hinweis

Bei dieser Sequenz wird davon ausgegangen, dass Sie die Aktualisierung für Ihre Anwendung konfiguriert haben. Ausführliche Informationen zum Konfigurieren der Aktualisierung finden Sie in der dynamischen Konfiguration.

Beispiel für eine Momentaufnahmereferenz

Im folgenden Beispiel wird eine Snapshot-Referenz gezeigt.

{
    "key": "app1/snapshot-reference",
    "value": "{\"snapshot_name\":\"referenced-snapshot\"}",
    "content_type": "application/json; profile=\"https://azconfig.io/mime-profiles/snapshot-ref\"; charset=utf-8",
    "tags": {}
}

Wie bereits erwähnt, ist ein Snapshotverweis ein normaler Schlüsselwert mit einigen zusätzlichen Einschränkungen. Konfigurationsanbieter identifizieren Schnappschussverweise anhand ihres spezifischen Inhaltstyps. Der Wert eines Momentaufnahmeverweises ist ein JSON-Objekt mit einer Namenseigenschaft, die auf die Zielmomentaufnahme verweist.

Snapshot-Referenzinhaltstyp: application/json; profile="https://azconfig.io/mime-profiles/snapshot-ref"; charset=utf-8

Wichtige Konfliktlösung

Referenzierte Momentaufnahmen können Schlüssel enthalten, die mit normalen Schlüsselwerten, die sich außerhalb einer Momentaufnahme befinden, in Konflikt stehen. Konfigurationsanbieter lösen diese Konflikte mithilfe des Werts des zuletzt gesehenen Schlüssels. Im Falle von Momentaufnahmen ist die lexikographische Anordnung des Momentaufnahmebezugsschlüssels ein wichtiges Detail, wenn der ultimative Wert eines bestimmten Schlüssels berücksichtigt wird, wenn Konflikte auftreten.

Vereinfachtes Beispiel

Gehen Sie davon aus, dass Ihr Laden über diese normalen Schlüssel-Werte verfügt:

key: message
value: hello-world

key: request-limit
value: 100

Eine Momentaufnahme, die Folgendes enthält:

key: message
value: bye

key: request-limit
value: 8000

Wenn ein Snapshotverweis hinzugefügt wird, der auf die oben genannte Momentaufnahme verweist, hängt die endgültige effektive Konfiguration von der lexikographischen Position des Momentaufnahmeschlüssels ab:

Momentaufnahmeverweisschlüssel lexikographische Position vs message, request-limit Endgültiger message Wert Endgültiger request-limit Wert Warum
a-snapshot-reference Vor beiden Hello-World 100 Der Snapshotverweis wird zuerst aufgelöst; normale Schlüssel überschreiben später ihre Duplikate.
my-snapshot-reference Nach message , aber vor request-limit Auf Wiedersehen 100 message wird zuerst gesehen. Der Snapshotverweis wird dann aufgelöst und außer Kraft gesetzt message. Schließlich überschreibt der normale request-limit-Wert den request-limit-Wert des Snapshots.
some-snapshot-reference Nach beiden Ereignissen Auf Wiedersehen 8.000 Der Momentaufnahmeverweis wird zuletzt aufgelöst; seine Werte überschreiben frühere Duplikate.

Überlegungen und Randfälle

  • Fehlende Zielmomentaufnahme: Wenn der Verweis auf einen Momentaufnahmenamen verweist, der nicht vorhanden ist oder über die Aufbewahrung hinaus archiviert wird, ignoriert der Anbieter den Verweis.
  • Keine transitive Auflösung: Wenn eine referenzierte Momentaufnahme einen Schlüsselwert enthält, der selbst ein Momentaufnahmeverweis ist, wird dieser innere Verweis nicht aufgelöst.
  • Zugriffssteuerung: Das Lesen einer Momentaufnahme über einen Verweis erfordert Snapshot-Leseberechtigungen, ähnlich wie das direkte Lesen einer Momentaufnahme.
  • Aufbewahrung/Archivierung: Seien Sie vorsichtig beim Verweisen auf archivierte Momentaufnahmen, da die App nach Ablauf der Momentaufnahme nicht mehr auf die enthaltene Konfiguration zugreifen kann.

Verfügbare Sprachen

Language Mindestversion /Status
.NET 8.4.0+
Java Arbeiten in Bearbeitung
JavaScript Arbeiten in Bearbeitung
Python Arbeiten in Bearbeitung
Go Arbeiten in Bearbeitung

Nächste Schritte

Tiefere Hintergrundinformationen finden Sie in der Übersicht über Momentaufnahmen.