2012-05-02 12 views
5

Estamos trabajando en una infraestructura OSGi para procesar flujos de datos basados ​​en flujos. Las tareas específicas de procesamiento son ejecutadas por componentes OSGi individuales. Ahora necesitamos la posibilidad de distribuir esos componentes en diferentes máquinas, lo que significa que necesitamos algún tipo de mecanismo de comunicación entre los componentes/contenedores OSGi.OSGi en infraestructuras distribuidas

Durante mi investigación encontré diferentes soluciones potenciales: R-OSGi, Apache CXF para OSGi distribuido, Eclipse Communication Framework.

ECF parece particularmente interesante ya que admite diferentes formatos de transporte y proporciona soporte para cosas como descubrimiento de servicios.

Mis preguntas centrales:

  • ¿Hay alguna tutoriales detallados/walk-through para la creación de una infraestructura ECF dentro de Felix? (de mi investigación, encontré, que el soporte de Felix ha sido agregado recientemente)
  • ¿Existen soluciones además de las tres enumeradas anteriormente que podría haber pasado por alto?
  • ¿Hay alguna razón para tomar Apache CXF en lugar de ECF?

Respuesta

2

La primera pregunta - si hay un recorrido detallado para configurar ECF con Felix - No sé la respuesta, aunque uno podría usar un motor de búsqueda para encontrar combinaciones de esos términos .

El problema es que ECF usa la infraestructura de Equinox y, en ocasiones, inadvertidamente ha dependido de paquetes que no son públicos a través de dependencias transitivas (particularmente la API Runtime que usa Equinox para la depuración no pública). Esto, a su vez, significa que ECF depende de una gran cantidad de otros componentes para estar disponibles y es este conjunto el que típicamente no está bien definido en un tiempo de ejecución de Felix.

Te has perdido el Paremus 'Service Fabric, que es una solución de nube OSGi comercial. No estoy seguro si te enfocabas específicamente en código abierto o no; pero si incluye licencias comerciales, entonces tienen una arquitectura muy robusta para servicios remotos.

Finalmente, la pregunta de Apache CXF sobre ECF - si está utilizando Felix, diría que usar Apache CXF es probablemente más fácil que ir con ECF. Esto se debe principalmente al conjunto de dependencias y a su funcionamiento, combinado con el hecho de que ECF no se puede probar en Felix y por lo tanto puede asumir aspectos particulares del tiempo de ejecución de Equinox (que incluye, por ejemplo, la delegación del cargador de clases padre del tiempo de ejecución para recoger cosas en el classpath de arranque). Esto no es realmente culpa de ECF per se, sino más bien un artefacto de cómo funciona el ecosistema Eclipse.

Si desea comunicarse con tiempos de ejecución que no sean OSGi, existe una ventaja en Apache CXF en cuanto a que pueden generar WDSL para la interacción con otros lenguajes. Creo que puedes hacer lo mismo en ECF con un poco más de trabajo. Es probable que la solución CXF sea más detallada que la correspondiente ECF (WSDL siempre lo es), pero si no está utilizando grandes volúmenes de solicitudes, es probable que esto no suponga una gran diferencia.