O Amazon Managed Service para Apache Flink (Amazon MSF) era conhecido anteriormente 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
Um UUID é usado na operação na qual o Flink mapeia um ponto de salvamento de volta para um operador individual. Definir um UUID específico 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