Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Banco de dados»NoSql»Utilizando o recurso multi master no Azure Cosmos DB

    Utilizando o recurso multi master no Azure Cosmos DB

    Jhonathan SoaresBy Jhonathan Soares21 de novembro de 20185 Mins Read NoSql
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Introdução

    O CosmosDB vem sendo cada vez mais citado no ambiente de bancos de dados NoSQL devido ao seu multi-modelo, multi-master, baixa latência e alta taxa de transferência. Neste artigo vou mostrar como você pode criar uma conta do Azure CosmosDB usando o modelo do Portal do Azure e CLI ou do Azure Resource Manager. Também vou explicar sobre o multi-master e como o CosmosDB resolve o problema em cenários de replicação de dados com vários mestres.

    Descrição

    Em um modelo de sistema distribuído, a disponibilidade de dados com baixa latência é um grande desafio. O CosmosDB já fornece uma solução para a latência nos dados lidos com a ajuda da replicação de várias regiões. Portanto, não há latência na operação de leitura porque os dados estão disponíveis no servidor de dados da região mais próxima. Mas há uma latência na operação de gravação (mesmo que baixa), porque apenas um datacenter está lá para executar uma operação de gravação. Agora, o CosmosDB lança um novo recurso para melhorar a latência de gravação com a ajuda de vários mestres.

    O que é multi mestre / multi master?

    Até agora, toda a arquitetura do sistema distribuído funciona com um servidor de dados para escrita e vários servidores de dados para leitura. Os dados são replicados para todos os servidores de dados vindo do servidor de escrita. Com o recurso multi-master, podemos escolher mais de um servidor para agir como servidor de gravação, diminuindo assim, ainda mais a latência. O grande desafio do multi-master, evitar a duplicação de dados na replicação de dados.

    Como habilitar recursos multi-mestre usando o CLI

    Abaixo está o comando usado para ativar o recurso multi-mestre usando o CLI.

     
     az cosmosdb create \
    –-name"myCosmosDbAccount" \
    --resource-group "myResourceGroup" \
    --default-consistency-level "Session" \
    --enable-automatic-failover "true" \
    --locations "EastUS=0""WestUS=1" \
    --enable-multiple-write-locations true \

     

    Ativando vários locais de gravação

    Essa propriedade é a principal maneira de ativar vários datacenters de gravação. Se for falso, o 1º datacenter de criação será o de gravação, enquanto o restante será leitura.

    Como habilitar os recursos Multi-master do CosmosDB usando o portal do Azure

    1. Em uma nova janela do navegador, entre no portal do Azure .
    2. Clique em Criar um recurso> Bancos de dados> Banco de dados do Azure CosmosDB.
    3. Preencha todos os detalhes, conforme a imagem abaixo.
    4. O nome da conta do CosmosDB deve ser exclusivo e não poderá ser alterado após a criação.
    5. Precisa habilitar gravações multi-regionais, que por padrão está desabilitado.

     

    Dificuldades de replicação

    Deixe-me explicar as dificuldades na replicação na arquitetura multi-master.  Vamos supor que temos três servidores de dados chamados A, B e C, todos com direitos de leitura e gravação.

    Os dados a, b e c escreveram em A, os dados d, e e f escreveram em B, os dados g, hej (aqui não usam i ) escreveram em C.  Primeiro, o servidor B replicado de A pelos dados d, e e f. Após a replicação B ter a, b, c, d, e e f.

    Segundo, o servidor C replicado de B pelos dados a, b, c, d, e e f. Após os dados de replicação serão a, b, c, d, e, f, g, h e j.

    Terceiro, o servidor C replicado de A, os dados são a, b e c. Mas esses dados já estão disponíveis no servidor C. Se a replicação for executada, os dados serão duplicados, veja a imagem abaixo.

    Cenários de Conflito

    Existem três tipos de duplicação ao trabalhar com vários mestres.

    • Inserção
      Ele ocorrerá quando inserirmos dois ou mais documentos com o mesmo índice exclusivo (por exemplo, ID) de duas ou mais regiões simultaneamente. Os documentos são removidos quando aplicamos a resolução de conflitos. Apenas um documento com o ID original é confirmado.
    • Alteração
      Isso ocorrerá quando atualizarmos um único documento simultaneamente de duas ou mais regiões.
    • Exclusão
      Isso ocorrerá quando excluirmos um documento de uma região e atualizá-lo de uma ou mais regiões.

    O Cosmos DB oferece três tipos diferentes de resoluções de conflitos, como Last-Writer-Win (LWW), procedimento definido pelo usuário e customização assíncrona.

    Porém só LWW está disponível para todos os modelos de cosmosDB e é o recurso de resolução de conflito padrão.

    LWW

    Ele resolverá os conflitos com base no valor numérico passado em uma propriedade no documento.

    Inserir e atualizar conflitos

    Se um ou mais documentos duplicarem na inserção e substituírem as operações, o documento que contiver os maiores valores para o caminho de resolução de conflitos se tornará o vencedor. Se vários documentos tiverem o mesmo valor numérico para o caminho de resolução, o vencedor selecionado será não determinístico. Toda a região replicada pelo documento da região vencedora.

    Excluir conflito

    Se houver conflitos de exclusão envolvidos, os excluídos sempre vencerão outros conflitos de substituição.

    Casos de uso

    1. Mídia social
      Aplicativos de mídia social precisam de baixa latência em leitura e gravação para melhorar o engajamento do usuário. Se alguém escreve o status em sua conta deve ser escrito em sua região para melhorar a latência de gravação e isso deve ser compartilhado com seus amigos de todo o mundo.
    2. Comércio eletrônico
      Para aumentar a capacidade de resposta dos aplicativos. A disponibilidade para leituras e gravações em várias regiões fornece maior disponibilidade com latência muito baixa.
    3. IoT
      Por exemplo, o aplicativo precisa rastrear os dados de voo, que partem de Cingapura e chegam aos EUA. Quando o voo decolar, a região de origem será Cingapura, na região de origem do desembarque, realocada para os EUA, que está fechada. A operação de gravação de dados será muito rápida porque os dados são gravados na região mais próxima.
    Um grande abraço a todos!
    Fontes: https://azure.microsoft.com/pt-br/updates/multi-master-support-with-azure-cosmos-db/
    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples

    NoSql 7 de fevereiro de 20255 Mins Read

    Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL

    NoSql Sql 14 de janeiro de 20257 Mins Read

    Entendendo os diferentes tipos de locks em bancos de dados e como evitá-los

    NoSql Sql 2 de julho de 20248 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile