ADN en replicación.
Gráfico cortesía de Madprime con permiso bajo licencia CC BY-SA 2.0
Pasarela de sincronización
Pasarela de sincronización forma el "pegamento" entre Couchbase Lite y Servidor Couchbase en el Couchbase Móvil pila. Es una pasarela web segura que permite la sincronización y el acceso a los datos a través de la web.
Esa es una forma de verlo, que no hace justicia a Sync Gateway. Se puede utilizar de forma inteligente para enlazar clientes sin ningún back-end, por ejemplo. En una entrada anteriorya hablé de la compatibilidad con OpenID Connect. Sync Gateway actúa allí para facilitar todo el flujo de autorización. Hay más, pero en este post quiero centrarme en una nueva capacidad añadida en la versión 1.3.
Una mirada más profunda a la sincronización
La sincronización consiste en mantener la coherencia de los datos en dos o más instancias de una base de datos. La sincronización puede ser un problema difícil. Cada vez que dos escritores intentan hacer cambios contradictorios, la arquitectura tiene que lidiar con ello.
Algunas bases de datos simplemente ignoran el problema, obligando a utilizar un único escritor. Otras dependen de la detección de conflictos en tiempo real y su rechazo. Estos enfoques no funcionan en los casos en que distintas copias de la base de datos no siempre pueden comunicarse para coordinarse.
Una buena arquitectura de sincronización es un componente crítico de una solución completa que aborda usos en los que un dispositivo puede estar en una conexión de red lenta, o estar desconectado por completo parte del tiempo. Sync Gateway implementa una pieza central de esa arquitectura en Couchbase.
Nos referimos a la pila completa como Couchbase Mobile. Los usos móviles son un caso obvio donde el rendimiento offline puede ser importante. Sin embargo, puedes usar Couchbase Mobile, incluyendo Sync Gateway, en muchos otros escenarios. Couchbase Lite y Sync Gateway funcionan en una amplia gama de plataformas, y normalmente son fáciles de portar a otras nuevas. Esto hace que Couchbase Mobile sea útil para cualquier cosa, desde ordenadores de sobremesa (o quizás debería decir portátiles) hasta IoT.
Estas son algunas de las características clave que hay que conocer sobre las réplicas de Sync Gateway en general:
- Configuración JSON para especificar las réplicas
- Admite varias réplicas simultáneas
- Puede realizar réplicas tanto en modo "OneShot" como en modo "Continuous".
- No almacena nada de forma persistente
- Sin estado: puede interrumpirse o reiniciarse en cualquier momento sin efectos secundarios negativos.
- Filtrar las réplicas mediante canales
Replicación entre instancias
La versión 1.3 añade una nueva función a Sync Gateway: la capacidad de replicar (sincronizar) entre instancias de Sync Gateway. Cada replicación se configura como un flujo unidireccional entre dos puntos finales. Esto las hace bastante flexibles.
Por ejemplo, una replicación sencilla puede especificar dos bases de datos en la misma instancia de Sync Gateway. Esto puede no parecer tan interesante, pero dado que cada base de datos puede tener su propia función de sincronización, puede utilizar una base de datos como alimentador de otra, permitiendo que una lógica empresarial compleja gestione lo que se transmite.
Este diagrama muestra un caso de uso más típico. Aquí, tenemos dos clusters de Couchbase Server, y dos clusters de Sync Gateway. Los clusters Sync Gateway ejecutan una replicación bidireccional (en realidad, dos réplicas unidireccionales). Esto podría constituir la base de un sistema distribuido globalmente. Los procedimientos estándar de enrutamiento de red garantizarían que los clientes se conectaran al Sync Gateway más cercano, mejorando el rendimiento de la red. Para más detalles sobre la replicación en Sync Gateway, eche un vistazo a la documentación aquí.
Revisiones de documentos y conflictos
Es importante entender cómo Couchbase Mobile maneja la resolución de conflictos. CBM usa lo que se conoce como control de concurrencia multiversión. Puedes pensar que CBM no almacena sólo una versión de un documento, sino más bien un árbol de revisiones. Dos escrituras desconectadas que actualicen la misma revisión original de un documento crean dos nuevas revisiones. Ambas existen en el árbol. Couchbase te da varias formas de resolver el conflicto. Consulte la documentación aquí para más detalles.
Más recursos
Adam Wiggins, cofundador de Heroku, escribió un gran artículo sobre por qué la sincronización ofrece una mejor experiencia de usuario.
Pronto publicaré un artículo de seguimiento que ilustrará un ejemplo sencillo de replicación entre instancias. Puedes encontrar el código en github. (Tenga en cuenta que se trata de un ejemplo intencionadamente sencillo. No pretende ser un código de calidad de producción).
Posdata
Consulte más recursos en nuestra portal para desarrolladores y síganos en Twitter @CouchbaseDev.
Puede enviar preguntas a nuestro foros. Y participamos activamente en Stack Overflow.
Puede seguirme personalmente en @HodGreeley