tutorial felix example español ejemplo compendium aseguradora osgi

felix - ¿Cómo gestiona OSGi la interacción de los componentes que se ejecutan en JVM separadas?



osgi service (9)

AFAIK, los paquetes se ejecutan en la misma JVM, pero no se cargan utilizando el mismo cargador de clases (por eso puede usar dos versiones diferentes del mismo paquete al mismo tiempo).

Para interactuar con componentes en otra JVM, debe usar un protocolo de red como rmi.

He estado tratando de entender un poco más sobre la imagen más amplia de OSGi sin leer toda la especificación. Al igual que con tantas cosas, la introducción a lo que realmente es OSGi probablemente fue escrita por alguien que había estado trabajando en ella durante una década y quizás no estaba en la mejor posición para ponerse en la mentalidad de alguien que no sabe nada al respecto :-)

Al mirar el ejemplo DictionaryService Felix, realmente no entiendo lo que está pasando. ¿Es OSGi una instancia distinta de una JVM en la que carga paquetes que luego pueden encontrarse entre sí?

Obviamente, no es solo esto porque otras respuestas en StackOverflow son explícitas de que OSGi puede resolver el problema de dependencia de un sistema distribuido que contiene módulos implementados en distintas JVM (además, la FAQ sigue hablando de redes ).

En este último caso, ¿cómo un componente que se ejecuta en una JVM interactúa con otro componente en una JVM separada? ¿Pueden los dos componentes "usar" el uno al otro como si se ejecutaran dentro de la misma JVM (es decir, a través de llamadas a métodos locales) y cómo maneja OSGi la clasificación de datos a través de una red (¿tiene que usar Serializable por ejemplo)?

¿O el autor del componente tiene que usar algún otro mecanismo distinto (proporcionado por OSGi o escrito por ellos mismos) para la comunicación entre componentes remotos?

Cualquier ayuda muy apreciada!


Hasta donde yo sé, OSGi no resuelve este problema de la caja. Hay paquetes OSGi, por ejemplo Remote OSGi , que permiten al programador distribuir servicios a través de una red.


Aún no, creo que se está trabajando para el próximo lanzamiento.

Pero algunas empresas ya han implementado distribuido osgi. De lo que estoy enterado es de Paremus ''Infiniflow ( http://www.paremus.com/products/products.html ). En linkedin también están trabajando en esto. Más información aquí: Construyendo la próxima arquitectura de Linkedin con osgi y aquí: Matt Raible: construyendo la próxima arquitectura de linkedin.

Aquí hay un resumen de los cambios para OSGI 4.2: algunas reflexiones sobre el borrador de OSGi R4.2 , hay una sección sobre RFC-119 que trata sobre OSGi distribuido.


El problema original de OSGI estaba más relacionado con la distribución del código (y luego la configuración del paquete) que con la distribución de la ejecución.

Las personas que miran componentes distribuidos miran hacia SCA



El enlace de "introducción" no es realmente una introducción, es una entrada de preguntas frecuentes. Para obtener más información, consulte http://www.osgi.org/About/WhatIsOSGi No es difícil de encontrar, creo.

De todos modos, OSGi es una SOA en VM. Es decir, OSGi Framework trata de lo que ocurre dentro de la VM, proporciona un marco para estructurar su aplicación dentro de la VM para que pueda desarrollarla también en gran medida a partir de los componentes. Por lo tanto, el núcleo no tiene nada que ver con la distribución, es completamente ajeno a quién implementa los servicios, simplemente proporciona un mecanismo para que los módulos se conozcan de una manera débil.

Dicho esto, el modelo μService reifica las uniones entre los módulos y resulta que se puede construir soporte en la parte superior del marco que proporciona distribución a los otros componentes. En los últimos lanzamientos especificamos algunos mecanismos que lo estandarizan en el núcleo y proporcionan un servicio especial Administrador de servicio remoto que puede administrar una topología distribuida.


Si busca un tiempo de ejecución en la nube distribuido OSGi céntrico, el sistema de servicio Paremus ( https://docs.paremus.com/display/SF16/Introduction ) ofrece estas capacidades.

Uno o más Sistemas, cada uno de los cuales consta de varios ensamblados OSGi (Blueprint o Servicios Declarativos), se pueden desplegar y mantener dinámicamente en una población de Frameworks de ejecución de OSGi (Knopflerfish, Felix o Equinox).

Se proporciona un marco remoto RSA ligero que proporciona detección de servicios de manera predeterminada utilizando DDS (una tecnología de mensajería de middleware seriamente buena) - (se puede usar el ZooKeeper y otros enfoques). Los protocolos de reinicio admitidos actualmente incluyen RMI y Avro.

Saludos

Ricardo


Sí, OSGi solo se ocupa de paquetes y servicios que se ejecutan en la misma máquina virtual. Sin embargo, se debe tener en cuenta que es una característica distintiva de OSGi que facilita la ejecución de múltiples aplicaciones (de forma controlada y compartiendo módulos comunes) en la misma JVM.

Cuando se trata de acceder a los servicios fuera de la JVM de los clientes, actualmente no existe una solución estandarizada. Paremus Infiniflow y el proyecto de código abierto derivado Newton usan un enfoque SCA. La próxima versión 4.2 de las especificaciones de OSGi abordará un lado del problema, a saber, cómo usar el software de distribución genérico de tal manera que pueda llevar servicios remotos a la JVM del cliente.

Como alguien mencionó a R-OSGi, este enfoque también se ocupa del otro lado del problema, que es cómo administrar las dependencias entre los marcos OSGi distribuidos. Dado que R-OSGi no es un software genérico de distribución, sino que trata explícitamente los problemas del ciclo de vida y la administración de la dependencia de los paquetes OSGi.


@ Patriarch24

La respuesta aceptada a esta pregunta parecería indicar lo contrario (a menos que lo malinterprete). Además, tomado de las preguntas frecuentes:

OSGi Service Platform proporciona las funciones para cambiar la composición de forma dinámica en el dispositivo de una variedad de redes , sin necesidad de reiniciar

(Énfasis mío) Aunque en las mismas preguntas frecuentes describe OSGi como en VM .

¿Por qué estoy tan confundido acerca de esto? ¿Por qué no está clara una pregunta tan básica sobre una tecnología de hace una década?