¿Qué constituye exactamente la informática distribuida?
La computación distribuida es una colección inherentemente paralela de elementos de procesamiento que se comunican entre sí para abordar uno o más problemas. Esos elementos de procesamiento están suficientemente separados entre sí que no es práctico construir una estructura de mensajería confiable y oportuna entre ellos, por lo que es imposible que exista un conocimiento global del estado del sistema. Las características particulares de los mensajes con sistemas distribuidos son que los mensajes se perderán, se confundirán, se retrasarán; las soluciones en este espacio deben tener en cuenta esto. Por lo tanto, la programación distribuida se trata de tratar con redes y mensajes, paralelismo y falta de información global.
El método más sencillo para solucionar los problemas es hacer que un único elemento de procesamiento sea especial, es decir, autoritario para una determinada información. Luego, los otros elementos pueden volver a consultarlo cada vez, o almacenar en caché la información y esperar que no se desactualice (ya que no pueden contar con que se les informe de los cambios). Esta es la arquitectura clásica de cliente / servidor.
La informática en Internet es informática distribuida, pero sin la capacidad de controlar lo que la mayoría de los nodos distribuidos realmente hacen.
¿Múltiples hilos paralelos que intentan sincronizarse para acceder a un recurso constituyen un problema en el dominio de la computación distribuida?
Constituyen una posible solución que es útil al construir el modelo cliente / servidor, pero a un costo de un aumento potencialmente dramático en la contención de recursos. Para las lecturas, eso no es un gran problema (siempre que haya suficiente hardware), pero para las escrituras es un gran problema.
Sin embargo, lo que intenta evitar son bloqueos distribuidos. La falta de mensajería confiable y oportuna mata absolutamente los protocolos de decisión distribuidos, a menos que use algo como el protocolo Paxos , pero eso tiene muchas advertencias. El problema fundamental con la informática distribuida es que "a los mensajes les pasan cosas malas". Los protocolos de nivel relativamente bajo, como TCP, disminuyen los problemas, pero aún puede desatarse.
Compañeros de Donal
fuente
La informática distribuida es un sistema informático que tiene un procesamiento que se produce en diferentes computadoras (es decir, en un sistema distribuido). Los programas individuales se comunican entre sí a través de una serie de canales de comunicación. Estos canales suelen ser conexiones de red (zócalos TCP, por ejemplo), pero a menudo usan otros protocolos y dispositivos de comunicación (como DeviceNET, BACNet, SECS-2, Modbus, etc.) o incluso protocolos personalizados para un dispositivo específico.
Los sistemas distribuidos suelen ser mucho más complicados que los sistemas diseñados para ejecutarse en una sola computadora. Además de los problemas de concurrencia y bloqueo de recursos con los que tienen que lidiar las aplicaciones de subprocesos múltiples, los sistemas distribuidos necesitan manejar fallas de comunicación y fallas de procesamiento de nodos. Las transacciones (y la reversión) que requieren múltiples procesadores para realizar también pueden ser complicadas.
Los sistemas distribuidos toman muchas formas y actualmente se usan en muchas aplicaciones. Las aplicaciones web son sistemas distribuidos. Un sistema N-Tiered generalmente tiene al menos N procesadores diferentes (con diferentes aplicaciones). Los sistemas distribuidos también se utilizan en muchos sistemas de automatización de fábrica.
El relato de computación distribuida en Wikipedia es digno de una lectura.
En respuesta a su pregunta sobre si una aplicación de subprocesos múltiples constituye una aplicación distribuida, si los subprocesos se ejecutan en una sola computadora, el sistema no se distribuye. Tiene que resolver algunos de los problemas inherentes a los sistemas distribuidos, pero no todos.
fuente
Estrictamente hablando, "computación distribuida" es cualquier solución que implica procesar una sola transacción / solicitud / cálculo en más de una computadora.
También se encontrará con el término "Sistemas Distribuidos", que es un término general para Windows, Unix y otros servidores de sistemas pequeños que originalmente se habrían implementado fuera del centro de datos central. Aunque es más normal que estos sistemas se implementen dentro del centro de datos en estos días, el término se ha estancado.
fuente
Para responder a su pregunta general sobre lo que constituye la computación distribuida, recomendaría el documento Una nota sobre computación distribuida de Ann Wollrath, Geoff Wyant, Jim Waldo y Samuel C. Kendall . Cubre la historia reciente de los sistemas distribuidos y sus fallas, y propone que la computación distribuida requiere pensar de manera diferente sobre los problemas involucrados.
Aunque no se mencionan mutexes ni semáforos en el documento, proporciona información valiosa sobre la ingeniería adecuada de un sistema de software distribuido.
En cuanto a por qué su entrevistador preguntó sobre mutexes y semáforos, estaría de acuerdo con @Caleb:
Lo único que agregaría es que los mutexes y los semáforos son primitivas de bloqueo de bajo nivel que le permiten distribuir el trabajo en múltiples dispositivos informáticos, y su funcionamiento es (generalmente) vital para el éxito de la aplicación. Obviamente, depende del idioma y la tecnología utilizada. Si usa Erlang o Scala, probablemente usará la concurrencia basada en el modelo de actor en lugar de la concurrencia tradicional basada en el bloqueo.
fuente
La palabra lo dice todo. Debe realizar algunas operaciones informáticas y si pudiera distribuir partes de esta informática de manera que cada informática funcione independientemente de la otra informática y luego, cuando todo esté hecho, combinará el resultado de cada informática para obtener la respuesta de la informática principal. El ejemplo sería: Map-Reduce
fuente
Tuvimos un curso sobre "sistemas distribuidos" y aunque no recuerdo exactamente la definición, fue en la línea de:
(Creo que hubo algunos más y no estoy seguro sobre el último punto)
Ahora en el curso aprendimos cómo implementar transacciones distribuidas y bloqueo distribuido. La lección es que el bloqueo distribuido se implementa básicamente mediante la transacción distribuida, que es al revés en comparación con lo que se hace localmente, y que no es inherentemente tolerante a fallas, lo que en su lugar anula el propósito de tener un sistema distribuido en primer lugar.
Editar: Esa definición es para "sistema distribuido" en el sentido estricto de sistema operativo o sistema de base de datos y en lugar de simplemente sistema cliente-servidor. Cualquier cosa que satisfaga la primera condición puede llamarse distribuida en algunos contextos.
Casualmente, la definición coincide con la diferencia entre los sistemas de control de versiones distribuidos y tradicionales, todos los cuales son al menos cliente-servidor y, a menudo, también se replican.
fuente
Computación distribuida el término "no comercializador" para la computación empresarial que puede escuchar mucho más en la vida real. Sin embargo, la idea general que otros señalan es "estás usando más de una computadora para hacer el trabajo"
fuente