El Servicio de distribución de datos ( DDS ) para sistemas en tiempo real es un estándar de máquina a máquina del Grupo de administración de objetos (OMG) (a veces llamado middleware o marco de conectividad) que tiene como objetivo permitir confiabilidad , alto rendimiento , interoperable , en tiempo real , intercambios de datos escalables mediante un patrón de publicación-suscripción .
DDS aborda las necesidades de aplicaciones como aeroespacial y 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 que requieren intercambio de datos en tiempo real.
Arquitectura
Modelo
DDS es un middleware de red que simplifica la programación de redes complejas . 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 se encarga de las tareas de transferencia: direccionamiento de mensajes, clasificación y eliminación de clasificación de datos (para que los suscriptores puedan estar en diferentes plataformas 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 compleja programación de red para aplicaciones distribuidas. [ cita requerida ]
DDS admite mecanismos que van más allá del modelo básico de publicación-suscripción. [ cita requerida ] El beneficio clave es que las aplicaciones que utilizan DDS para sus comunicaciones están desacopladas. Se necesita poco tiempo de diseño para manejar sus interacciones mutuas. En particular, las aplicaciones nunca necesitan información sobre las otras aplicaciones participantes, incluida su existencia o ubicaciones. DDS maneja de manera transparente la entrega de mensajes sin requerir la intervención de las aplicaciones del usuario, incluyendo:
- determinar quién debe recibir los mensajes
- donde se encuentran los destinatarios
- ¿Qué pasa si los mensajes no se pueden entregar?
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 requerida ] DDS también maneja automáticamente editores redundantes de intercambio en caliente si el principal falla. [ cita requerida ] Los suscriptores siempre obtienen la muestra con la prioridad más alta cuyos datos aún son válidos (es decir, cuyo período de validez especificado por el editor no ha expirado). También cambia automáticamente al primario cuando se recupera.
Interoperabilidad
Están disponibles implementaciones de software tanto comerciales como de código abierto de DDS. Estos incluyen interfaces de programación de aplicaciones (API) y bibliotecas de implementaciones en Ada , C , C ++ , C # , Java , Python , Scala , Lua , Pharo y Ruby .
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 su propia pantalla de 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 Real-Time Publish-Subscribe (RTPS), [7] y el acuerdo para utilizar un modelo común.
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 a partir de enero de 2009. La demostración incluyó el descubrimiento de los editores y suscriptores de cada uno en diferentes plataformas de sistema operativo ( Microsoft Windows y Linux ) y comunicaciones de red de multidifusión y unidifusión compatibles . [1]
La demostración de interoperabilidad de DDS utilizó escenarios como:
- Conectividad básica a la red mediante el protocolo de Internet (IP)
- Descubrimiento de editores y suscriptores
- Compatibilidad de calidad de servicio (QoS) entre solicitante y ofertante
- Redes tolerantes al retardo
- Múltiples temas e instancias de temas.
- Propiedad exclusiva de temas
- Filtrado de contenido de datos de temas, incluido el tiempo y la ubicación geográfica.
Historia
El desarrollo de la especificación DDS comenzó en 2001. Fue desarrollado por Real-Time Innovations (RTI), una empresa de marcos de software, y Thales Group , una empresa de defensa francesa. En 2004, 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] El DDS está cubierto por varias patentes estadounidenses, [12] [13] [14] [15 ] entre otros.
La especificación DDS describe dos niveles de interfaces:
- Un nivel de publicación-suscripción (DCPS) más bajo centrado en datos que tiene como objetivo la entrega eficiente de la información adecuada a los destinatarios adecuados.
- Una capa de reconstrucción local de datos superior (DLRL) opcional, que permite una integración simple de DDS en la capa de aplicación .
Otros estándares relacionados siguieron al documento básico inicial. La especificación del protocolo de conexión de interoperabilidad de DDS del protocolo de publicación-suscripción en tiempo real garantiza que la información publicada sobre un tema mediante la implementación de DDS de un proveedor sea consumida 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 de lenguaje Java 5 para DDS definió un enlace de lenguaje Java 5, denominado Modelo específico de plataforma (PSM) para DDS. Especificó solo la parte 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 de 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 los perfiles de calidad de servicio (QoS) especificados en DDS-CCM.
Los tipos de temas extensibles y dinámicos para DDS (DDS-XTypes) proporcionaron soporte para la comunicación de publicación-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 los dominios y temas de DDS para ser parte del modelado de análisis y diseño. [20] Esta especificación también definió cómo publicar y suscribir objetos sin describir primero los tipos en otro idioma, como XML u 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 para entornos con restricciones de recursos eXtremely), 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 procedimiento remoto. Estos proporcionan una comunicación bidireccional de solicitud / respuesta y determinan los servicios distribuidos, y se detallan mediante una interfaz de servicio. También admite la invocación de métodos sincrónicos y 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
- Middleware
- Entorno informático de arquitectura abierta
- Object Management Group (OMG), organismo de estándares que desarrolló la especificación
Referencias
- ↑ a b 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 .
- ^ "Demostración de interoperabilidad de DDS, diciembre de 2010" (PDF) . Real-Time Innovations, Inc. 11 de diciembre de 2010 . Consultado el 9 de noviembre de 2016 .
- ^ 2011, marzo de 2011, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
- ^ 2012, marzo de 2012, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
- ^ 2013, marzo de 2013, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
- ^ "Demostración de interoperabilidad DDS" . video . Innovaciones en tiempo real. 14 de diciembre de 2010 . Consultado el 9 de noviembre de 2016 .
- ^ a b "La especificación del protocolo de cable de interoperabilidad DDS de protocolo de publicación-suscripción en tiempo real (DDSI-RTPS)" . Mayo de 2019 . Consultado el 28 de octubre de 2019 .
- ^ "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 .
- ^ "Servicio de distribución de datos (DDS), versión 1.1" . 4 de diciembre de 2005 . Consultado el 9 de noviembre de 2016 .
- ^ "Servicio de distribución de datos (DDS), versión 1.2" . 1 de enero de 2007 . Consultado el 9 de noviembre de 2016 .
- ^ "Servicio de distribución de datos (DDS), versión 1.4" . 10 de abril de 2015 . Consultado el 9 de noviembre de 2016 .
- ^ Patente de EE. UU. US8874686
- ^ Patente de EE. UU. US8671135
- ^ Patente de EE. UU. US8150988
- ^ Patente de EE. UU. US9015672
- ^ 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/
- ^ Lenguajes de programación - C ++, 15 de octubre de 2003, ISO / IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
- ^ DDS-PSM-Cxx: ISO / IEC C ++ 2003 Language DDS PSM, versión ptc / 2011-01-02, enero de 2011, http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/ PDF
- ^ 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
- ^ Perfil UML para distribución de datos, versión: 1.0, http://www.omg.org/cgi-bin/doc?ptc/10-05-17.pdf
- ^ DDS-Java: Java 5 Language PSM para DDSVersion 1.0, ptc / 2012-12-01, marzo de 2013 http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
- ^ "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 .
- ^ "Acerca de la versión 1.0 de la especificación DDS para entornos con restricciones extremas de recursos" . www.omg.org . Consultado el 12 de marzo de 2021 .
- ^ "Acerca de la versión 1.0 de la especificación RPC sobre DDS" . www.omg.org . Consultado el 12 de marzo de 2021 .
- ^ "Capa de reconstrucción local de datos DDS (DDS-DLRL)" . Abril de 2015 . Consultado el 9 de noviembre de 2016 .