El Servicio de Distribución de Datos ( DDS ) para sistemas en tiempo real es un estándar de máquina a máquina del Object Management Group (OMG) (a veces llamado middleware o marco de conectividad) que tiene como objetivo permitir intercambios de datos confiables , de alto rendimiento , interoperables , en tiempo real y escalables utilizando un patrón de publicación-suscripción .
DDS satisface las necesidades de intercambio de datos en tiempo real de aplicaciones en los sectores aeroespacial, de 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 redes complejas . Implementa un patrón de publicación-suscripción para el envío y la recepción de datos, eventos y comandos entre los nodos . Los nodos que producen información (publicadores) crean "temas" (por ejemplo, temperatura, ubicación, presión) y publican "muestras". DDS entrega las muestras a los suscriptores que manifiestan interés en dicho tema.
DDS gestiona las tareas de transferencia: direccionamiento de mensajes, serialización y deserialización de datos (para que los suscriptores puedan estar en plataformas diferentes a la del publicador), entrega, control de flujo, reintentos, etc. Cualquier nodo puede ser publicador, suscriptor o ambos simultáneamente.
El modelo de publicación-suscripción DDS prácticamente elimina la programación de red compleja para aplicaciones distribuidas.
DDS admite mecanismos que van más allá del modelo básico de publicación-suscripción. La principal ventaja es que las aplicaciones que utilizan DDS para sus comunicaciones están desacopladas. Se requiere poco tiempo de diseño para gestionar sus interacciones mutuas. En particular, las aplicaciones nunca necesitan información sobre las demás aplicaciones participantes, incluyendo su existencia o ubicación. DDS gestiona de forma transparente la entrega de mensajes sin requerir la intervención de las aplicaciones de usuario, incluyendo:
- determinar quién debe recibir los mensajes
- donde se encuentran los destinatarios
- ¿Qué sucede si no se pueden entregar los mensajes?
DDS permite al usuario especificar parámetros de calidad de servicio (QoS) para configurar de antemano los mecanismos de descubrimiento y comportamiento. Al intercambiar mensajes de forma anónima, DDS simplifica las aplicaciones distribuidas y fomenta programas modulares y bien estructurados. DDS también gestiona automáticamente el intercambio en caliente de publicadores redundantes si el principal falla. 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 publicador no ha expirado) . También vuelve automáticamente al principal cuando se recupera .
Interoperabilidad
Existen implementaciones de software DDS tanto propietarias como de código abierto . Estas 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 primavera de OMG desde 2009 hasta 2013. [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Durante las demostraciones, cada proveedor publicó y se suscribió a los temas de los demás mediante un conjunto de pruebas denominado demostración de formas. Por ejemplo, un proveedor publicaba información sobre una forma y los demás podían suscribirse al tema y mostrar los resultados en su propia pantalla de formas. Cada proveedor se turnaba para publicar la información y el otro para suscribirse. Dos factores 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.

En marzo de 2009, tres proveedores demostraron la interoperabilidad entre los productos individuales e independientes que implementaban el protocolo OMG Real-time Publish-Subscribe versión 2.1 de enero de 2009. La demostración incluyó el descubrimiento de los publicadores y suscriptores de cada uno en diferentes plataformas de sistemas operativos ( Microsoft Windows y Linux ) y admitió comunicaciones de red multicast y unicast . [ 1 ]
La demostración de interoperabilidad de DDS utilizó escenarios como los siguientes:
- Conectividad básica a la red mediante el Protocolo de Internet (IP).
- Descubrimiento de editores y suscriptores
- Calidad del servicio (QoS): Compatibilidad entre solicitante y oferente.
- Redes tolerantes a la latencia
- Múltiples temas e instancias de temas
- Propiedad exclusiva de los temas
- Filtrado de contenido de datos temáticos, incluyendo tiempo y ubicación geográfica.
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 ] la 1.2 en enero de 2007, [ 10 ] y la 1.4 en abril de 2015. [ 11 ] DDS está cubierto por varias patentes estadounidenses, [ 12 ] [ 13 ] [ 14 ] [ 15 ] entre otras.
La especificación DDS describe dos niveles de interfaces:
- Un nivel inferior de publicación-suscripción centrado en datos (DCPS, por sus siglas en inglés) que tiene como objetivo la entrega eficiente de la información adecuada a los destinatarios adecuados.
- Una capa opcional de reconstrucción local de datos superiores (DLRL), que permite una integración sencilla de DDS en la capa de aplicación .
Otros estándares relacionados siguieron al documento central inicial. La especificación del protocolo de interoperabilidad de interoperabilidad de DDS (Real-time Publish-Subscribe Wire Protocol) garantizó que la información publicada sobre un tema mediante la implementación DDS de un proveedor pudiera ser consumida por uno o más suscriptores que utilizaran implementaciones DDS del mismo proveedor o de proveedores diferentes. Si bien la especificación está dirigida a la comunidad DDS, su uso no se limita a ella. La versión 2.0 se publicó 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 de negocio de las propiedades no funcionales. Una extensión de 2012 añadió soporte para flujos. [ 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. Especificaba solo 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 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 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ática es útil. [ 19 ] Un perfil del Lenguaje Unificado de Modelado (UML) especificó dominios y temas DDS para formar 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 lenguaje, 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 de la Arquitectura Común de Agentes de Solicitud de Objetos (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 recursos extremadamente limitados), este protocolo de especificación permite la comunicación entre dispositivos con recursos limitados, como un microcontrolador, por ejemplo, y una red DDS. Permite publicar y suscribirse a temas a través de un servicio intermedio en un dominio DDS [ 23 ] y DDS-RPC (RPC sobre DDS), que define llamadas a procedimientos remotos. Estas 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 síncronos como asíncronos [ 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 ]
Véase también
- Middleware
- Entorno informático de arquitectura abierta
- Object Management Group (OMG), organismo de normalización que desarrolló la especificación.
Referencias
- 1 2 Angelo Corsaro, Gerardo Pardo-Castellote y Clark Tucker (12 de agosto de 2009). "Demostración de interoperabilidad de DDS" (PDF) . Object Management Group. Archivado del original (PDF) el 15 de septiembre de 2011. Recuperado 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 de DDS" . Vídeo . Real-Time Innovations. 14 de diciembre de 2010. Archivado del original el 7 de enero de 2014. Consultado el 9 de noviembre de 2016 .
- 1 2 "Especificación del protocolo de interoperabilidad de cable DDS 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" . Object Management Group. 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 estadounidense US8874686
- ↑ Patente estadounidense US8671135
- ↑ Patente estadounidense US8150988
- ↑ Patente estadounidense 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: Lenguaje DDS PSM ISO/IEC C++ 2003, Versión ptc/2011-01-02, enero de 2011, http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/PDF
- ↑ Tipos de temas extensibles y dinámicos 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: Lenguaje Java 5 PSM para DDSVersión 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" . OMG. 1 de marzo de 2014. Archivado del original el 21 de enero de 2017. Recuperado el 9 de noviembre de 2016 .
- ↑ "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 .
- ↑ "Acerca de la especificación RPC sobre DDS versión 1.0" . 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 .
- Estándares informáticos
- Middleware orientado a mensajes