O Flink é um dos mecanismos de processamento de fluxo mais ativos atualmente, com atualizações de versão relativamente frequentes. Para usar novos recursos e capacidades, atualize seu job para uma versão mais recente. Este tópico explica como atualizar a versão do mecanismo para jobs do Realtime Compute for Apache Flink.
Observações importantes
Antes de lançar uma nova versão do mecanismo, o Realtime Compute for Apache Flink executa testes extensivos de compatibilidade. Em geral, as atualizações entre versões secundárias dentro da mesma versão principal são compatíveis. Já as atualizações entre versões principais não têm garantia de compatibilidade. Para obter detalhes sobre as versões do mecanismo e a compatibilidade de savepoints entre versões do Flink, consulte Engine version numbers and their meanings e a Compatibility Table.
Ao alternar as versões do job, observe o seguinte:
O estado é compatível durante atualizações de versões secundárias. Use checkpoints do sistema ou snapshots de job criados antes da alternância de versão. Por exemplo, na atualização de vvr-4.0.15-flink-1.13 para vvr-4.0.18-flink-1.13.
O estado não é compatível durante alternâncias de versões principais. Reinicie o job sem estado (stateless). Por exemplo, na atualização de vvr-4.0.15-flink-1.13 para vvr-6.0.2-flink-1.15.
As versões das dependências relacionadas ao Flink no job SQL ou DataStream devem corresponder à versão do Flink selecionada.
A partir do Flink 1.13.0, a comunidade adotou o BlinkPlanner — contribuído pela alibaba — como o SQL Planner padrão. Isso introduz algumas diferenças em relação às versões anteriores. Para mais informações, consulte o Apache Flink 1.13.0 release announcement. Portanto, ao migrar de uma versão comunitária do Flink anterior à 1.13.0 para a VVR 4.0 (baseada no Flink 1.13.0) ou superior no Realtime Compute for Apache Flink, podem surgir incompatibilidades de sintaxe e de API.
Procedimento de atualização
Etapa 1: salve o job e implante um novo job
Para garantir a estabilidade do job, clone o job existente, crie um novo idêntico e, em seguida, atualize a versão do mecanismo nele.
SQL
Acesse o Realtime Compute console e clique em Console na coluna Actions do workspace de destino.
-
salve o job SQL original.
Na página , abra o rascunho do job de destino.
Clique em Save As acima do nome do job.
Agora, insira um Name, selecione uma Location e clique em Save.
-
Altere a versão do mecanismo do novo job.
Ao utilizar uma nova versão, escolha uma versão STABLE ou RECOMMENDED. Essas versões corrigem bugs e problemas conhecidos de outras versões, oferecem os recursos mais recentes e proporcionam maior garantia de estabilidade.
Agora, clique em Configurations à direita do editor do novo job. Altere a Engine Version e clique em Deploy no canto superior direito.
-
Na página , clique em nome do job de destino. Na aba Configuration, em Basic, e verifique se a alteração da versão do job implantado foi bem-sucedida.
e verifique o campo Engine Version e confirme se exibe a versão de destino (por exemplo,
vvr-8.0.9-flink-1.17).
DataStream
Acesse o Realtime Compute console e clique em Console na coluna Actions do workspace de destino.
-
salve o job DataStream original e selecione a nova versão do mecanismo para o novo job.
Ao utilizar uma nova versão, escolha uma versão STABLE ou RECOMMENDED. Essas versões corrigem bugs e problemas conhecidos de outras versões, oferecem os recursos mais recentes e proporcionam maior garantia de estabilidade.
Na página , abra o job de destino.
Agora, clique em Clone no canto superior direito.
Atualize o Deployment Name e selecione a nova Engine Version.
Clique em Deploy.
Etapa 2: salve o estado do job
Na página , clique em job de destino. Na aba State nos detalhes do job, e visualize os conjuntos de estado do job. Para mais informações, consulte View state generation overview.
-
Se o job executar computação com estado (stateful), avalie se é possível reutilizar o estado durante a atualização.
Antes de atualizar, crie manualmente um snapshot do job para reverter rapidamente caso ocorram problemas. Para instruções, consulte Manually create a job snapshot.
ImportanteEm geral, as atualizações entre versões secundárias dentro da mesma versão principal são compatíveis. As atualizações entre versões principais não têm garantia de compatibilidade. Se forem compatíveis, a nova versão do mecanismo pode ler snapshots gerados pela versão antiga, mas não necessariamente o inverso.
A partir da VVR 6.x, o sistema suporta dois formatos de snapshot: nativo e padrão. A geração do formato nativo é mais rápida, enquanto o formato padrão oferece melhor compatibilidade. Ao atualizar para uma versão secundária superior dentro da mesma versão principal, use o formato nativo. Ao atualizar para uma versão principal superior, use o formato padrão.
Se o job for stateless, prossiga para a próxima etapa.
(Opcional) Etapa 3: Pare o job original
Na página , clique em Stop na coluna Actions do job original. Para mais detalhes, consulte Stop a job.
Se as gravações downstream forem idempotentes ou se o negócio tolerar dados duplicados, considere executar os jobs antigo e novo simultaneamente.
Etapa 4: Inicie o novo job
Se o job for stateful: em Resume Mode, selecione Specific State e escolha o snapshot criado a partir do job original.
Se o job for stateless, selecione Initial Mode para iniciar o novo job.
Para mais detalhes, visualize as etapas detalhadas de inicialização e consulte Start a job.
Etapa 5: Monitore o comportamento em produção e exclua o job original
Normalmente, se o job atualizado iniciar com sucesso e concluir seu primeiro checkpoint do sistema, a atualização será considerada preliminarmente bem-sucedida. No entanto, verifique a precisão dos dados do negócio para garantir a integridade total da atualização.
Primeiro, confirme que o job executa normalmente e que os dados estão corretos; em seguida, exclua manualmente o snapshot e o job anteriores à atualização. Para instruções sobre como excluir snapshots, consulte Manually delete a specified job snapshot.
Rollback após falha na atualização
Se o job falhar ao iniciar ou produzir dados incorretos após a atualização, pare imediatamente o job, reverta para a versão do mecanismo anterior à atualização e restaure as operações com o snapshot salvo antes da atualização. Além disso, envie um ticket para relatar o problema.
Se não for possível monitorar todo o processo de atualização, e configure alertas de falha de job para receber notificações imediatas em caso de anomalias e evitar impactos no negócio. Para instruções, consulte Configure Monitoring.