A replicação e a sincronização de dados podem parecer redundantes à primeira vista. Ambos se referem à cópia de dados de um repositório persistente para outro para fins de consistência em uma arquitetura distribuída. Mas para o Couchbase, cada termo tem um significado diferente e cada um é usado para finalidades diferentes.
Esta postagem é uma visão geral do Couchbase Cross Datacenter Replication (XDCR), que fornece replicação de dados entre clusters de bancos de dados, e do Couchbase Sync Gateway/Capella App Services, que permite a sincronização de dados para aplicativos móveis, de IoT e de borda.
Replicação entre data centers (XDCR)
Visão geral do XDCR
O Replicação entre data centers (XDCR) permite a replicação de dados entre clusters localizados em diferentes centros de dados. A replicação entre clusters é usada para garantir a distribuição uniforme e a alta disponibilidade dos dados. O protocolo usado para XDCR é chamado DCP (protocolo de alteração de dados). O DCP também é usado para replicação entre clusters e, em ambos os casos, é usado para replicação de memória para memória de baixa latência.
O XDCR foi projetado para replicação global: replicação de dados entre várias regiões, vários data centers, vários provedores de nuvem ou qualquer combinação. São necessários vários clusters se você quiser replicar dados em diferentes regiões. Ao contrário de outros bancos de dados, a funcionalidade de vários data centers do Couchbase não é fornecida pela extensão de um único cluster em vários data centers. Devido às altas latências de rede, os nós/servidores em diferentes regiões não podem fazer parte do mesmo cluster. Cada cluster é independente.
O XDCR pode ser muito simples para começar, mas há muitos recursos e opções avançados disponíveis. Ele oferece suporte à operação unidirecional e bidirecional e à replicação ativo-ativo com resolução automática de conflitos. Use a replicação filtrada para replicar subconjuntos de documentos.
Porcas e parafusos do XDCR
O XDCR replica os dados de um fonte para um balde alvo (o XDCR também suporta replicação de escopo/coleção, tanto implícita quanto explícita). A replicação é de memória para memória e assíncrona, e tanto os dados existentes quanto os modificados são replicados.
Vários fluxos de dados são embaralhados em todos os shards (vBuckets) para mover os dados em paralelo para o cluster de destino, a fim de reduzir ainda mais a latência.
Os clusters de origem e destino podem ter números diferentes de servidores (nós), e o XDCR é resistente a mudanças de topologia.
Casos de uso do XDCR
As configurações unidirecionais (unidirecionais) e bidirecionais (bidirecionais) têm seus próprios casos de uso.
Replicação unidirecional
A replicação unidirecional é excelente para:
-
- Recuperação de desastres - Os dados mais recentes estão sempre disponíveis no caso de um desastre. Isso permite um failover e uma recuperação rápidos sem perda de dados ou tempo de inatividade.
- Cópias de desenvolvimento/teste - Fornecer cópias dos dados de produção para fins de teste e desenvolvimento. Isso reduz a necessidade de cópia manual de dados e reduz o risco de erros ou inconsistências entre os ambientes. O XDCR oferece replicação quase em tempo real, o que significa que os dados de teste estão sempre atualizados em relação aos dados de produção.
- Relatórios/Arquivo - A replicação de dados para um cluster dedicado de relatórios ou de arquivamento permite a geração eficiente de relatórios e análises sem afetar o desempenho do ambiente de produção. O XDCR permite a replicação de dados em tempo real ou quase em tempo real, de modo que o cluster de relatórios ou de arquivamento esteja sempre atualizado com os dados mais recentes. Isso o torna uma solução para organizações que precisam manter dados históricos para fins de conformidade ou análise.
Replicação bidirecional
A replicação bidirecional pode ser usada para casos de uso como:
-
- Vários clusters ativos "quentes" - Ao replicar dados em vários datacenters, o XDCR pode ajudar a fornecer balanceamento de carga eficiente e alta disponibilidade de dados. O XDCR permite a replicação de dados em tempo real ou quase em tempo real, garantindo que todos os clusters ativos estejam sempre sincronizados. Adequado para organizações que precisam atender a grandes volumes de tráfego ou que têm uma base de usuários distribuída globalmente.
- Localidade dos dados - Com o XDCR, é possível criar clusters geograficamente distribuídos, permitindo que os dados sejam armazenados mais perto dos usuários e reduzindo a latência. O XDCR pode replicar automaticamente os dados em vários centros de dados, garantindo que os dados estejam sempre atualizados no local mais próximo.
- Geofencing - Geofencing O XDCR pode ser configurado para replicar determinados dados apenas para clusters específicos, garantindo que os dados estejam disponíveis apenas em regiões geográficas designadas. Isso pode ser usado por organizações que precisam estar em conformidade com as normas de privacidade de dados ou impor restrições de geofencing em seus dados.
Opções do XDCR
Resolução de conflitos resolve os conflitos que surgem quando diferentes nós do cluster tentam atualizar os mesmos dados simultaneamente. A resolução de conflitos baseada em sequência resolve os conflitos com base na ordem em que as atualizações são recebidas. Por outro lado, a resolução de conflitos baseada em carimbo de data/hora usa o carimbo de data/hora das atualizações para determinar qual atualização é mais recente e deve ser aplicada. Dependendo do caso de uso específico, um tipo de resolução de conflitos pode ser mais adequado, e o XDCR do Couchbase permite flexibilidade na escolha do método apropriado.
Filtragem permite que os usuários especifiquem quais documentos devem ser incluídos ou excluídos da replicação entre clusters. Isso pode ser feito com base em critérios como tipo de documento, valores de atributos ou outros metadados. A filtragem do XDCR oferece maior controle sobre quais documentos são replicados, reduzindo a quantidade de tráfego de rede desnecessário e a sobrecarga de armazenamento, melhorando a eficiência da replicação e o desempenho geral do sistema.
Exclusão de documentos em um cluster acionará a exclusão do documento correspondente no outro cluster. No entanto, esse comportamento pode ser filtrado, permitindo que as organizações mantenham dados históricos para casos de uso de arquivamento ou relatórios. Ao filtrar as exclusões de documentos, as organizações podem garantir que os dados permaneçam disponíveis em seus clusters de relatórios ou de arquivamento, mesmo que os documentos correspondentes tenham sido excluídos no cluster de produção. Isso pode ajudar as organizações a cumprir as políticas de retenção de dados e garantir que dados importantes estejam sempre disponíveis para análise e geração de relatórios.
O XDCR também pode oferecer suporte a cenários de migração, como a migração independente de infraestrutura do local para a nuvem.
Resumo do XDCR
O recurso XDCR do Couchbase é um dos principais recursos que primeiro atrai os clientes e usuários do Couchbase. Trata-se de uma ferramenta simples e flexível para replicar dados em diferentes clusters localizados em diferentes centros de dados.
A tabela a seguir lista os principais casos de uso do XDCR em uma implantação do Couchbase Server ou do Couchbase Capella:
XDCR |
Recuperação de desastres |
Cópias de desenvolvimento/teste |
Relatórios, auditoria, arquivamento |
Localidade do data center |
Geo-fencing |
Migração de dados na nuvem |
Veja uma demonstração ao vivo de Couchbase XDCR em açãoabaixo:
Sync Gateway/Serviços de aplicativos Capella
Visão geral da pilha de produtos do Couchbase Mobile
Para entender a função da sincronização em um aplicativo com base no Couchbase, começamos examinando o Couchbase Mobile pilha de produtos. O Couchbase Mobile foi explicitamente projetado para habilitar os primeiros aplicativos móveis e de borda off-line. A pilha consiste no seguinte:
-
- Servidor Couchbase - nosso principal e moderno servidor de banco de dados com suporte a SQL, análises, FTS e eventos.
- Couchbase Lite - a versão incorporável do Couchbase para dispositivos móveis e dispositivos incorporados personalizados.
- Gateway de sincronização - fica entre a nuvem e os bancos de dados de borda e é responsável pela sincronização segura dos dados, pelo roteamento e pelo controle de acesso entre os clientes móveis e as camadas do servidor.
Esses recursos podem ser implementados de duas maneiras:
-
- Totalmente gerenciado com Couchbase Capellao banco de dados como serviço hospedado pelo Couchbase.
- Autogerenciado, em que você mesmo instala e gerencia os produtos Couchbase Mobile em nuvens públicas ou privadas, em um serviço de borda de nuvem ou no local.

A pilha de produtos do Couchbase Mobile
Sobre o Sync Gateway
O Sync Gateway foi criado especificamente para sincronizar dados e fornecer autorização e autenticação para aplicativos móveis e de IoT em grande escala.
Ele foi projetado, em primeiro lugar, para fornecer sincronização de dados de nuvem para borda. Essa é a capacidade de sincronizar dados usando um protocolo WebSockets entre o Couchbase na nuvem e os dispositivos que executam o Couchbase Lite e entre implantações individuais do Sync Gateway, inclusive entre o Sync Gateway e o App Services.
O Sync Gateway também oferece:
-
- APIs REST que permitem que clientes da Web acessem dados de sincronização.
- APIs administrativas para trabalhar remotamente com configurações de implantação.
- Monitoramento de estatísticas de desempenho e eventos.
Sincronização de dados da nuvem para a borda
Sincronização com o Couchbase Lite
A sincronização entre o Couchbase Server/Capella e o Couchbase Lite é bidirecional e iniciada pelo dispositivo de borda de forma push ou pull. A replicação pode ser única, contínua ou executada sob demanda, oferecendo suporte a muitas condições e casos de uso.
A carga útil da sincronização são dados JSON ou anexos binários. No caso de anexos binários/blob, as cargas úteis sob 20 MB são replicados. Se o blob for sobre 20 MB, o documento em si é replicado, mas não o blob.
O Couchbase Lite permite que os aplicativos utilizem filtros de granularidade fina no replicador para determinar quais documentos são sincronizados e para onde encaminhá-los. Isso controla quando e quais documentos são sincronizados.
As réplicas são enviadas usando WebSockets para permitir o envio de mensagens full-duplex entre hosts remotos em uma única conexão TCP. Portanto, é um protocolo mais rápido, reduzindo o uso de largura de banda e recursos de soquete em comparação com protocolos baseados em REST sobre HTTP.
O Sync Gateway/App Services é responsável por manter a consistência adequada para essas replicações.

Clientes incorporados do Couchbase Lite sincronizando com o Couchbase na nuvem
Replicação de gateway entre sincronizações
Além de sincronizar dados diretamente do Couchbase Lite para o Couchbase Server ou Capella, o Sync Gateway pode replicar para outras instâncias do Sync Gateway e/ou Capella App Services usando um recurso chamado Inter-Sync Gateway Replication.
Assim como a sincronização do Couchbase Lite, as replicações do Inter-Sync Gateway são bidirecionais e baseadas em WebSockets.
As réplicas do Inter-Sync Gateway tentam reiniciar automaticamente em caso de interrupção ou sempre que um nó é reiniciado e podem ser configuradas para diminuir as tentativas de reinício em casos de interrupção prolongada da rede.
O Inter-Sync Gateway Replication oferece alta disponibilidade integrada e usa a distribuição de nós para garantir que todas as replicações em execução sejam distribuídas uniformemente pelos nós disponíveis, independentemente do nó de origem.
A capacidade de sincronizar dados entre implantações do Sync Gateway permite arquitetar topologias de borda hierárquicas e de várias camadas que suportam disponibilidade extremamente alta, baixa latência, privacidade de dados e uso eficiente da largura de banda.

Couchbase Sync Gateway na borda sincronizando com o Sync Gateway/App Services na nuvem
-
- Para obter mais informações sobre o uso de Replicação do Inter-Sync Gateway com o App Services, confira este blog.
Delta Sync
O Sync Gateway / App Services pode rastrear e replicar as partes de um documento que foram alteradas sem enviar o documento inteiro. Isso permite que menos dados sejam enviados por redes com largura de banda limitada, tornando os aplicativos mais rápidos e eficientes.

O Delta Sync sincroniza apenas os dados alterados, não o documento completo
Resolução de conflitos
Para aplicativos móveis que utilizam gravações de dados descentralizadas, os mesmos dados podem ser modificados simultaneamente em vários dispositivos, criando um conflito. Para resolver conflitos, você pode aplicar uma das políticas de resolução de conflitos incorporadas, que podem ser facilmente incluídas em suas próprias replicações. O objetivo da resolução automática de conflitos é retornar uma revisão vencedora com base na aplicação consistente da política de resolução de conflitos configurada.
A resolução de conflitos do Sync Gateway/App Services usa árvores de revisão e uma regra de resolução padrão de o ramo mais ativo vence. Dessa forma, os conflitos são resolvidos logicamente com base na atividade, em vez da resolução de conflitos baseada no relógio do sistema, que leva um vitórias da mudança mais recente que são problemáticas devido às questões relacionadas às diferenças de relógio entre os dispositivos.
-
- Leia mais sobre como trabalhar com Resolução de conflitos do Couchbase Lite e como usar Resolução de conflitos de replicação do Inter-Sync Gateway.
Controle de acesso
Modelo
Os canais são fundamentais para entender como o Sync Gateway compartilha e controla o acesso aos documentos. Os canais são basicamente intermediários entre documentos e usuários.
Conforme ilustrado no diagrama a seguir, cada documento no banco de dados pertence a um conjunto
de canais, e cada usuário tem permissão para acessar um conjunto de canais.

Modelo de acesso a documentos
Quando um usuário cria um documento, ele é atribuído a um ou mais canais. Os usuários só podem acessar os documentos atribuídos aos canais para os quais lhes foi concedido acesso; a autorização é gerenciada pelo Sync Gateway.
Por exemplo, os documentos adicionados a um canal público ficam visíveis para qualquer usuário. Um canal também pode ser privado e restringir o acesso a um único usuário ou fornecer acesso compartilhado entre vários usuários,
As funções são coleções nomeadas de canais. Um usuário é atribuído a uma função e, portanto, herda o acesso ao canal atribuído à função. Esse controle pode ser alterado a qualquer momento e até mesmo revogado para evitar acesso indevido.
-
- Saiba mais sobre Controle de acesso ao Sync Gateway.
Função de sincronização
O sincronização é uma função JavaScript que é chamada toda vez que uma nova revisão ou atualização é feita em um documento.
A função de sincronização pode ser usada para:
-
- Validar documentos
- Autorizar alterações
- Conceder acesso do usuário aos canais
- Atribuir documentos a canais
A função de sincronização pode fornecer controle de acesso no nível do documento para leituras e no nível do campo para gravações.
-
- Saiba mais sobre Função de sincronização do Sync Gateway.
Resumo dos serviços do aplicativo Sync Gateway/Capella
Os recursos de sincronização de dados do Couchbase Sync Gateway e do Capella App Services são ideais para aplicativos móveis e de IoT, nos quais os dados mudam rapidamente e as atualizações precisam ser refletidas instantaneamente em um ecossistema distribuído de usuários e dispositivos.
A tabela a seguir fornece uma lista rápida dos casos de uso aplicáveis. Se o seu aplicativo exigir qualquer um desses recursos, o Sync Gateway/App Services é a solução:
Gateway de sincronização/Serviços de aplicativos |
Sincronização de dados da nuvem para a borda |
Criado para topologias de borda de várias camadas |
Autenticação, autorização |
Roteamento preciso de dados |
Resolução de conflitos personalizável |
Revogação de acesso ao canal |
Confira esta demonstração ao vivo de Gateway de sincronização do Couchbase em um cenário de bagagem de avião:
Conclusão
O Couchbase é incomparável em sua capacidade de replicar e sincronizar dados em uma rede global. aplicativo distribuído para fornecer consistência, integridade e recuperação de desastres para aplicativos essenciais, desde a nuvem até a borda.
Esperamos que esta postagem esclareça a função e os usos do Couchbase XDCR e do Couchbase Sync Gateway/Capella App Services para que você saiba qual deles deve ser usado para seus requisitos específicos.