XDCR é um sistema de replicação de dados assíncrono de alto desempenho usado principalmente para replicar dados entre os clusters do Couchbase implantados em diferentes data centers. Várias empresas da Fortune 500 confiam no XDCR para seus aplicativos de missão crítica. Alta disponibilidade, recuperação de desastres e localidade de dados são os principais aplicativos em que o XDCR é a solução ideal.

O XDCR foi projetado para oferecer alta taxa de transferência e desempenho resiliente para a maioria dos casos de uso, mas pode haver casos em que ele precise ser ajustado para obter o desempenho ideal. Introduzimos as configurações avançadas para permitir esse ajuste e personalização do desempenho.

O conteúdo a seguir tem o objetivo de fornecer orientações genéricas sobre o ajuste do XDCR por meio das Configurações avançadas que podem ser acessadas pelo Console do administrador do Couchbase e pelas APIs compatíveis.

Ao adicionar uma replicação pela primeira vez, você pode clicar em "Show advanced settings" (Mostrar configurações avançadas) para exibir as opções, conforme mostrado abaixo:

Um subconjunto de configurações do XDCR mais relevantes para o ajuste está indicado abaixo. Essas configurações podem ser usadas para melhorar a taxa de transferência ou para conservar a largura de banda da rede.

Configurações avançadas do XDCR

  • Bocais de origem (SN) : Para definir o número de remetentes por nó; padrão = 2
  • Bocais de destino (TN) : Para definir o número de receptores por nó; padrão = 2
  • Contagem de lotes (BC) - Para definir o número de itens por lote de replicação; padrão = 500
  • Batch Size (BS) - Para definir o tamanho máximo em Kilobytes para cada lote; padrão = 2048
  • Optimistic Replication Threshold (ORT): define um limite em bytes; (documentos com tamanho inferior a esse limite são replicados sem executar uma verificação get_meta); padrão = 256

Ajuste de desempenho

Alguns fatores que influenciam o desempenho podem ser a natureza dos dados, a taxa de mutação dos dados, a carga de trabalho nos clusters, a configuração da rede etc. Com base nesses parâmetros, a replicação deve ser ajustada para obter o desempenho desejado.

Algumas das práticas recomendadas para melhorar a taxa de transferência ou conservar a largura de banda são indicadas abaixo:

a. Melhorar a taxa de transferência:

  • Considerando o espaço livre de recursos nos clusters de origem e destino, recomendamos um intervalo maior que o padrão para o Source Nozzle e o Target Nozzle
  • Se seus dados forem compostos de documentos com tamanho superior a 10K, recomendamos ajustar a Contagem de lotes e o Tamanho do lote para que sejam maiores do que o padrão

b. Conservação da largura de banda da rede:

  • Use um valor de limite de replicação otimista que seja maior do que o tamanho médio do documento.

Realizamos vários experimentos para demonstrar o comportamento, que é capturado abaixo.

Configuração do experimento: o cluster A e o cluster B são dois clusters com replicação unidirecional em andamento (ativo os dados são replicados do cluster de origem para o cluster de destino).

Configuração do ambiente de teste:

  • Dois clusters do Couchbase em execução no AWS
  • Cluster de origem: região West1, cluster de destino: região East1
  • Latência média da rede entre os clusters no momento do teste: 72 ms
  • Tamanho do cluster: 5 nós em execução em instâncias dedicadas de m4.4xlarge
  • Configuração do Bucket do Couchbase : Tipo de bucket - Couchbase; cota de memória do bucket por nó = 60 GB; (configurações padrão para réplicas, resolução de conflitos e método de ejeção)
  • Couchbase Server Enterprise R5.0 em execução no Amazon Linux
  • Replicação XDCR unidirecional criada indo do bucket de origem para o bucket de destino

Teste1: Estabelecer uma linha de base

Configuração : Valores padrão para todas as configurações avançadas

Teste2: Demonstrar o aumento da produtividade por meio da paralelização

Configuração: Bocal de origem = 8, Bocal de destino = 8 (ambos 4x), tamanho médio do documento = 1 KB

Teste3: Demonstre o aumento da taxa de transferência com cargas úteis de rede maiores

Configuração: Contagem de lotes = 4000, Tamanho do lote = 8192, tamanho médio do documento = 20 KB

Teste4: Demonstrar a redução da utilização da largura de banda

Configuração : Limite de replicação otimista > tamanho médio do documento

Nota :

  1. Os resultados dos testes mostrados nos gráficos não devem ser tratados como absolutos, pois uma variação de 3-5% pode ser observada em repetições desses testes em uma configuração idêntica devido aos caprichos dos ambientes de nuvem da AWS.
  2. A média de utilização da CPU foi igual ou inferior a 40% em todos os testes.

Embora queiramos que você experimente e ajuste a replicação de acordo com as necessidades de desempenho desejadas, recomendamos que você consulte o Couchbase antes de alterar as configurações do XDCR para casos de uso altamente especializados ou críticos para os seus negócios.

Nirvair Singh é o engenheiro de soluções que conduziu esse experimento. Fique à vontade para entrar em contato comigo ou com Nirvair para obter mais orientações ou esclarecimentos.

Como sempre, estamos ansiosos para saber mais sobre seus experimentos e experiências.

 

Autor

Postado por Chaitra Ramarao, gerente sênior de produtos da Couchbase Inc. Gerente de produtos, Couchbase Inc.

Chaitra Ramarao é gerente de produto sênior da Couchbase, empresa de banco de dados NoSQL, liderando ferramentas de bancos de dados, replicação entre datacenters e integrações de parceiros. Seus trabalhos anteriores incluem gerenciamento de produtos de análise de dados para a Kaiser Permanente e desenvolvimento de software para a Hewlett Packard. Ela é bacharel em ECE e tem mestrado pela Carnegie Mellon em Gestão de Inovação em Engenharia e Tecnologia.

Deixar uma resposta