Resiliência no Amazon Kinesis Data Streams - Amazon Kinesis Data Streams

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á.

Resiliência no Amazon Kinesis Data Streams

A infraestrutura AWS global é construída em torno de AWS regiões e zonas de disponibilidade. AWS As regiões fornecem várias zonas de disponibilidade fisicamente separadas e isoladas, conectadas a redes de baixa latência, alta taxa de transferência e alta redundância. Com as Zonas de Disponibilidade, é possível projetar e operar aplicações e bancos de dados que executem o failover automaticamente entre as Zonas de Disponibilidade sem interrupção. As zonas de disponibilidade são mais altamente disponíveis, tolerantes a falhas e escaláveis que uma ou várias infraestruturas de datacenter tradicionais.

Para obter mais informações sobre AWS regiões e zonas de disponibilidade, consulte Infraestrutura AWS global.

Além da infraestrutura AWS global, o Kinesis Data Streams oferece vários recursos para ajudar a suportar suas necessidades de resiliência e backup de dados.

Recuperação de desastres no Amazon Kinesis Data Streams

Quando você usa uma aplicação do Amazon Kinesis Data Streams para processar dados de um fluxo, podem ocorrer falhas nos seguintes níveis:

  • Um processador de registros pode falhar

  • Um operador pode falhar ou a instância do aplicativo que instanciou o operador pode falhar

  • Uma EC2 instância que esteja hospedando uma ou mais instâncias do aplicativo pode falhar

Falha no processador de registros

O trabalhador invoca métodos do processador de registros usando tarefas Java ExecutorService. Se uma tarefa falhar, o operador manterá o controle do estilhaço que o processador de registros estava processando. O operador inicia uma nova tarefa de processador de registros para processar esse estilhaço. Para obter mais informações, consulte Limitação de leitura.

Falha no funcionário ou no aplicativo

Se um operador (ou uma instância) da aplicação do Amazon Kinesis Data Streams falhar, você deverá detectar e resolver a situação. Por exemplo, se o método Worker.run lançar uma exceção, você deverá identificá-la e tratá-la.

Se o próprio aplicativo falhar, você deverá detectar isso e reiniciá-lo. Quando o aplicativo é iniciado, ele instancia um novo operador, que, por sua vez, instancia novos processadores de registros aos quais são atribuídos estilhaços automaticamente para processamento. Podem ser os mesmos estilhaços que esses processadores de registros estavam processando antes da falha ou estilhaços novos para esses processadores.

Em uma situação em que o trabalhador ou o aplicativo falham, a falha não é detectada e há outras instâncias do aplicativo em execução em outras EC2 instâncias, os trabalhadores dessas outras instâncias lidam com a falha. Eles criam processadores de registro adicionais para processar os estilhaços que não estão mais sendo processados pelo operador com falha. A carga nessas outras EC2 instâncias aumenta de acordo.

O cenário descrito aqui pressupõe que, embora o trabalhador ou o aplicativo tenha falhado, a EC2 instância de hospedagem ainda está em execução e, portanto, não é reiniciada por um grupo do Auto Scaling.

Falha na EC2 instância da Amazon

Recomendamos que você execute as EC2 instâncias do seu aplicativo em um grupo de Auto Scaling. Dessa forma, se uma das EC2 instâncias falhar, o grupo Auto Scaling iniciará automaticamente uma nova instância para substituí-la. Você deve configurar as instâncias para iniciar a aplicação do Amazon Kinesis Data Streams na inicialização.