2.6 KiB
title | id | date | full_link | short_description | aka | tags | |
---|---|---|---|---|---|---|---|
Shuffle-sharding | shuffle-sharding | 2020-03-04 | Uma técnica para atribuir requisições para filas que proporciona melhor isolamento do que efetuar a operação módulo (resto da divisão) do _hash_ da requisição pelo número de filas. |
|
Uma técnica para atribuir requisições para filas que proporciona melhor isolamento do que efetuar a operação módulo (resto da divisão) do hash da requisição pelo número de filas.
Nos preocupamos frequentemente em isolar diferentes fluxos de requisições uma das outras, de modo que um fluxo de alta intensidade não afete um fluxo de baixa intensidade. Uma forma simples de colocar requisições em fila é gerar um hash baseado em características da requisição, efetuar a operação módulo, ou resto da divisão, do hash calculado pelo número de filas, para ter o índice da fila à ser usada. A função hash usa como entrada características da requisição que se alinha com o fluxo. Por exemplo, na Internet isso é frequentemente a tupla de 5 elementos de endereço de origem e destino, protocolo, e portas de origem e destino.
Esse simples esquema baseado em hash tem a propriedade de que qualquer fluxo de alta intensidade irá tirar todos fluxos de baixa intensidade dessa mesma fila. Fornecer um bom isolamento para um grande número de fluxos requer um grande número de filas, o que é problemático. Shuffle-sharding é uma técnica mais ágil que pode fazer um trabalho melhor de isolar fluxos de baixa intensidade dos fluxos de alta intensidade. A terminologia do shuffle-sharding faz uso da metáfora de distribuição da mão de cartas; cada fila é uma carta metafórica. A técnica de shuffle-sharding começa fazendo hashing das características de identificação do fluxo da solicitação, para produzir um valor hash com dezenas ou mais bits. Em seguida, o valor hash é usado como uma fonte de entropia para embaralhar o baralho e dar uma mão de cartas (filas). Todas as filas tratadas são examinadas e a solicitação é colocada em uma das filas examinadas com menor tamanho. Com um número modesto de cartas, não custa examinar todas as cartas distribudas, em um dado fluxo de baixa intensidade que tem uma boa chance de se esquivar dos efeitos de um dado fluxo de alta intensidade. Com um número maior de cartas é caro examinar as filas tratadas e mais dificil para que os fluxos de baixa intensidade se esquivem do efeitos coletivos de um conjunto de fluxos de alta intensidade. Assim, o tamanho da mão do baralho deve ser escolhido criteriosamente.