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 executam 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 data center 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

Ao usar 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 fragmento que o processador de registros estava processando. O operador inicia uma nova tarefa de processador de registros para processar esse fragmento. Para obter mais informações, consulte Controle de utilizaçã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, é necessário detectar e resolver a situação. Por exemplo, se o método Worker.run lançar uma exceção, é necessário identificá-la e tratá-la.

Se o próprio aplicativo falhar, é necessário 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 fragmentos automaticamente para processamento. Podem ser os mesmos fragmentos que esses processadores de registros estavam processando antes da falha ou fragmentos 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 fragmentos 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. É necessário configurar as instâncias para iniciar a aplicação do Amazon Kinesis Data Streams na inicialização.