Cluster Nodejs: existem desvantagens?

5

Eu estava lendo um pouco sobre clusters em nodejs e, em todos os casos, era trivial agrupar o aplicativo. Na verdade, foi tão fácil que comecei a me perguntar: há casos em que eu não usei clustering?

    
por julianomontini 05.01.2018 / 01:21
fonte

1 resposta

5

Várias desvantagens ou problemas possíveis para os quais você precisa codificar:

  1. As sessões de login devem ser armazenadas em um banco de dados central (como redis) que todos os clusters podem acessar ou as conexões devem ser fixadas para que um determinado cliente retorne ao mesmo processo de cluster sempre.

  2. Outro estado do lado do servidor é mantido separadamente por cada processo em cluster ou precisa ser movido para um servidor de banco de dados separado que todos os processos em cluster podem acessar.

  3. As conexões Socket.io não funcionarão corretamente, a menos que você force o webSocket desde o início ou torne as conexões mais difíceis.

  4. Para executar o socket.io em um cluster, você precisará executar o adaptador em cluster que pode encontrar a conexão correta em qualquer instância em cluster à qual esteja conectado.

  5. Atualizações do estado compartilhado em um processo separado não são imunes a condições de corrida quando você tem vários processos node.js, todos eles podem acessá-lo de forma apropriada para evitar condições de corrida.

  6. O uso do depurador pode ser significativamente mais complicado, principalmente ao tentar rastrear atividades em várias solicitações sucessivas (porque cada solicitação pode acabar em um processo diferente).

Todos esses problemas podem ser tratados com gerenciamento ou solução com codificação extra ou instalação e configuração de módulos extras (com o custo de complexidade extra).

are there any cases that I shouldn't use clustering?

Quando você não precisa. É uma complicação extra. Portanto, seguindo as diretrizes gerais de tornar seu código tão complicado quanto necessário, você não deve usar o clustering se realmente não precisar da escala extra.

Você também não usaria geralmente o armazenamento em cluster se não tivesse vários núcleos em sua CPU.

    
por 05.01.2018 / 01:34
fonte