Eine Snowflake ID ist ein Verfahren zur Erzeugung eindeutiger IDs, das häufig in verteilten Systemen eingesetzt wird. Zeitinformationen, Knoteninformationen und Sequenzdaten werden zu einer ganzzahligen ID kombiniert.
Im Gegensatz zu automatisch inkrementierten Datenbank-IDs können Snowflake IDs unabhängig auf mehreren Servern und in mehreren Diensten erzeugt werden.
Das Grundprinzip besteht darin, Zeitstempel, Knotenkennung und Sequenznummer in einer Ganzzahl zu kombinieren. Unterschiedliche Knotenkennungen für unterschiedliche Instanzen reduzieren das Kollisionsrisiko.
Die Worker ID identifiziert Server, Container oder Serviceinstanzen. Die Process ID unterscheidet mehrere Prozesse oder ID-Generatoren innerhalb desselben Workers.
In Produktionssystemen sollte jede aktive Generatorinstanz eine eindeutige Kombination der Knotenkennungen verwenden.
Snowflake-Implementierungen verwenden häufig die vergangene Zeit seit einer festgelegten Epoche anstelle des vollständigen Unix-Zeitstempels. Die Epoche beeinflusst den darstellbaren Zeitraum.
Dieses Tool verwendet standardmäßig den 01.01.2020 00:00:00 und ermöglicht eine individuelle Einstellung.
Die Eindeutigkeit hängt von Zeit, Knotenkennungen und Sequenzmechanismus ab. Worker ID und Process ID müssen in Produktionssystemen sorgfältig verwaltet werden.
Auch eine rückwärts laufende Systemuhr kann je nach Implementierung zu Wartezeiten oder Fehlern führen.
Kommentare 0