Les identifiants Snowflake sont utilisés dans des environnements distribués pour générer des identifiants sans collision, 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 indépendamment, 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 :
Prendre 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 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 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 très fréquentée :
Consultez ce dépôt GitHub pour une implémentation Go de la génération d'ID Snowflake
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3