Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
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á.
Obtenha prontidão de produção para seu serviço gerenciado para aplicativos Apache Flink
Essa é uma coleção de aspectos importantes da execução de aplicativos de produção no Managed Service for Apache Flink. Não é uma lista exaustiva, mas sim o mínimo que você deve prestar atenção antes de colocar um aplicativo em produção.
Teste a carga de seus aplicativos
Alguns problemas com aplicativos só se manifestam sob carga pesada. Vimos casos em que os aplicativos pareciam saudáveis, mas um evento operacional amplificou substancialmente a carga sobre o aplicativo. Isso pode acontecer de forma totalmente independente do próprio aplicativo. Se a fonte de dados ou o coletor de dados ficar indisponível por algumas horas, o aplicativo Flink não poderá progredir. Quando esse problema é corrigido, há um acúmulo de dados não processados que se acumulam, o que pode esgotar completamente os recursos disponíveis. A carga pode então amplificar bugs ou problemas de desempenho que não haviam surgido antes.
Portanto, é essencial que você execute testes de carga adequados para aplicativos de produção. As perguntas que devem ser respondidas durante esses testes de carga incluem:
O aplicativo é estável sob alta carga sustentada?
O aplicativo ainda pode salvar em um ponto de salvamento sob carga máxima?
Quanto tempo leva para processar um backlog de 1 hora? E por quanto tempo durante 24 horas (dependendo da retenção máxima dos dados no fluxo)?
O throughput do aplicativo aumenta quando o aplicativo é escalado?
Ao consumir de um fluxo de dados, esses cenários podem ser simulados produzindo no fluxo por algum tempo. Em seguida, inicie o aplicativo e faça com que ele consuma dados desde o início dos tempos. Por exemplo, use uma posição inicial de TRIM_HORIZON
no caso de um stream de dados do Kinesis.
Defina o paralelismo máximo
O paralelismo máximo define o paralelismo máximo para o qual um aplicativo com estado pode ser escalado. Isso é definido quando o estado é criado pela primeira vez e não há como escalar o operador além desse máximo sem descartar o estado.
O paralelismo máximo é definido quando o estado é criado pela primeira vez.
Por padrão, o paralelismo máximo é definido como:
128, se o paralelismo for <= 128
MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)
: se o paralelismo for > 128
Se você planeja escalar seu aplicativo > 128 paralelismo, você deve definir explicitamente o paralelismo máximo.
Você pode definir o paralelismo máximo no nível do aplicativo, com um único env.setMaxParallelism(x)
operador. A menos que especificado de outra forma, todos os operadores herdam o paralelismo máximo do aplicativo.
Para obter mais informações, consulte Definindo o paralelismo máximo
Defina um UUID para todos os operadores
A UUID é usado na operação na qual o Flink mapeia um ponto de salvamento de volta para um operador individual. Definir um específico UUID para cada operador fornece um mapeamento estável para a restauração do processo de ponto de salvamento.
.map(...).uid("my-map-function")
Para obter mais informações, consulte Lista de verificação de prontidão de produção