Agora discutimos uma arquitetura de microsserviço para o problema, devido à escalabilidade necessária do aplicativo em produção. Também para fins de desenvolvimento, isso é crucial, porque Task1 e Task2 foram recentemente adicionados novos recursos/parâmetros e escalam de maneira diferente no desenvolvimento.
Isso é exatamente o que uma plataforma de processamento de fluxo está fazendo de bom. Eu recomendo usar um sistema como Apache Kafka ou Apache Pulsar para este problema.
Deve haver pelo menos dois serviços diferentes para Task1 e Task2 e talvez até mesmo um para o controle de estado real de iteração/simulação?
Task1 e Task2 são chamados de processadores de fluxo , eles lêem (se inscrevem em) um tópico , fazendo algumas operações/transformações e gravando (publicando) em outro tópico .
A principal questão aqui é quais são os argumentos para uma arquitetura de microsserviço devido ao provável gargalo de comunicação/rede? A única maneira de acelerar isso é gerar todos os dados necessários para a tarefa de simulação na memória e mantê-los lá o tempo todo, para evitar o gargalo da rede?
Novamente, este é exatamente o problema que um sistema como Apache Kafka ou Apache Pulsar está fazendo bem. Para escalar grava e lê em um sistema de processamento de fluxo, você pode particionar seus tópicos .