Características NDDS
Comunicaciones anónimas
Las aplicaciones usan nombres para identificar tópicos, no direcciones de red.
Conversión de datos automática
No es necesario el Marshalling
Configuración de red dinámica
Arranca, añade y borra los nodos en cualquier secuencia, en cualquier momento
Características NDDS
NDDS es rápido
Mensajes de 256byte a 4 nodos
Unicast: inferior a 0.4ms
Multicast: inferior a 0.25 ms
Mensajes de 1024byte a 4 nodos
Unicast: inferior a 0.75ms
Multicast: inferior a 0.50ms
Para NDDS 2.3 sobre VxWorks con PIII(450MHz) sobre Ethernet de 100Mb
Características NDDS
API muy simple
Con sólo 4 llamadas se pueden publicar mensajes
Suscripción en sólo 3
Disponible para C, C++ y Java
Reemplaza cientos de llamadas a sockets
NddsInit(0,NULL);
HelloMsgNddsRegister();
publication = NddsPublicationCreate("Mensaje","Hola", &temp, persistence, strength);
NddsPublicationSend(publication);
Suscripciones NDDS
Suscripciones
Control de threads en tiempo real
Determinismo
Flujo de control
Propiedades de la suscripción
Plazo entrega
Separación mínima
(Gp:) sin notificación
(Gp:) Nuevas
notificaciones
(Gp:) tiempo
(Gp:) Separación mínima
(Gp:) Plazo entrega
(Gp:) timeout
notificación
Publicaciones NDDS
Publicaciones
Reemplazo rápido y transparente…
Actualización fácil
Propiedades de la publicación
Fuerza
Persistencia
Los suscriptores toman los envíos más fuertes dentro del marco de tiempo persistente
Toma el más
fuerte
Toma
cualquiera
tiempo
persistencia
Publicación-Suscripción fiable
Modo best-effort minimiza la latencia. NDDS no reenvía los paquetes perdidos (streaming data)
Modo fiable permite recibir los envíos en orden. NDDS reenvía automáticamente los paquetes perdidos (Comandos y eventos)
(Gp:) X
(Gp:) X
(Gp:) X
(Gp:) X
Modo Best-effort
Modo Fiable
NDDS Cliente–Servidor
Los servicios tienen nombre y fuerza
El cliente define el periodo de espera y el plazo de entrega (deadline)
NDDS
Envía las solicitudes a los proveedores seleccionados
Devuelve el más fuerte como primera respuesta
Devuelve fallo si el deadline expira.
Server1
Strength = 1
F(X) = 2.9
Cliente
Cálculo "F(X)"?
F(X) = 3
Server2
Strength = 4
F(X) = 3
Server3
Strength = 2
F(X) =3.1
(Gp:) Toma el mejor
(Gp:) Toma el primero
(Gp:) fallo
(Gp:) tiempo
(Gp:) espera
(Gp:) deadline
RTPS Reliability Model
Control total para el programador
Usa un caché de históricos para conseguir el envío en orden
Esta basado en NACK, con ACKs opcional
En el publicador, la aplicación manda el envío una sola vez
El programador establece el tamaño de la caché
NDDS guarda en caché todos los envíos hasta que todos los suscriptores lo obtienen
Usa marcas de agua para el control de flujo
Suscriptores: envíos en orden
Cada suscriptor establece
Caché de históricos para almacenar los envíos fuera de orden
Deadline
NDDS guarda en caché los envíos fuera de orden y solicita su reenvío
Usa ACK y NACK
(Gp:) Sin separación mínima
(Gp:) Deadline
(Gp:) Notificación
por timeout
(Gp:) Tiempo
(Gp:) Deadline es mayor que la frecuencia de
envío para dar tiempo para reenvíos
NDDS Speculative Caching Method
(Gp:) Especula con el 6 en caché.
(Gp:) Pone el 5 antes del 6 en la caché.
Llama a la función de callback con 5 y después 6.
(Gp:) Publica 4
Pone 4 en caché
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 5
(Gp:) 6
(Gp:) 6
(Gp:) 5
(Gp:) Borra 4 de caché
(Gp:) Publica 5
Pone 5 en caché
(Gp:) Publica 6
Pone 6 en caché
(Gp:) Borra 5 y 6 de caché
(Gp:) Llama a la función de callback con el 4
(Gp:) Envía 4
(Gp:) Envía 5
(Gp:) Envía 6
(Gp:) Reenvía 5
(Gp:) Ack 4
(Gp:) Solicita 5
(Gp:) Ack 5 y 6
(Gp:) Borra 5 y 6 de la caché
(Gp:) Publicador
(Gp:) Suscriptor
Ajuste de fiabilidad
Control de flujo
Al publicador se le avisa cuando la cola está a punto de llenarse
El publicador ralentiza la frecuencia para permitir a los suscriptores la captura
Control de buffer
Los publicadores y suscriptores controlan el tamaño de sus buffers
Ajustan su tamaño para afinar rendimiento y memoria
Modelo basado en NACK que disminuye la carga de la red
Beneficios de NDDS
Sin punto único de fallo
Marshalling/Demarshalling Transparente
Arranque aleatorio y descubrimiento dinámico
Patrones de suscripción
Grupos de publicación
Múltiples dominios
Página anterior | Volver al principio del trabajo | Página siguiente |