Lanzamiento de Couchbase Lite 2.8 ha anunciado la compatibilidad con la solución de sincronización de bases de datos peer-to-peer para empresas. La nueva capacidad permite la sincronización directa entre aplicaciones móviles y no móviles integradas con Couchbase Lite sin necesidad de un punto de control basado en la nube.

En este post, ofrecemos una visión general de la función y vamos a demostrar lo fácil que es configurar la sincronización peer-to-peer entre dos clientes. Para más detalles, consulte la documentación para ver la API específica de la plataforma y fragmentos de código de ejemplo.

En primer lugar, algunos casos de uso...

Casos prácticos

Los usuarios de aplicaciones en entornos desconectados que requieren la capacidad de colaborar entre sí son candidatos para la sincronización de bases de datos peer-to-peer. He aquí algunos ejemplos

  • Aplicaciones de campo :
    Los trabajadores sobre el terreno en una obra, los voluntarios en una zona de recuperación de catástrofes, los mineros o los sanitarios en clínicas móviles pueden colaborar y coordinar tareas entre sí a través de una red de área local sin necesidad de conexión a Internet.
  • Viajar :
    Los auxiliares de vuelo que actualizan los pedidos de comida pueden actualizar la información de inventario que se sincroniza automáticamente con otros auxiliares durante el vuelo. De este modo, un auxiliar de vuelo no ofrece una comida después de que se haya ofrecido la última.
  • Hostelería :
    Los flujos de trabajo de los pedidos de comida en los restaurantes pueden automatizarse. Los camareros pueden tomar y enviar pedidos a la cocina, comprobar el estado de los pedidos, cobrar, etc. desde dispositivos móviles sin moverse de la mesa del cliente.
  • Marítimo :
    Los miembros de la tripulación a bordo de los buques pueden registrar y sincronizar en tiempo real las métricas de los equipos con otros miembros de la tripulación, lo que permite tomar decisiones en tiempo real.

Despliegue típico

A continuación se muestra un despliegue típico utilizando Couchbase para la sincronización de bases de datos peer-to-peer en entornos desconectados. Un entorno desconectado o el "borde" puede funcionar de forma autónoma sin ninguna conectividad a los servidores backend basados en la nube. Sin embargo, cuando hay conectividad a Internet, los cambios desde el borde desconectado pueden ser sincronizado con el servidor Couchbase remoto a través de Sync Gateway.

Los clientes de Couchbase Lite pueden organizarse en diferentes topologías. Puede ser una topología en estrella donde un cliente puede ser designado como punto de control primario o escucha y los otros clientes pueden comunicarse entre sí a través del escucha designado. Alternativamente, los clientes pueden ser organizados en una topología de malla conectada donde cada cliente está conectado directamente a cada otro cliente en la misma red.

Flujo de trabajo entre iguales

La sincronización entre pares se basa en Websockets y funciona en redes basadas en IP. Es el mismo protocolo que se utiliza para sincronizar con el Sync Gateway remoto. Este es un flujo de trabajo de alto nivel de sincronización de datos peer-to-peer con Couchbase Lite. Cada par participante toma el papel de un "Par pasivo" que es análogo a un servidor en una comunicación típica cliente-servidor y/o un "Par Activo" que es análogo a un cliente en una comunicación típica cliente-servidor. Una aplicación puede desempeñar tanto el papel de par activo como el de par pasivo.

  1. En receptor de websockets se inicializa en el Peer Pasivo con la base de datos de Couchbase Lite a sincronizar. Hay una serie de opciones configurables disponibles, incluyendo la posibilidad de especificar el puerto, la interfaz de red, TLSIdentity, etc.
  2. Una de las opciones configurables del Oyente es la función de llamada de retorno del autenticador que se invocará cuando el receptor reciba las credenciales del par activo. Este ListenerAuthenticator debe ser implementada por la aplicación e incluir lógica para autenticar las credenciales del cliente.
  3. El par pasivo anuncia sus servicios. Este paso se maneja completamente dentro de la aplicación y Couchbase Lite no juega ningún papel aquí. Típicamente, las aplicaciones aprovechan marcos de trabajo específicos de la plataforma como NSNetService para este fin. De hecho, dependiendo del despliegue, este paso puede ser opcional. Por ejemplo, el dispositivo podría estar configurado con una dirección IP estática o, si hay soporte DNS, el cliente podría estar a la escucha en una URL conocida.
  4. El peer activo o cliente busca peers pasivos a los que conectarse. De nuevo, este paso se maneja completamente dentro de la aplicación y Couchbase Lite no juega ningún papel aquí. Típicamente, las aplicaciones aprovechan marcos de trabajo específicos de la plataforma como NSNetService para este fin. Por supuesto, si el Oyente está escuchando en una dirección conocida, entonces este paso sería opcional.
  5. Una vez que el par activo identifica el par al que debe conectarse, debe establecer una conexión de replicación con el otro extremo. El replicador para la sincronización entre pares se configura exactamente de la misma forma que si estableciera la conexión con la puerta de enlace de sincronización remota.
  6. Como parte del protocolo TLS de establecimiento de la conexión, se autentican los certificados del servidor. Esto ocurre de forma transparente para la aplicación.
  7. Una vez autenticado el certificado del servidor, las credenciales del cliente se envían al receptor para su autenticación. Couchbase Lite soporta tanto la autenticación básica como la basada en las credenciales del cliente. autenticación.
  8. Las credenciales entrantes se envían a la dirección registrada ListenerAuthenticator donde se validan. Una vez autenticados, se establece el canal de comunicación entre los pares.
  9. A partir de ese momento, cada vez que se produce un cambio de documento en la base de datos, el cambio de datos se sincroniza automáticamente con el otro extremo. La dirección de la transferencia de datos puede ser unidireccional o bidireccional.

Atributos de la tecnología Sync

Sincronizar correctamente es difícil. Hay varias consideraciones a tener en cuenta y aquí tienes una hoja de trucos sobre cómo funciona la sincronización entre pares. Consulta la documentación para más detalles

Característica Sincronización Peer-to-Peer de Couchbase Lite
Seguridad Compatibilidad inmediata con el cifrado TLS. Autenticación basada en certificados. Autenticación básica. Las aplicaciones tienen que escribir 0 líneas de código para obtener el cifrado TLS.
Resistencia de la red Reintentos con retroceso exponencial. Las réplicas continuas reintentan indefinidamente, mientras que las réplicas únicas abandonan tras un número determinado de intentos.
Eficacia Con la tecnología Delta Sync, optimice los costes de transferencia de datos sincronizando sólo las partes del documento que han cambiado.
Conflictos de datos Integrado. Por defecto, los conflictos se resuelven automáticamente utilizando políticas predefinidas. Además, las aplicaciones tienen flexibilidad para especificar sus propias funciones personalizadas de fusión bidireccional para tratar los conflictos.
Facilidad de uso para los desarrolladores Sólo hacen falta unas pocas líneas de código para poner en marcha la sincronización peer-to-peer. Por supuesto, hay una serie de opciones configurables para personalizarlo según tus necesidades
Soporte multiplataforma Couchbase Lite es compatible con varias plataformas móviles y no móviles. La funcionalidad de sincronización de datos peer-to-peer permite la sincronización entre plataformas heterogéneas - por ejemplo entre una aplicación Android y iOS
Topologías flexibles Dado que cada peer participante puede actuar como Listener, Replicator o ambos, los clientes de Couchbase Lite que participan en la sincronización peer-to-peer pueden organizarse en diferentes topologías como estrella, malla, etc. La elección depende de las necesidades de la aplicación

Código de inicio

Puede consultar nuestra páginas de tutoriales para una aplicación completa que demuestra las capacidades de sincronización peer-to-peer. Pero aquí, me gustaría compartir el código mínimo necesario para poner en marcha la sincronización para que puedas ver por ti mismo lo fácil que es poner en marcha el flujo de trabajo descrito anteriormente. Aunque los fragmentos son para iOS, debería ser sencillo adaptarlo a cualquier otra plataforma Couchbase Lite.

Par pasivo

El siguiente fragmento de código inicializa la escucha en el par pasivo que escucha las conexiones entrantes entre pares

Par activo

El siguiente fragmento de código inicializa el replicador para seguro sincronización peer-to-peer. Es la misma lógica de replicación que se utiliza cuando se replica a un punto final remoto.

Ya está. En tan sólo unos sencillos pasos, puedes conseguir una sincronización segura peer-to-peer con Couchbase Lite.

¿Qué pasa con la Sincronización entre iguales en 2.1?

Si ha estado trabajando con Couchbase Lite, probablemente esté familiarizado con la función Sincronización entre pares que se introdujo en 2.1 liberación de Couchbase Lite. En la versión 2.1, proporcionamos un MessageEndpointConnection que debía ser implementada por la aplicación. El replicador de Couchbase Lite se comunicaba con la aplicación a través de esta interfaz, proporcionando los cambios de datos que debían sincronizarse. Cómo se transferían los datos al par receptor dependía completamente de la aplicación. Proporcionar una interfaz ofrecía a los desarrolladores de aplicaciones la flexibilidad de utilizar cualquier marco de comunicaciones de su elección y podía utilizarse a través de cualquier transporte (IP o no IP).

En 2.8 hemos simplificado enormemente la tarea proporcionando una implementación "out-of-box" para la sincronización peer-to-peer sobre redes IP. Como verás en breve, sólo hacen falta unas pocas líneas de código para ponerlo en marcha. El sitio MessageEndpointConnection sigue siendo compatible. Así que si ya has implementado tu solución de sincronización con lo que se ofrecía en 2.1, no es necesario que migres tu solución para utilizar la nueva API. De hecho, esa sigue siendo su única opción si está sincronizando a través de redes no basadas en IP. Sin embargo, si estás sincronizando a través de redes IP, sería recomendable ya que simplificaría enormemente el código de tu aplicación y reduciría los costes de pruebas y mantenimiento.

 

¿Qué sigue?

Couchbase es la única solución de sincronización de bases de datos peer-to-peer que permite a los clientes comunicarse directamente entre sí en entornos desconectados.

Puede descargar Couchbase Lite y evauar la funcionalidad de forma gratuita.

Si quiere profundizar en los detalles, aquí puede encontrar más información
Documentación: Peer-to-Peer
Tutoriales: Peer-to-Peer
Página de soluciones: Soluciones entre iguales
Conectar vídeo con demostración: Sincronización entre pares con Couchbase Lite

En Foros de Couchbase es un buen lugar para plantear preguntas. Por favor, deje un comentario a continuación o no dude en ponerse en contacto conmigo a través de Twitter o envíame un correo electrónico

 

Autor

Publicado por Priya Rajagopal, Directora de Gestión de Productos

Priya Rajagopal es directora sénior de gestión de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el perímetro. Lleva más de 20 años dedicándose profesionalmente al desarrollo de software en varios puestos de liderazgo técnico y de producto, con más de 10 años centrados en tecnologías móviles. Como delegada de estándares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de estándares IPTV. Tiene 22 patentes en las áreas de redes y seguridad de plataformas.

1 Comentarios

  1. Supongo que couchbase ha renunciado a la sincronización móvil peer-to-peer en una plataforma Android. He mirado la documentación y no he conseguido que funcione. Los únicos ejemplos de demostración son con Ios y Xamarin. No estoy seguro de si es tan simple de implementar por qué un simple ejemplo de demostración de la comunicación bidireccional debe ser fácil de proporcionar a la comunidad Android. Estoy a punto de renunciar a couchbase.

Dejar una respuesta