Snowflake ID est une méthode de génération d'identifiants uniques couramment utilisée dans les systèmes distribués. Elle combine des informations temporelles, des identifiants de nœud et une séquence dans un identifiant entier.
Contrairement aux identifiants auto-incrémentés d'une base de données, les Snowflake ID peuvent être générés indépendamment sur plusieurs serveurs et services.
Le principe consiste à combiner un horodatage, des identifiants de nœud et un numéro de séquence dans un entier. Des identifiants différents pour chaque instance réduisent le risque de collision.
Worker ID identifie un serveur, un conteneur ou une instance de service. Process ID distingue plusieurs processus ou générateurs d'ID sur le même Worker.
En production, chaque générateur actif doit utiliser une combinaison d'identifiants de nœud unique.
Les implémentations Snowflake utilisent souvent le temps écoulé depuis une date de référence plutôt que l'horodatage Unix complet. Cette époque influence la plage temporelle représentable.
Cet outil utilise par défaut le 2020-01-01 00:00:00 et permet de définir une autre date.
L'unicité dépend de l'heure, des identifiants de nœud et du mécanisme de séquence. Les valeurs Worker ID et Process ID doivent être correctement gérées.
Un recul de l'horloge système peut également provoquer une attente ou une erreur selon l'implémentation utilisée.
Commentaires 0