Existe algum cenário em que uma instância do aplicativo é executado em vários computadores?

StackOverflow https://stackoverflow.com/questions/439714

Pergunta

Sabemos que uma única instância do aplicativo pode usar múltiplos núcleos e até mesmo múltiplos processadores físicos. Com nuvem e cluster de computação, ou outro cenário especial, eu não sei se uma única postura pode ser executado em vários computadores, ou em várias instâncias do sistema operacional.

Isto é importante para mim, porque, além de ser considerada como má programação, eu uso algumas estática (como em C #) variáveis ??(globais), e meu programa irá provavelmente ter um comportamento inesperado se essas variáveis tornar-se compartilhados entre computadores.

Atualizar eu vou ser mais específico: Eu estou escrevendo um aplicativo .NET, que tem uma variável que conta o número de conexões IP ativos, para evitar que o número de conexões não exceder um limite por computador. Eu estou preocupado se eu implantar essa aplicação em um host de computação em nuvem, se eu vou ter uma instância da variável por computador.

Foi útil?

Solução

Se você quiser aprender como realizar tal cenário (uma única instância em vários computadores), eu acho que você deveria ler alguns artigos sobre MPI .

tornou-se um de facto padrão para a comunicação entre os processos que modelar um programa paralelo rodando em um sistema de memória distribuída.

No que diz respeito as suas preocupações: Obviamente, você vai precisar para mudar de alguma forma conscientemente o seu programa para ser executado como uma instância através de vários computadores. Caso contrário, não há compartilhamento de curso acontece, e como escreve Shy , não há nada para se preocupar. Este tipo de coisa não aconteceria automaticamente.

Outras dicas

O ambiente de programação (idioma) que você está usando? Deve definir exatamente o que significa "estáticas". Muito provavelmente ele não permite qualquer compartilhamento de informações entre computadores diferentes, exceto através de canais explícitos tais como MPI ou RPC.

No entanto, os ambientes de alto nível abstraídos pode ser projetado para esconder o conceito de "execução em vários computadores" de você inteiramente. É concebível para projetar uma máquina virtual que pode ser executado em um cluster e vai realmente dividir variáveis ??estáticas entre diferentes máquinas físicas - mas neste caso o seu programa está sendo executado na máquina virtual única, e se que é executado em um ou mais físicos máquinas devem não faz qualquer diferença.

Se você não pode sequer imaginar uma situação em que isso acontece, por que se preocupar com isso?

Normalmente, isso poderia acontecer em um cenário envolvendo RPC de algum tipo.

Bem, sim, há distcc. É o compilador GCC distribuído.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top