stringtranslate.com

Espacio tupla

Un espacio de tupla es una implementación del paradigma de memoria asociativa para computación paralela/distribuida. Proporciona un repositorio de tuplas al que se puede acceder simultáneamente. Como ejemplo ilustrativo, considere que hay un grupo de procesadores que producen datos y un grupo de procesadores que utilizan los datos. Los productores publican sus datos como tuplas en el espacio y los consumidores luego recuperan datos del espacio que coinciden con un patrón determinado. Esto también se conoce como la metáfora de la pizarra . El espacio de tuplas puede considerarse como una forma de memoria compartida distribuida .

Los espacios de tupla fueron la base teórica del lenguaje Linda desarrollado por David Gelernter y Nicholas Carriero en la Universidad de Yale en 1986.

También se han desarrollado implementaciones de espacios de tuplas para Java ( JavaSpaces ), Lisp , Lua , Prolog , Python , Ruby , Smalltalk , Tcl y .NET Framework .

Espacios de objetos

Object Spaces es un paradigma para el desarrollo de aplicaciones informáticas distribuidas . Se caracteriza por la existencia de entidades lógicas, llamadas Espacios de Objetos . Todos los participantes de la aplicación distribuida comparten un Espacio de Objetos . Un proveedor de un servicio encapsula el servicio como un Objeto y lo coloca en el Espacio de Objetos . Luego, los clientes de un servicio acceden al espacio de objetos , descubren qué objeto proporciona el servicio necesario y hacen que el objeto atienda la solicitud.

Los espacios de objetos , como paradigma informático, fueron propuestos en la década de 1980 por David Gelernter en la Universidad de Yale . Gelernter desarrolló un lenguaje llamado Linda para respaldar el concepto de coordinación global de objetos.

Se puede considerar el espacio de objetos como un depósito virtual, compartido entre proveedores y usuarios de servicios de red, que a su vez están abstraídos como objetos. Los procesos se comunican entre sí utilizando estos objetos compartidos, actualizando el estado de los objetos cuando sea necesario.

Un objeto, cuando se deposita en un espacio, debe registrarse en un Directorio de objetos en el Espacio de objetos . Luego, cualquier proceso puede identificar el objeto desde el Directorio de objetos , utilizando la búsqueda de propiedades, donde la propiedad que especifica los criterios para la búsqueda del objeto es su nombre o alguna otra propiedad que lo identifique de forma única. Un proceso puede optar por esperar a que se coloque un objeto en el Espacio de objetos , si el objeto necesario aún no está presente.

Los objetos, cuando se depositan en un Espacio de Objetos, son pasivos, es decir, sus métodos no pueden ser invocados mientras los objetos están en el Espacio de Objetos . En cambio, el proceso de acceso debe recuperarlo del Espacio de objetos en su memoria local, utilizar el servicio proporcionado por el objeto, actualizar el estado del objeto y colocarlo nuevamente en el Espacio de objetos .

Este paradigma inherentemente proporciona exclusión mutua . Porque una vez que se accede a un objeto, debe eliminarse del Espacio de objetos y volver a colocarse sólo después de haber sido liberado. Esto significa que ningún otro proceso puede acceder a un objeto mientras un proceso lo utiliza, lo que garantiza la exclusión mutua.

Espacios Java

JavaSpaces es una especificación de servicio que proporciona un mecanismo de coordinación e intercambio de objetos distribuidos (que puede ser persistente o no) para objetos Java . Se utiliza para almacenar el estado del sistema distribuido e implementar algoritmos distribuidos . En un JavaSpace, todos los socios de comunicación (pares) se comunican y coordinan compartiendo el estado.

JavaSpaces se puede usar para lograr escalabilidad a través del procesamiento paralelo, también se puede usar para proporcionar almacenamiento confiable de objetos a través de replicación distribuida, aunque esto no sobrevivirá a un corte total de energía como un disco; Muchos lo consideran confiable siempre que la energía sea confiable. La distribución también puede realizarse a ubicaciones remotas; sin embargo, esto es poco común ya que los JavaSpaces generalmente se usan para aplicaciones de alto rendimiento y baja latencia en lugar de un almacenamiento en caché de objetos confiable.

El patrón de software más común utilizado en JavaSpaces es el patrón Master-Worker. El Maestro entrega unidades de trabajo al "espacio", y los trabajadores las leen, procesan y escriben en el espacio. En un entorno típico hay varios "espacios", varios amos y muchos trabajadores; Los trabajadores suelen estar diseñados para ser genéricos, es decir, pueden tomar cualquier unidad de trabajo del espacio y procesar la tarea.

JavaSpaces es parte de la tecnología Java Jini , que por sí sola no ha sido un éxito comercial. [1] La tecnología ha encontrado y retenido nuevos usuarios a lo largo de los años y algunos proveedores ofrecen productos basados ​​en JavaSpaces. JavaSpaces sigue siendo una tecnología de nicho utilizada principalmente en las industrias de servicios financieros y telecomunicaciones, donde continúa manteniendo seguidores fieles. El anuncio de Jini/JavaSpaces generó bastante revuelo, aunque el cofundador de Sun y arquitecto jefe de Jini, Bill Joy, dejó claro que este sueño de sistemas distribuidos supondrá " un salto cuántico en el pensamiento ". [2]

Uso de ejemplo

El siguiente ejemplo muestra una aplicación creada con JavaSpaces. Primero, se crea un objeto para compartir en el Espacio de Objetos . Un objeto de este tipo se denomina Entrada en la terminología de JavaSpace. Aquí, la entrada se utiliza para encapsular un servicio que devuelve un mensaje ¡ Hola mundo! cadena y realiza un seguimiento de cuántas veces se utilizó. El servidor que proporciona este servicio creará un Espacio de Objetos o JavaSpace . Luego, la entrada se escribe en JavaSpace . El cliente lee la entrada del JavaSpace e invoca su método para acceder al servicio, actualizando su recuento de uso al hacerlo. La entrada actualizada se vuelve a escribir en JavaSpace .

// Una clase de entrada clase pública SpaceEntry implementa Entrada { public final String message = "¡Hola mundo!" ; recuento entero público = 0 ; servicio de cadena pública () { ++ recuento ; mensaje de respuesta ; } public String toString () { return "Contar: " + contar ; } }                                   
// ¡Hola Mundo! servidor clase pública Servidor { public static void main ( String [] args ) lanza una excepción { entrada SpaceEntry = nueva SpaceEntry (); // Crea el objeto de entrada JavaSpace space = ( JavaSpace ) space (); // Crear un espacio de objetos // Registrar y escribir la entrada en el espacio del espacio . escribir ( entrada , nulo , arrendamiento . PARA SIEMPRE ); // Haga una pausa de 10 segundos y luego recupere la entrada y verifique su estado. Hilo . dormir ( 10 * 1000 ); EntradaEspacial e = espacio . leer ( entrada , nulo , largo . MAX_VALUE ); Sistema . afuera . println ( e ); } }                                       
// Cliente clase pública Cliente { public static void main ( String [] args ) lanza Exception { JavaSpace espacio = ( JavaSpace ) espacio (); EntradaEspacial e = espacio . tomar ( nueva SpaceEntry (), nula , larga . MAX_VALUE ); Sistema . afuera . println ( es decir , servicio ()); espacio . escribir ( e , null , Arrendamiento . PARA SIEMPRE ); } }                            

Libros

Entrevistas

Artículos

Ver también

Referencias

  1. ^ Lee Gomes: "Las predicciones de Sun Microsystems para el sistema Jxta suenan familiares". The Wall Street Journal , 4 de junio de 2001
  2. ^ Rob Guth: "Más que otro nombre bonito: Jini de Sun abre un nuevo mundo de sistemas informáticos distribuidos". SunWorld , agosto de 1998 [15 de enero de 2006]

Fuentes

enlaces externos