Filas justas do Amazon SQS - Amazon Simple Queue Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Filas justas do Amazon SQS

As filas justas do Amazon SQS mitigam automaticamente o impacto de vizinhos ruidosos em filas multilocatárias que contêm mensagens de várias entidades lógicas, como clientes, aplicativos clientes ou tipos de mensagens. Nesses ambientes de filas compartilhadas, uma métrica crítica de desempenho é o tempo de espera, que mede o tempo total que as mensagens passam em uma fila desde a chegada até o processamento. Quando um inquilino cria uma lista de pendências na fila publicando mais mensagens do que o sistema pode suportar, filas justas minimizam o impacto no tempo de permanência de outros inquilinos.

Estado estacionário

O diagrama a seguir ilustra uma fila multilocatária contendo mensagens de quatro inquilinos distintos (identificados como A, B, C e D). A fila opera em um estado estável e não há nenhum acúmulo de mensagens, pois os consumidores recebem mensagens assim que elas aparecem na fila. Todos os inquilinos experimentam tempos de permanência baixos. Nem toda a capacidade do consumidor é totalmente utilizada nesse estado estável.

Uma fila multilocatária que contém mensagens de quatro inquilinos diferentes (representados por A, B, C, D). A fila está em um estado estável, com as mensagens em voo distribuídas uniformemente entre os inquilinos, sem acúmulo e com pouco tempo de permanência para todos os inquilinos.

Impacto barulhento na vizinhança

O impacto de vizinhos ruidosos ocorre quando um inquilino em uma fila de vários locatários cria uma lista de pendências, aumentando o tempo de espera das mensagens para todos os outros inquilinos. Um inquilino pode se tornar um vizinho barulhento enviando um volume maior de mensagens do que outros inquilinos ou quando os consumidores demoram mais para processar as mensagens desse inquilino em particular.

Este diagrama ilustra como o aumento do tráfego do Locatário A cria uma lista de pendências na fila. Os consumidores estão ocupados processando as mensagens apenas do Locatário A, enquanto as mensagens de outros inquilinos aguardam na lista de pendências, resultando em maiores tempos de espera para todos os inquilinos.

O resultado quando o inquilino A aumenta o tráfego e cria uma lista de pendências na fila. As mensagens do inquilino A estão sobre-representadas no estado de voo e as mensagens de outros inquilinos ficam presas na lista de pendências, resultando em um maior tempo de espera.

Mitigação com filas justas

O Amazon SQS detecta vizinhos ruidosos monitorando a distribuição de mensagens entre os inquilinos durante o processamento (o estado “em voo”). Quando um inquilino tem um número desproporcionalmente grande de mensagens em trânsito em comparação com outros, o Amazon SQS identifica esse inquilino como um vizinho barulhento e prioriza a entrega de mensagens para outros inquilinos. Essa abordagem reduz o impacto do tempo de permanência nos outros inquilinos.

Este diagrama ilustra como as filas justas do Amazon SQS abordam o problema do vizinho barulhento. Quando um inquilino (Tenant A) fica barulhento, o Amazon SQS prioriza o retorno de mensagens de outros inquilinos (B, C e D). Essa priorização ajuda a manter baixos tempos de permanência para inquilinos silenciosos, inquilinos B, C e D, enquanto o tempo de espera das mensagens do inquilino A é elevado até que o acúmulo da fila seja consumido sem afetar outros inquilinos.

Uma ilustração de como as filas justas resolvem o problema do vizinho barulhento monitorando o estado de voo. Quando o inquilino A fica barulhento, o SQS tem como objetivo retornar mensagens de outros inquilinos (B, C, D) para que as mensagens em voo sejam distribuídas uniformemente entre os inquilinos. O tempo de espera dos inquilinos (B, C, D) permanecerá baixo, enquanto o tempo de espera das mensagens do inquilino A será elevado até que o acúmulo da fila seja consumido.
nota

O Amazon SQS não limita a taxa de consumo por inquilino. Ele permite que os consumidores recebam mensagens de inquilinos vizinhos barulhentos quando há capacidade de consumo e a fila não tem outras mensagens para retornar. Assim como as filas padrão do Amazon SQS, as filas justas permitem uma taxa de transferência praticamente ilimitada, e não há limites para o número de inquilinos que você poderia ter em sua fila.

Diferença com as filas FIFO

As filas FIFO mantêm uma ordem rígida, limitando o número de mensagens em voo de cada inquilino. Embora isso evite vizinhos barulhentos, limita a produtividade de cada inquilino. As filas justas são projetadas para cenários de vários inquilinos em que alta produtividade, baixo tempo de permanência e alocação justa de recursos são prioridades. Filas justas permitem que vários consumidores processem mensagens do mesmo inquilino simultaneamente, ajudando todos os inquilinos a manter tempos de espera consistentes.

Usando filas justas

Seus produtores de mensagens podem adicionar um identificador de inquilino definindo um MessageGroupId em uma mensagem de saída:

// Send message with tenant identifier SendMessageRequest request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody(messageBody) .withMessageGroupId("tenant-123"); // Tenant identifier sqs.sendMessage(request);

A capacidade de imparcialidade será aplicada automaticamente em todas as filas padrão do Amazon SQS para mensagens com a propriedade. MessageGroupId Ele não exige nenhuma alteração no código do consumidor, não tem impacto na latência da API e não vem com nenhuma limitação de taxa de transferência.

Métricas de filas CloudWatch justas

O Amazon SQS fornece CloudWatch métricas adicionais para ajudar você a monitorar a mitigação do impacto de vizinhos ruidosos. Como exemplo, você pode comparar Approximate..InQuietGroups métricas com métricas padrão em nível de fila. Durante picos de tráfego para um locatário específico, as métricas gerais do nível da fila podem revelar o aumento dos atrasos ou a idade das mensagens mais antigas. No entanto, analisando os grupos silenciosos isoladamente, você pode identificar que a maioria dos grupos de mensagens ou inquilinos que não fazem barulho não são afetados.

Abaixo, você pode encontrar um exemplo em que a métrica padrão do acúmulo de filas (ApproximateNumberOfMessagesVisible) aumenta devido a um inquilino ruidoso, enquanto o acúmulo de inquilinos não ruidosos () permanece baixo. ApproximateNumberOfMessagesVisibleInQuietGroups

Graph showing queue backlog spike for noisy groups while quiet groups remain low.

Para obter uma lista completa das CloudWatch métricas do Amazon SQS e suas descrições, consulte CloudWatch métricas do Amazon SQS.