Articulo de referencia

objeto distribuido en vivo

Una ilustración de los conceptos básicos que intervienen en la definición de un objeto distribuido en tiempo real. Un objeto distribuido en ejecución (también abreviado como obj...

Una ilustración de los conceptos básicos que intervienen en la definición de un objeto distribuido en tiempo real.

Un objeto distribuido en ejecución (también abreviado como objeto vivo ) se refiere a una instancia en funcionamiento de un protocolo distribuido multipartito (o de igual a igual ) , visto desde la perspectiva orientada a objetos , como una entidad que tiene una identidad distinta , puede encapsular un estado interno e hilos de ejecución , y que exhibe un comportamiento externo bien definido y visible.

Conceptos clave

Los conceptos clave del lenguaje de programación , aplicados a objetos distribuidos en tiempo real, se definen de la siguiente manera:

  • Identidad . La identidad de un objeto distribuido en vivo se determina por los mismos factores que diferencian las instancias de un mismo protocolo distribuido. El objeto consiste en un grupo de componentes de software que se ejecutan físicamente en un conjunto de máquinas físicas y se comunican entre sí, ejecutando cada uno el código del protocolo distribuido con el mismo conjunto de parámetros esenciales, como el nombre de un grupo de multidifusión, el identificador de un tema de publicación-suscripción, la identidad de un servicio de membresía, etc. Así, por ejemplo, los canales de publicación-suscripción y los grupos de multidifusión son ejemplos de objetos distribuidos en vivo: para cada canal o grupo, existe una única instancia de un protocolo distribuido que se ejecuta entre todos los ordenadores que envían, reenvían o reciben los datos publicados en el canal o la multidifusión dentro del grupo. En este caso, la identidad del objeto se determina mediante el identificador del canal o grupo, cualificado con la identidad del sistema distribuido que proporciona, controla y gestiona dicho canal o grupo. En el caso de la multidifusión, la identidad del sistema podría determinarse, por ejemplo, mediante la dirección del servicio de membresía (la entidad que gestiona la membresía del grupo de multidifusión).
  • Proxies ( réplicas ). El proxy o réplica de un objeto activo es una de las instancias de componentes de software involucradas en la ejecución del protocolo distribuido del objeto activo. El objeto puede definirse, por lo tanto, como un grupo de proxies que se comunican entre sí, mantienen conjuntamente un estado distribuido y coordinan sus operaciones. El término proxy enfatiza que un solo componente de software no constituye un objeto en sí mismo; más bien, sirve como puerta de enlace a través de la cual una aplicación puede acceder a una determinada funcionalidad o comportamiento que abarca un conjunto de computadoras. En este sentido, el concepto de proxy de objeto distribuido activo generaliza la noción de un stub de proxy del lado del cliente de RPC , RMI o .NET remoting .
  • Comportamiento . El comportamiento de un objeto distribuido en ejecución se caracteriza por el conjunto de posibles patrones de interacciones externas que sus proxies pueden establecer con sus entornos de ejecución locales. Estas interacciones se modelan como intercambios de eventos explícitos (mensajes).
  • Estado . El estado de un objeto distribuido vivo se define como la suma de todos los estados internos y locales de sus proxies. Por definición, está distribuido y replicado. Las diferentes réplicas del estado del objeto pueden ser fuertemente o débilmente consistentes, dependiendo de la semántica del protocolo: una instancia de un protocolo de consenso tendrá el estado de sus réplicas fuertemente consistente, mientras que una instancia de un protocolo de elección de líder tendrá un estado débilmente consistente. En este sentido, el término objeto distribuido vivo generaliza el concepto de objeto replicado ; este último es un tipo específico de objeto distribuido vivo que utiliza un protocolo como Paxos, sincronía virtual o replicación de máquina de estados para lograr una fuerte consistencia entre los estados internos de sus réplicas. El estado de un objeto distribuido vivo debe entenderse como una noción dinámica: como un punto (o corte consistente ) en un flujo de valores, en lugar de como un valor particular ubicado en un lugar dado en un momento dado. Por ejemplo, el estado externamente visible de un objeto de elección de líder se definiría como la identidad del líder actualmente electo. La identidad no se almacena en ninguna ubicación particular; más bien, se materializa como un flujo de mensajes de la forma elegido(x) producidos simultáneamente por los proxies involucrados en la ejecución de este protocolo, y consumidos simultáneamente por instancias de la aplicación que utilizan este protocolo, en diferentes máquinas distribuidas a través de la red.
  • Interfaces ( puntos finales ). La interfaz de un objeto distribuido activo se define por los tipos de interfaces expuestas por sus proxies; estas pueden incluir canales de eventos y diversos tipos de interfaces gráficas de usuario. Las interfaces expuestas por los proxies se denominan puntos finales del objeto distribuido activo . El término instancia de punto final se refiere a un único canal de eventos o interfaz de usuario específico expuesto por un único proxy específico. Decir que un objeto activo expone un punto final determinado significa que cada uno de sus proxies expone una instancia de este punto final a su entorno local, y cada una de las instancias de punto final transporta eventos del mismo tipo (o se vincula al mismo tipo de pantalla gráfica).
  • Referencias . La referencia a un objeto vivo es un conjunto completo de instrucciones serializadas y portátiles para construir su proxy. Desreferenciar una referencia significa analizar localmente y seguir estas instrucciones en un equipo específico para producir un proxy en ejecución del objeto vivo. Definida de esta manera, una referencia a un objeto vivo cumple la misma función que una referencia Java, un puntero C/C++ o la descripción WSDL de un servicio web ; contiene información completa suficiente para localizar el objeto dado e interactuar con él. Dado que los objetos distribuidos vivos pueden no residir en un lugar específico (sino extenderse a través de un conjunto de equipos que cambia dinámicamente), la información contenida en la referencia de un objeto distribuido vivo no puede limitarse a una simple dirección. Si el objeto se identifica mediante algún tipo de identificador único global (como podría ser el caso de los temas de publicación-suscripción o los grupos de multidifusión), la referencia debe especificar cómo se resuelve este identificador, incrustando recursivamente una referencia al objeto de resolución de nombres apropiado .
  • Tipos . El tipo de un objeto distribuido activo determina los patrones de interacción externa con el objeto; este se define por los tipos de puntos finales e interfaces gráficas de usuario expuestas por los proxies del objeto, y los patrones de eventos que pueden ocurrir en dichos puntos finales. Las restricciones que el tipo del objeto impone a los patrones de eventos pueden extenderse por toda la red. Por ejemplo, el tipo multidifusión atómica podría especificar que si un proxy genera un evento de la forma deliver(x) , todos los proxies que no presenten fallos (proxies que se ejecutan en equipos que nunca fallan y que nunca dejan de ejecutarse ni se excluyen del protocolo; la definición precisa puede variar). Al igual que ocurre con los tipos en lenguajes tipo Java , pueden existir muchas implementaciones muy diferentes del mismo tipo. Así, por ejemplo, el comportamiento característico de la multidifusión atómica podría ser exhibido por instancias de protocolos distribuidos como la sincronización virtual o Paxos.

La semántica y el comportamiento de los objetos distribuidos en vivo se pueden caracterizar en términos de flujos de datos distribuidos ; el conjunto de mensajes o eventos que aparecen en las instancias del punto final de un objeto en vivo forma un flujo de datos distribuido [ 1 ] . [ 2 ]

Historia

Las primeras ideas que sustentan el concepto de objeto distribuido vivo han estado influenciadas por un amplio conjunto de investigaciones sobre entornos orientados a objetos, incrustaciones de lenguajes de programación y marcos de composición de protocolos, que se remontan al menos al modelo de actor desarrollado a principios de la década de 1970; una discusión exhaustiva del trabajo previo relevante se puede encontrar en la tesis doctoral de Krzysztof Ostrowski. [ 3 ]

El término objeto distribuido en vivo se utilizó por primera vez de manera informal en una serie de presentaciones dadas en el otoño de 2006 en una conferencia ICWS , [ 4 ] conferencia STC , [ 5 ] y en los laboratorios MSR en Redmond, WA, [ 6 ] y luego se definió formalmente en 2007, en un artículo de IEEE Internet Computing . [ 7 ] Originalmente, el término se usó para referirse a los tipos de contenido web dinámico e interactivo que no está alojado en servidores en centros de datos , sino que se almacena en las computadoras cliente del usuario final y se alimenta internamente mediante instancias de protocolos de multidifusión confiables . La palabra "en vivo " expresaba el hecho de que la información mostrada es dinámica, interactiva y representa contenido actual, fresco y en vivo que refleja las actualizaciones recientes realizadas por los usuarios (a diferencia del contenido estático, de solo lectura y de archivo que ha sido ensamblado previamente). El término «distribuido» expresa que la información no está alojada ni almacenada en un servidor de un centro de datos, sino que se replica entre los ordenadores de los usuarios finales y se actualiza de forma peer-to-peer mediante un flujo de mensajes multicast que pueden ser producidos directamente por los usuarios finales que consumen el contenido; un análisis más exhaustivo del concepto de objeto vivo en el contexto del desarrollo web se puede encontrar en la tesis doctoral de Krzysztof Ostrowski . [ 3 ]

La definición más general presentada anteriormente se propuso por primera vez en 2008, en un artículo publicado en la conferencia ECOOP. [ 8 ] La extensión del término se ha motivado por la necesidad de modelar objetos vivos como composiciones de otros objetos; en este sentido, el concepto se ha inspirado en Smalltalk , que fue pionero en la perspectiva uniforme de que todo es un objeto , y en Jini , que fue pionero en la idea de que los servicios son objetos . Cuando se aplica a objetos distribuidos vivos, la perspectiva dicta que sus partes constituyentes, que incluyen instancias de protocolos multipartitos distribuidos utilizados internamente para replicar el estado, también deben modelarse como objetos distribuidos vivos. La necesidad de uniformidad implica que la definición de un objeto distribuido vivo debe unificar conceptos como contenido web vivo, flujos de mensajes e instancias de protocolos multipartitos distribuidos.

La primera implementación del concepto de objeto distribuido en vivo, tal como se define en el documento ECOOP, [ 8 ] fue la plataforma Live Distributed Objects [ 9 ] desarrollada por Krzysztof Ostrowski en la Universidad de Cornell. La plataforma proporcionaba un conjunto de herramientas visuales de arrastrar y soltar para componer documentos jerárquicos similares a páginas web , que contenían referencias a objetos en vivo serializadas en XML . El contenido visual, como ventanas de chat, escritorios compartidos y diversos tipos de mashups, podía componerse arrastrando y soltando componentes que representaban interfaces de usuario e instancias de protocolo en un formulario de diseño y conectándolos entre sí. Desde su creación, se han desarrollado varias extensiones para integrar objetos distribuidos en vivo en documentos de Microsoft Office , [ 10 ] y para admitir diversos tipos de contenido alojado, como Google Maps. [ 11 ] En marzo de 2009, la plataforma seguía siendo desarrollada activamente por sus creadores. [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ]

Véase también

Referencias

  1. Ostrowski, K., Birman, K., Dolev, D., y Sakoda, C. (2009). "Implementación de flujos de eventos confiables en sistemas grandes mediante flujos de datos distribuidos y delegación recursiva", 3.ª Conferencia Internacional ACM sobre Sistemas Distribuidos Basados ​​en Eventos (DEBS 2009) , Nashville, TN, EE. UU., 6-9 de julio de 2009, https://www.cs.cornell.edu/~krzys/krzys_debs2009.pdf
  2. Ostrowski, K., Birman, K., Dolev, D. (2009). "Programación de objetos distribuidos en tiempo real con flujos de datos distribuidos", Enviado a la Conferencia Internacional sobre Programación Orientada a Objetos, Sistemas, Lenguajes y Aplicaciones (OOPSLA 2009) , https://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf
  3. 1 2 Ostrowski, K. (2008). "Live Distributed Objects", Tesis doctoral, Universidad de Cornell, http://hdl.handle.net/1813/10881 .
  4. Ostrowski, K., y Birman, K., 'Arquitectura de servicios web extensible para notificaciones en sistemas a gran escala', Conferencia Internacional IEEE sobre Servicios Web (ICWS 2006), Chicago, IL, septiembre de 2006, https://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4032049 .
  5. Ostrowski, K., y Birman, K., 'Sistema de comunicación grupal escalable para confianza escalable', Primer taller de ACM sobre computación confiable escalable (ACM STC 2006), Fairfax, VA, noviembre de 2006, http://portal.acm.org/citation.cfm?id=1179477 .
  6. Ostrowski, K., (2006). QuickSilver Scalable Multicast . Microsoft Research, Redmond, WA, noviembre de 2006. http://www.researchchannel.org/prog/displayevent.aspx?rID=7870&fID=2276 .
  7. Ostrowski, K., Birman, K., y Dolev, D. (2007). "Live Distributed Objects: Enabling the Active Web", IEEE Internet Computing , noviembre-diciembre de 2007, 11(6):72-78, https://ieeexplore.ieee.org/document/4376231/;jsessionid=EF449367E7DB4958663B9131214CEAAD?isnumber=4376216&arnumber=4376231 .
  8. 1 2 Ostrowski, K., Birman, K., Dolev, D., y Ahnn, J. (2008). "Programación con objetos distribuidos en vivo", Actas de la 22.ª Conferencia Europea sobre Programación Orientada a Objetos , Pafos, Chipre, 7-11 de julio de 2008, J. Vitek, Ed., Lecture Notes in Computer Science , vol. 5142, Springer-Verlag, Berlín, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  9. "Inicio" . liveobjects.cs.cornell.edu .
  10. Ahnn, J., Birman, K., Ostrowski, K., y van Renesse, R. (2008). "Uso de objetos distribuidos en vivo para la automatización de oficinas", Actas de la Conferencia ACM/IFIP/USENIX Middleware '08 Companion , Lovaina, Bélgica, 1-5 de diciembre de 2008, Companion '08 , ACM, Nueva York, NY, 30-35, http://portal.acm.org/citation.cfm?id=1462735.1462743 .
  11. https://liveobjects.cs.cornell.edu/community/index.html
  12. Ostrowski, K., y Birman, K. (2009). "Almacenamiento y acceso a contenido mashup en vivo en la nube", 3.er Taller Internacional ACM SIGOPS sobre Sistemas Distribuidos a Gran Escala y Middleware (LADIS 2009) , Big Sky, MT, EE. UU., 11 de octubre de 2009, https://www.cs.cornell.edu/~krzys/krzys_ladis2009.pdf
  13. Akdogan, A., y Polepalli, S. (2008). "Live Maps", https://liveobjects.cs.cornell.edu/community/1/index.html
  14. Kashyap, R., y Nagarajappa, D. (2008). "Cornell Yahoo! Live Objects", https://liveobjects.cs.cornell.edu/community/2/index.html
  15. Dong, X., y Zhang, Z. (2008). "Integración de Live Objects con el servicio web de Flickr", https://liveobjects.cs.cornell.edu/community/3/index.html
  16. ^ Prateek, U. (2008). "Objeto vivo de Goole Earth", https://liveobjects.cs.cornell.edu/community/4/index.html
  17. Gupta, S., y Vora, H. (2008). "ALGE (A Live Google Earth)", https://liveobjects.cs.cornell.edu/community/5/index.html
  18. Mahajan, R., y Wakankar, S. (2008). "Google Earth distribuido", https://liveobjects.cs.cornell.edu/community/6/index.html
  19. Wadhwa, A., Sankar, H., y Subramaniyan, S. (2008). "Interfaz de usuario de Google Earth en vivo", https://liveobjects.cs.cornell.edu/community/7/index.html
Obtenido de " https://en.wikipedia.org/w/index.php?title=Live_distributed_object&oldid=1352824245 "