stringtranslate.com

Servicio de distribución de datos

El Servicio de Distribución de Datos ( DDS ) para sistemas en tiempo real es un estándar de máquina a máquina (a veces llamado middleware o marco de conectividad) del Grupo de Gestión de Objetos (OMG) que tiene como objetivo habilitar sistemas confiables , de alto rendimiento , interoperables y en tiempo real . Intercambios de datos escalables mediante un patrón de publicación-suscripción .

DDS aborda las necesidades de intercambio de datos en tiempo real de aplicaciones en el sector aeroespacial, defensa, control de tráfico aéreo , vehículos autónomos , dispositivos médicos, robótica, generación de energía, simulación y pruebas, gestión de redes inteligentes , sistemas de transporte y otras aplicaciones.

Arquitectura

Modelo

DDS es un middleware de red que simplifica la programación de red compleja . Implementa un patrón de publicación-suscripción para enviar y recibir datos, eventos y comandos entre los nodos . Los nodos que producen información (editores) crean "temas" (por ejemplo, temperatura, ubicación, presión) y publican "muestras". DDS entrega las muestras a los suscriptores que declaran interés en ese tema.

DDS maneja las tareas de transferencia: direccionamiento de mensajes, clasificación y desclasificación de datos (para que los suscriptores puedan estar en plataformas diferentes a las del editor), entrega, control de flujo, reintentos, etc. Cualquier nodo puede ser editor, suscriptor o ambos simultáneamente.

El modelo de publicación-suscripción de DDS prácticamente elimina la programación de red compleja para aplicaciones distribuidas. [ cita necesaria ]

DDS admite mecanismos que van más allá del modelo básico de publicación-suscripción. [ cita necesaria ] El beneficio clave es que las aplicaciones que utilizan DDS para sus comunicaciones están desacopladas. Se necesita dedicar poco tiempo de diseño a manejar sus interacciones mutuas. En particular, las aplicaciones nunca necesitan información sobre las otras aplicaciones participantes, incluida su existencia o ubicación. DDS maneja de forma transparente la entrega de mensajes sin requerir la intervención de las aplicaciones del usuario, incluyendo:

DDS permite al usuario especificar parámetros de calidad de servicio (QoS) para configurar mecanismos de descubrimiento y comportamiento por adelantado. Al intercambiar mensajes de forma anónima, DDS simplifica las aplicaciones distribuidas y fomenta programas modulares y bien estructurados. [ cita necesaria ] DDS también maneja automáticamente los editores redundantes de intercambio en caliente si el principal falla. [ cita necesaria ] Los suscriptores siempre obtienen la muestra con la mayor prioridad cuyos datos aún son válidos (es decir, cuyo período de validez especificado por el editor no ha expirado) [ cita necesaria ] . También vuelve automáticamente al primario cuando se recupera [ cita necesaria ] .

Interoperabilidad

Se encuentran disponibles implementaciones de software de DDS tanto patentadas como de código abierto . Estos incluyen interfaces de programación de aplicaciones (API) y bibliotecas de implementaciones en Ada , C , C++ , C# , Java , Python , Scala , Lua , Pharo , Ruby y Rust .

Los proveedores de DDS participaron en demostraciones de interoperabilidad en las reuniones técnicas de OMG Spring de 2009 a 2013. [1] [2] [3] [4] [5] [6]

Durante las demostraciones, cada proveedor publicó y se suscribió a los temas de los demás utilizando un conjunto de pruebas llamado demostración de formas. Por ejemplo, un proveedor publica información sobre una forma y los otros proveedores pueden suscribirse al tema y mostrar los resultados en sus propias formas. Cada proveedor se turna para publicar la información y el otro se suscribe. Dos cosas hicieron posibles las demostraciones: el protocolo DDS-I o publicación-suscripción en tiempo real (RTPS), [7] y el acuerdo para utilizar un modelo común.

Interoperabilidad del servicio de distribución de datos OMG

En marzo de 2009, tres proveedores demostraron la interoperabilidad entre los productos individuales e independientes que implementaron la versión 2.1 del protocolo OMG de publicación-suscripción en tiempo real desde enero de 2009. La demostración incluyó el descubrimiento de los editores y suscriptores de cada uno en diferentes plataformas de sistemas operativos ( Microsoft Windows y Linux ) y comunicaciones de red multidifusión y unidifusión compatibles. [1]

La demostración de interoperabilidad de DDS utilizó escenarios como:

Historia

El desarrollo de la especificación DDS comenzó en 2001. En 2004, el Object Management Group (OMG) publicó la versión 1.0 de DDS. [8] La versión 1.1 se publicó en diciembre de 2005, [9] 1.2 en enero de 2007, [10] y 1.4 en abril de 2015. [11] DDS está cubierto por varias patentes estadounidenses, [12] [13] [14] [15 ] entre otros.

La especificación DDS describe dos niveles de interfaces:

Otras normas relacionadas siguieron al documento básico inicial. La especificación del protocolo de interoperabilidad DDS del protocolo de conexión de publicación-suscripción en tiempo real garantizaba que la información publicada sobre un tema utilizando la implementación de DDS de un proveedor sea consumible por uno o más suscriptores que utilicen implementaciones de DDS del mismo proveedor o de diferentes. Aunque la especificación está dirigida a la comunidad DDS, su uso no está limitado. Las versiones 2.0 se publicaron en abril de 2008, la versión 2.1 en noviembre de 2010, la 2.2 en septiembre de 2014 y la 2.3 en mayo de 2019. [7]

DDS para Lightweight CCM (dds4ccm) ofrece un patrón arquitectónico que separa la lógica empresarial de las propiedades no funcionales. Una extensión de 2012 agregó soporte para transmisiones. [16] Un PSM del lenguaje Java 5 para DDS definió un enlace del lenguaje Java 5, denominado Modelo específico de plataforma (PSM) para DDS. Especificó sólo la parte de publicación-suscripción centrada en datos (DCPS) de la especificación DDS; Además, abarca las API de DDS introducidas por DDS-XTypes y DDS-CCM. DDS-PSM-Cxx define el enlace del lenguaje ISO/IEC C++ [17] PSM, denominado Modelo específico de plataforma (PSM) para DDS. Proporciona una nueva API de C++ para programar DDS que es más natural para un programador de C++. [18] La especificación proporciona asignaciones para la interfaz de programación de aplicaciones (API) especificada en DDS-XTypes y el acceso a perfiles de calidad de servicio (QoS) especificados en DDS-CCM.

Los tipos de temas dinámicos y extensibles para DDS (DDS-XTypes) brindaron soporte para la comunicación de publicación y suscripción centrada en datos donde los temas se definen con estructuras de datos específicas. Para ser extensibles , los temas de DDS utilizan tipos de datos definidos antes del tiempo de compilación y utilizados en todo el espacio de datos global de DDS. Este modelo es deseable cuando la verificación de tipos estáticos es útil. [19] Un perfil de Lenguaje de modelado unificado (UML) especificaba dominios y temas de DDS que formarían parte del análisis y modelado de diseño. [20] Esta especificación también define cómo publicar y suscribir objetos sin describir primero los tipos en otro lenguaje, como XML o OMG IDL. [21] En 2014 se especificó un lenguaje de definición de interfaz (IDL) independientemente del capítulo 3 de la especificación Common Object Request Broker Architecture (CORBA). Este IDL 3.5 era compatible con la especificación CORBA 3, pero se extrajo como su propia especificación, lo que le permitió evolucionar. independientemente de CORBA. [22]

Otros protocolos a mencionar son: DDS-XRCE (DDS for eXtremely Resource Constrained Environments), este protocolo de especificación permite la comunicación entre dispositivos de recursos limitados, como un microcontrolador por ejemplo y una red DDS. Hace posible la publicación y suscripción de temas a través de un servicio intermedio en un dominio DDS [23] y DDS-RPC (RPC Over DDS) que define llamadas a procedimientos remotos. Estos proporcionan una comunicación bidireccional de solicitud/respuesta y determinan servicios distribuidos, y se detallan mediante una interfaz de servicio. También admite la invocación de métodos tanto sincrónicos como asincrónicos. [24]

A partir de la versión 1.4 de DDS en 2015, la capa DLRL opcional se trasladó a una especificación separada. [25]

Ver también

Referencias

  1. ^ ab Angelo Corsaro, Gerardo Pardo-Castellote y Clark Tucker (12 de agosto de 2009). "Demostración de interoperabilidad DDS" (PDF) . Grupo de administración de objetos. Archivado desde el original (PDF) el 15 de septiembre de 2011 . Consultado el 9 de noviembre de 2016 .
  2. ^ "Demostración de interoperabilidad DDS de diciembre de 2010" (PDF) . Real-Time Innovations, Inc. 11 de diciembre de 2010 . Consultado el 9 de noviembre de 2016 .
  3. ^ 2011, marzo de 2011, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
  4. ^ 2012, marzo de 2012, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
  5. ^ 2013, marzo de 2013, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
  6. ^ "Demostración de interoperabilidad DDS". video . Innovaciones en tiempo real. 14 de diciembre de 2010. Archivado desde el original el 7 de enero de 2014 . Consultado el 9 de noviembre de 2016 .
  7. ^ ab "La especificación del protocolo de conexión de interoperabilidad DDS del protocolo de conexión de publicación y suscripción en tiempo real (DDSI-RTPS)". Mayo de 2019 . Consultado el 28 de octubre de 2019 .
  8. ^ "Servicio de distribución de datos (DDS), versión 1.0". Grupo de administración de objetos. 2 de diciembre de 2004 . Consultado el 9 de noviembre de 2016 .
  9. ^ "Servicio de distribución de datos (DDS), versión 1.1". 4 de diciembre de 2005 . Consultado el 9 de noviembre de 2016 .
  10. ^ "Servicio de distribución de datos (DDS), versión 1.2". 1 de enero de 2007 . Consultado el 9 de noviembre de 2016 .
  11. ^ "Servicio de distribución de datos (DDS), versión 1.4". 10 de abril de 2015 . Consultado el 9 de noviembre de 2016 .
  12. ^ Patente estadounidense US8874686
  13. ^ Patente estadounidense US8671135
  14. ^ Patente estadounidense US8150988
  15. ^ Patente estadounidense US9015672
  16. ^ DDS para CCM ligero (dds4ccm), versión 1.1, formal/2012-02-01, febrero de 2012, http://www.omg.org/spec/dds4ccm/1.1/PDF/
  17. ^ Lenguajes de programación: C++, 15 de octubre de 2003, ISO/IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
  18. ^ DDS-PSM-Cxx: ISO/IEC C++ 2003 Idioma DDS PSM, versión ptc/2011-01-02, enero de 2011, http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/ PDF
  19. ^ Tipos de temas dinámicos y extensibles para DDS (DDS-XTypes), 1.0, formal/2012-11-10, noviembre de 2012, http://www.omg.org/spec/DDS-XTypes/1.0/PDF
  20. ^ Perfil UML para distribución de datos, versión: 1.0, http://www.omg.org/cgi-bin/doc?ptc/10-05-17.pdf
  21. ^ DDS-Java: PSM del lenguaje Java 5 para DDSVersion 1.0, ptc/2012-12-01, marzo de 2013 http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
  22. ^ "Lenguaje de definición de interfaz (IDL), versión 3.5". DIOS MÍO. 1 de marzo de 2014. Archivado desde el original el 21 de enero de 2017 . Consultado el 9 de noviembre de 2016 .
  23. ^ "Acerca de la especificación DDS para entornos con recursos extremadamente limitados, versión 1.0". www.omg.org . Consultado el 12 de marzo de 2021 .
  24. ^ "Acerca de la especificación RPC sobre DDS versión 1.0". www.omg.org . Consultado el 12 de marzo de 2021 .
  25. ^ "Capa de reconstrucción local de datos DDS (DDS-DLRL)". Abril de 2015 . Consultado el 9 de noviembre de 2016 .