Comportamento de simultaneidade do Lambda e de filas FIFO do Amazon SQS
Ao usar uma fila FIFO (primeiro entrar, primeiro a sair) com o Lambda, você pode garantir o processamento ordenado de mensagens em cada grupo de mensagens. A função do Lambda não executará várias instâncias para o mesmo grupo de mensagens simultaneamente, mantendo assim a ordem. No entanto, é possível aumentar a escala verticalmente para lidar com vários grupos de mensagens em paralelo, garantindo o processamento eficiente da workload da fila. Os seguintes pontos descrevem o comportamento das funções do Lambda ao processar mensagens de uma fila FIFO do Amazon SQS em relação aos IDs de grupos de mensagens:
-
Instância única por grupo de mensagens: a qualquer momento, somente uma instância do Lambda processará mensagens de um ID de grupo de mensagens específico. Isso garante que as mensagens dentro do mesmo grupo sejam processadas em ordem, mantendo a integridade da sequência FIFO.
-
Processamento simultâneo de diferentes grupos: o Lambda pode processar simultaneamente mensagens de diferentes IDs de grupos de mensagens usando várias instâncias. Isso significa que, enquanto uma instância da função do Lambda está processando mensagens de um ID de grupo de mensagens, outras instâncias podem processar simultaneamente mensagens de outros IDs de grupos de mensagens, utilizando os recursos de simultaneidade do Lambda para processar vários grupos em paralelo.
Agrupamento de mensagens de fila FIFO
As filas FIFO garantem que as mensagens sejam processadas na ordem exata em que foram enviadas. Eles usam um ID de grupo de mensagens para agrupar mensagens que devem ser processadas sequencialmente.
As mensagens dentro do mesmo grupo de mensagens são processadas em ordem, e somente uma mensagem de cada grupo é processada por vez para manter essa ordem.
Simultaneidade do Lambda com filas FIFO
Depois de criar sua fila, você pode enviar uma mensagem para ela.
Quando você configura uma função do Lambda para processar mensagens de uma fila FIFO do Amazon SQS, o Lambda respeita as garantias de ordenação fornecidas pela fila FIFO. Os pontos a seguir descrevem o comportamento das funções do Lambda em termos de simultaneidade e escalabilidade ao processar mensagens de uma fila FIFO do Amazon SQS ao usar IDs de grupos de mensagens.
-
Simultaneidade em grupos de mensagens: somente uma instância do Lambda processa mensagens para determinado ID de grupo de mensagens por vez. Isso garante que as mensagens dentro de um grupo sejam processadas sequencialmente.
-
Escalabilidade e vários grupos de mensagens: embora o Lambda possa aumentar a escala verticalmente para processar mensagens de forma simultânea, essa escalabilidade ocorre em diferentes grupos de mensagens. Se você tiver vários grupos de mensagens, o Lambda poderá processar vários grupos em paralelo, com cada grupo sendo tratado por uma instância separada do Lambda.
Consulte mais informações em Scaling and concurrency in Lambda no AWS Lambda Operator Guide.
Exemplos de casos de uso
Suponha que a fila FIFO receba mensagens com o mesmo ID de grupo de mensagens e a função do Lambda tenha um alto limite de simultaneidade (até 1.000).
Se uma mensagem do ID do grupo “A” estiver sendo processada e outra mensagem do ID do grupo “A” chegar, a segunda mensagem não acionará uma nova instância do Lambda até que a primeira mensagem seja totalmente processada.
No entanto, se as mensagens dos IDs de grupo “A” e “B” chegarem, ambas poderão ser processadas simultaneamente por instâncias do Lambda separadas.