¿Hay algún escenario en el que una instancia de aplicación se ejecute en varias computadoras?

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

Pregunta

Sabemos que una sola instancia de aplicación puede usar múltiples núcleos e incluso múltiples procesadores físicos. Con la computación en nube y en clúster, u otro escenario especial, no sé si una sola posición puede ejecutarse en varias computadoras o en varias instancias del sistema operativo.

Esto es importante para mí porque, además de ser considerado como una mala programación, uso algunas variables estáticas (como en C #) (global), y mi programa probablemente tendrá un comportamiento inesperado si esas variables compartir entre computadoras.

Actualización Seré más específico: estoy escribiendo una aplicación .NET, que tiene una variable que cuenta el número de conexiones IP activas, para evitar que el número de conexiones no exceder un límite por computadora. Me preocupa si implemento esa aplicación en un host de computación en la nube, si tendré una instancia de la variable por computadora.

¿Fue útil?

Solución

Si desea aprender cómo realizar tal escenario (una sola instancia en varias computadoras), creo que debería leer algunos artículos sobre MPI .

  

se ha convertido en un estándar de facto para   comunicación entre procesos que   modelar un programa paralelo que se ejecuta en un   sistema de memoria distribuida.

Con respecto a sus preocupaciones: Obviamente, deberá cambiar conscientemente su programa para que se ejecute como una instancia en varias computadoras. De lo contrario, no se comparte, por supuesto, y como Shy escribe , no hay nada de qué preocuparse. Este tipo de cosas no sucedería automáticamente.

Otros consejos

¿Qué entorno de programación (lenguaje) está utilizando? Debe definir exactamente qué estática estática medio. Lo más probable es que no permita compartir información entre diferentes computadoras, excepto a través de canales explícitos como MPI o RPC.

Sin embargo, los entornos abstractos de alto nivel pueden diseñarse para ocultar el concepto de "ejecutarse en múltiples computadoras". de ti por completo. Es concebible diseñar una máquina virtual que pueda ejecutarse en un clúster y realmente comparta variables estáticas entre diferentes máquinas físicas, pero en este caso su programa se ejecuta en una sola máquina virtual, y si eso se ejecuta en una o más máquinas físicas debería no hace ninguna diferencia.

Si ni siquiera puedes imaginar una situación en la que esto sucede, ¿por qué te preocupas por eso?

Generalmente, esto podría suceder en un escenario que involucra RPC de algún tipo.

Bueno, sí, hay distcc. Es el compilador GCC distribuido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top