Los ID de copos de nieve se utilizan en entornos distribuidos para generar ID únicos, breves y sin colisiones. A diferencia de los métodos tradicionales, como confiar en una base de datos para la generación de ID o usar un UUID largo de 128 bits, los ID de Snowflake utilizan tiempo y operaciones bit a bit simples. Esta técnica inteligente permite que cada microservicio genere identificaciones únicas de forma independiente, sin necesidad de un sistema central para evitar colisiones.
Generar una ID de Snowflake es como construir un rompecabezas con tres piezas clave. Analicémoslo:
Tome una cadena de bits de n bits de longitud:
Primero, comenzamos con una cadena de bits de longitud n. Este contendrá toda la información necesaria para generar una identificación única.
Divídelo en tres secciones: i, j y k:
La cadena de bits se divide en tres partes, de modo que i j k = n.
i - El componente de tiempo:
La primera parte, i, representa la hora actual. Elija una hora de inicio fija (también conocida como época) y los bits de i se calcularán tomando la hora actual en nanosegundos y restando la hora de inicio. Esto garantiza que los ID más nuevos sean siempre más grandes que los más antiguos.
j - ID de la máquina:
La segunda parte, j, es el identificador de la máquina. Cuando se inicia su microservicio, se le asigna una ID única (ID de máquina), que se convierte en la parte j. Esto garantiza que las identificaciones generadas por diferentes máquinas no colisionen, incluso si se crean exactamente en el mismo momento.
k - El número de secuencia:
La última parte, k, es el número de secuencia. Actúa como un contador que aumenta cada vez que se generan múltiples ID dentro de la misma unidad de tiempo. Esto mantiene los ID únicos, incluso si se generan en rápida sucesión.
Piense en una identificación de Snowflake como una etiqueta de plato especial en una cocina ocupada:
Consulte este repositorio de GitHub para ver una implementación Go de la generación de ID de Snowflake
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3