Les identifiants Snowflake sont utilisés dans des environnements distribués pour générer sans collision des identifiants courts et uniques. Contrairement aux méthodes traditionnelles, telles que le recours à une base de données pour la génération d'identifiants ou l'utilisation d'un long UUID de 128 bits, les identifiants Snowflake utilisent du temps et de simples opérations au niveau du bit. Cette technique intelligente permet à chaque microservice de générer des identifiants uniques de manière indépendante, sans avoir besoin d'un système central pour éviter les collisions.
Générer un identifiant Snowflake, c'est comme construire un puzzle avec trois pièces clés. Décomposons-le :
Prenez une chaîne de bits longue de n bits :
Tout d’abord, nous commençons avec une chaîne de bits de longueur n. Celui-ci contiendra toutes les informations nécessaires pour générer un identifiant unique.
Divisez-le en trois sections : i, j et k :
La chaîne de bits est divisée en trois parties, telles que i + j + k = n.
i - La composante temps :
La première partie, i, représente l'heure actuelle. Choisissez une heure de début fixe (également appelée époque), et les bits de i seront calculés en prenant l'heure actuelle en nanosecondes et en soustrayant l'heure de début. Cela garantit que les identifiants les plus récents sont toujours plus grands que les plus anciens.
j - L'ID de la machine :
La deuxième partie, j, est l'identifiant de la machine. Lorsque votre microservice démarre, un identifiant unique (ID de machine) lui est attribué, qui devient la partie j. Cela garantit que les identifiants générés par différentes machines n'entreront pas en collision, même s'ils sont créés exactement au même moment.
k - Le numéro de séquence :
La dernière partie, k, est le numéro de séquence. Il agit comme un compteur qui s'incrémente chaque fois que plusieurs identifiants sont générés dans la même unité de temps. Cela permet de conserver les identifiants uniques, même s'ils sont générés en succession rapide.
Considérez un identifiant flocon de neige comme une étiquette de plat spéciale dans une cuisine occupée :
Consultez ce dépôt GitHub pour une implémentation Go de la génération d'ID Snowflake
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!