SnowFlake

Durante a formação dos flocos de neve, diferentes ramos estruturais são formados, portanto não há dois flocos iguais na natureza.

Exatamente igual a esse fenômeno natural, esta observação interessante inspirou o algoritmo de geração de IDs distribuídos SnowFlake de código aberto desenvolvido pelo Twitter.

Em aplicações com milhões ou até dezenas de milhões de registros, o armazenamento em um único servidor e banco de dados é um tremendo desafio a enfrentar. A medida que a a demanda cresce e o produto continua a se desenvolver, esse problema é um dos principais gargalos de processamento.

Por exemplo, se centenas de milhões de dados do google estiverem todos armazenados em uma tabela em um servidor de banco de dados, ele definitivamente não será capaz de atender aos requisitos de desempenho.

Nessas aplicações o armazenamento disperso de diferentes dados em diferentes servidores de banco de dados é a principal solução para que aplicações com milhões ou até dezenas de milhões de registros possam ser utilizadas no dia a dia.

O SnowFlake é usado para gerar IDs exclusivos em um ambiente distribuído de alta simultaneidade e pode gerar milhões de IDs exclusivos por segundo.

IDs gerados com esse algoritmo tem 64bits, com base na data e hora e no incremento automático de um número de sequencial baseado mesmo na data e hora, garantido que o ID aumente de maneira ordenada.

A maior parte das implementações desse algoritmo não depende de bibliotecas ou middleware de terceiros, tem pouca complexidade, tendo pouca aderência na implementação em projetos existentes. Também tem uma alta performance pois é executado em memória.

O algoritmo nativo do Snowflake é totalmente dependente do tempo, gerando IDs duplicados se o relógio for revertido.

A estrutura do SnowFlake nativo é dividida em quatro partes:

  1. Bit alto 1 é fixado em 0, indicando um número positivo
  2. Tempo data/hora em milissegundos de 41 bits
  3. Número de máquina de 10 bits, suporta até 1024 nós
  4. Sequência de incremento automático de 12 bits, suportando até 4096 IDs únicos por ms.
Sobre Nicolau 18 Artigos
Fuçando o desenvolvimento de software desde 2013, sou da turma do código aberto, vivo pesquisando e garimpando a segurança na web. Sommelier de sucos e chocólatra de carteirinha. Hic svnt dracones.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*