Implemente a tolerância a falhas no Managed Service for Apache Flink - Managed Service for Apache Flink

Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.

Implemente a tolerância a falhas no Managed Service for Apache Flink

O ponto de verificação é o método usado para implementar a tolerância a falhas no Amazon Managed Service for Apache Flink. Um ponto de verificação é um backup atualizado de um aplicativo em execução que é usado para se recuperar imediatamente de uma interrupção ou failover inesperado do aplicativo.

Para obter detalhes sobre pontos de verificação em aplicativos do Apache Flink, consulte Pontos de verificação na Documentação do Apache Flink.

Um snapshot é um backup do estado do aplicativo criado e gerenciado manualmente. Os snapshots permitem que você restaure seu aplicativo para um estado anterior chamando UpdateApplication. Para obter mais informações, consulte Gerenciar backups de aplicativos usando snapshots.

Se o ponto de verificação estiver habilitado para seu aplicativo, o serviço fornecerá tolerância a falhas criando e carregando backups dos dados do aplicativo no caso de reinicializações inesperadas do aplicativo. Essas reinicializações inesperadas de aplicativos podem ser causadas por reinicializações inesperadas de tarefas, falhas de instância etc. Isso dá ao aplicativo a mesma semântica da execução sem falhas durante essas reinicializações.

Se os snapshots forem habilitados para o aplicativo e configurados usando o ApplicationRestoreConfiguration do aplicativo, o serviço fornecerá uma semântica de processamento exatamente uma vez durante as atualizações do aplicativo ou durante a escalabilidade ou a manutenção relacionada ao serviço.

Configure pontos de verificação no Managed Service for Apache Flink

Você pode configurar o comportamento de ponto de verificação do seu aplicativo. Você pode definir se ele persiste no estado de ponto de verificação, com que frequência ele salva seu estado nos pontos de verificação e o intervalo mínimo entre o final de uma operação de ponto de verificação e o início de outra.

Você define as seguintes configurações usando as operações de API CreateApplication ou UpdateApplication:

  • CheckpointingEnabled: indica se o ponto de verificação está ativado no aplicativo.

  • CheckpointInterval: contém o tempo em milissegundos entre as operações do ponto de verificação (persistência).

  • ConfigurationType: defina esse valor para DEFAULT para usar o comportamento do ponto de verificação padrão. Defina esse valor para CUSTOM para configurar outros valores.

    nota

    O comportamento padrão do ponto de verificação é o seguinte:

    • CheckpointingEnabled: true

    • CheckpointInterval: 60000

    • MinPauseBetweenCheckpoints: 5000

    Se ConfigurationType for definido como DEFAULT, os valores anteriores serão usados, mesmo se eles estiverem definidos de outra forma usando AWS Command Line Interface, ou definindo os valores no código do aplicativo.

    nota

    Para o Flink 1.15 em diante, o Managed Service for Apache Flink usará stop-with-savepoint durante a criação automática de instantâneos, ou seja, a atualização, a escalabilidade ou a parada do aplicativo.

  • MinPauseBetweenCheckpoints: o tempo mínimo em milissegundos entre o final de uma operação de ponto de verificação e o início de outra. Definir esse valor impede o aplicativo de verificar continuamente quando uma operação de ponto de verificação levar mais tempo do que CheckpointInterval.

Analise os exemplos de API de ponto de verificação

Esta seção inclui exemplos de solicitações de ações de API para configurar pontos de verificação para um aplicativo. Para obter informações sobre como usar um arquivo JSON como entrada de uma ação da API, consulte Exemplo de código de API para o Managed Service for Apache Flink.

Configure o ponto de verificação para um novo aplicativo

O exemplo de solicitação a seguir para a ação CreateApplication configura o ponto de verificação quando você está criando um aplicativo:

{ "ApplicationName": "MyApplication", "RuntimeEnvironment":"FLINK-1_19", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "FlinkApplicationConfiguration": { "CheckpointConfiguration": { "CheckpointingEnabled": "true", "CheckpointInterval": 20000, "ConfigurationType": "CUSTOM", "MinPauseBetweenCheckpoints": 10000 } } }

Desative o ponto de verificação para um novo aplicativo

O exemplo de solicitação a seguir para a ação CreateApplication desativa o ponto de verificação quando você está criando um aplicativo:

{ "ApplicationName": "MyApplication", "RuntimeEnvironment":"FLINK-1_19", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "FlinkApplicationConfiguration": { "CheckpointConfiguration": { "CheckpointingEnabled": "false" } } }

Configure o ponto de verificação para um aplicativo existente

O exemplo de solicitação a seguir para a ação UpdateApplication configura o ponto de verificação para um aplicativo existente:

{ "ApplicationName": "MyApplication", "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "CheckpointingEnabledUpdate": true, "CheckpointIntervalUpdate": 20000, "ConfigurationTypeUpdate": "CUSTOM", "MinPauseBetweenCheckpointsUpdate": 10000 } } } }

Desative o ponto de verificação para um aplicativo existente

O exemplo de solicitação a seguir para a ação UpdateApplication desativa o ponto de verificação para um aplicativo existente:

{ "ApplicationName": "MyApplication", "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "CheckpointingEnabledUpdate": false, "CheckpointIntervalUpdate": 20000, "ConfigurationTypeUpdate": "CUSTOM", "MinPauseBetweenCheckpointsUpdate": 10000 } } } }