Snowflake IDs são usados em ambientes distribuídos para gerar IDs curtos e exclusivos livres de colisões. Ao contrário dos métodos tradicionais, como depender de um banco de dados para geração de ID ou usar um UUID longo de 128 bits, os IDs do Snowflake usam tempo e operações bit a bit simples. Essa técnica inteligente permite que cada microsserviço gere IDs exclusivos de forma independente, sem a necessidade de um sistema central para evitar colisões.
Gerar um ID do Snowflake é como construir um quebra-cabeça com três peças principais. Vamos decompô-lo:
Pegue uma string de n bits de comprimento:
Primeiro, começamos com uma sequência de bits de comprimento n. Isso conterá todas as informações necessárias para gerar um ID exclusivo.
Divida-o em três seções: i, j e k:
A sequência de bits é dividida em três partes, de modo que i j k = n.
i - O componente de tempo:
A primeira parte, i, representa a hora atual. Escolha um horário de início fixo (também conhecido como época) e os bits de i serão calculados tomando o horário atual em nanossegundos e subtraindo o horário de início. Isso garante que os IDs mais recentes sejam sempre maiores que os mais antigos.
j - O ID da máquina:
A segunda parte, j, é o identificador da máquina. Quando seu microsserviço é iniciado, é atribuído a ele um ID exclusivo (ID da máquina), que se torna a parte j. Isso garante que IDs gerados por máquinas diferentes não colidirão, mesmo que sejam criados exatamente no mesmo momento.
k - O número de sequência:
A última parte, k, é o número de sequência. Ele atua como um contador que aumenta sempre que vários IDs são gerados na mesma unidade de tempo. Isso mantém os IDs únicos, mesmo que sejam gerados em rápida sucessão.
Pense em um Snowflake ID como uma etiqueta de prato especial em uma cozinha movimentada:
Verifique este repositório GitHub para uma implementação Go da geração de ID do Snowflake
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3