Como usar o PDFBinder (ferramenta de mesclagem de PDF)

Simultaneidade significa que várias tarefas podem ser executadas ao mesmo tempo. A programação simultânea tem um significado amplo, incluindo programação multiencadeada, programação multiprocessos e programas distribuídos. O significado de simultaneidade explicado neste capítulo pertence à programação multithread.

A Goroutine é agendada pelo tempo de execução Go, enquanto os threads são agendados pelo sistema operacional.

O usuário aloca tarefas suficientes, o sistema pode ajudar automaticamente o usuário a atribuir tarefas à CPU, para que essas tarefas funcionem o mais simultaneamente possível. Esse mecanismo é chamado goroutine no idioma Go.

O programa Go inicia na função main () no pacote principal. Quando o programa inicia, o programa Go cria uma goroutine padrão para a função main ().

Ajustar o desempenho de execução simultânea (DOMAXPROCS)

Na lógica tradicional, os desenvolvedores precisam manter a correspondência entre os threads no conjunto de threads e o número de núcleos da CPU. Da mesma forma, o Go também pode ser feito através da função runtime.GOMAXPROCS (), o formato é:

Em sistemas distribuídos comuns, situações como tempo de inatividade da máquina ou anomalias de rede (incluindo atraso, perda, duplicação, mensagens fora de sequência e partições de rede) (ou seja, sistemas distribuídos onde ocorrem anomalias) sempre ocorrerão. O problema que o algoritmo Paxos precisa resolver é como concordar rápida e corretamente com o valor de determinados dados dentro do cluster em um sistema distribuído, onde as exceções acima podem ocorrer. Também pode ser entendida como a consistência dos estados alcançados em um sistema distribuído.

A idéia central da teoria das bases é a consistência final, mesmo que não seja possível obter consistência forte (consistência forte), cada aplicativo pode usar métodos apropriados para obter consistência eventual (consistência eventual) de acordo com suas próprias características de negócios.

Mecanismo de quorum

Antes de entender Paxos, vamos primeiro entender o "algoritmo de eleição de quorum". Quando você vê o algoritmo de eleição, pensa na eleição de líder no tratador? Sua intuição está bem.

O mecanismo do quorum pode ser visto em vários algoritmos de consistência.A idéia matemática principal vem do princípio da gaveta.Em uma frase, é explicado que em N cópias, se houver W atualizações bem-sucedidas ao mesmo tempo, estou lendo Ao buscar dados, é necessário ler mais de cópias N-W, para que pelo menos um dado atualizado possa ser lido.

Correspondente ao mecanismo do Quorum, o WARO, que é WriteAllReadone, é um protocolo simples de controle de cópia.Quando o Cliente solicita a gravação de dados em uma cópia (atualização de dados), essa operação de gravação ocorre somente após todas as cópias terem sido atualizadas com êxito. É considerado um sucesso, caso contrário, é considerado um fracasso.

A WARO prioriza a garantia do serviço de leitura, porque todas as cópias são atualizadas com êxito, pode ser considerada uma atualização bem-sucedida, garantindo assim que todas as cópias sejam consistentes; nesse caso, você só precisa ler os dados em qualquer cópia. A disponibilidade do serviço de gravação é baixa porque, desde que uma cópia falhe na atualização, a operação de gravação é considerada como tendo falhado. Suponha que haja N cópias e N-1. todas estão inativas.A cópia restante ainda pode fornecer serviço de leitura, mas enquanto uma cópia estiver inativa, o serviço de gravação não será bem-sucedido.

A WARO sacrifica a disponibilidade dos serviços de atualização e maximiza a disponibilidade dos serviços de leitura, e o Quorum é um compromisso entre os serviços de atualização e os serviços de leitura.

Definição de quorum

A definição de Quorum é a seguinte: Suponha que haja N cópias e a operação de atualização wi seja atualizada com êxito em W cópias, a operação de atualização wi seja considerada bem-sucedida e os dados correspondentes à operação de atualização enviada com sucesso desta vez sejam chamados: "Dados enviados com êxito " Para operações de leitura, são necessárias pelo menos cópias R para ler os dados atualizados, entre elas W + R> N, ou seja, W e R se sobrepõem, geralmente, W + R = N + 1.

N = número de cópias de dados armazenados

W = cópia necessária para atualização bem-sucedida

R = número de cópias a serem acessadas em um objeto de dados lido

O quorum é limitado à necessidade de ler pelo menos N + 1-w cópias de dados, o que soa abstrato.

Por exemplo, mantemos 10 cópias e atualizamos com êxito três de cada vez; então, pelo menos oito cópias de dados precisam ser lidas, o que pode garantir que lemos os dados mais recentes.

Aplicativo de quorum

O mecanismo Quorum não pode garantir consistência forte, o que significa que qualquer usuário ou nó pode ler os dados de cópia enviados com êxito mais recentemente a qualquer momento.

O uso do mecanismo Quorum precisa cooperar com um serviço de metadados que obtenha o número da versão enviada com êxito mais recente, para que seja possível determinar o número da versão mais recente enviada com êxito e, em seguida, os dados gravados mais recentes possam ser confirmados a partir dos dados que foram lidos.

O quorum é um mecanismo comumente usado em sistemas distribuídos.É um algoritmo de votação usado para garantir redundância de dados e eventual consistência.O mecanismo do quorum pode ser visto nos algoritmos Zab de Paxos, Raft e ZooKeeper.

Conceitos relacionados do algoritmo Paxos

No protocolo Paxos, existem três tipos de funções de nós, proponente, aceitador e aprendiz, e também há um cliente como emissor. Imagens técnicas

Os três tipos de funções acima são apenas divididos logicamente.Na prática de trabalho, um nó pode atender a esses três tipos de funções ao mesmo tempo.

Proponente

Pode haver vários Proponentes. No início do processo, o Proponente propõe uma moção, que é valor. O chamado valor pode ser qualquer operação no projeto, como "modificar o valor de uma variável para um novo valor". O contrato Paxos uniformemente Essas operações são abstraídas como valor.

Diferentes proponentes podem propor valores diferentes ou até contraditórios. Por exemplo, um proponente propõe "definir a variável X como 1" e outro proponente propõe "definir a variável X como 2", mas, para a mesma rodada do processo de Paxos, há apenas um valor. Foi aprovado.

Aceitador

No cluster, existem N Acceptors e os Acceptors são completamente iguais e independentes.O valor proposto pelo Proponente deve ser aprovado por mais da metade (N / 2 + 1) Acceptor antes de ser aprovado.

Aprendiz

O aluno não participa da eleição, mas aprende o valor aprovado.Em Paxos, o aluno participa principalmente do processo de sincronização da máquina de estado relacionado.

Aqui, o processo de Leaner se refere ao mecanismo do conselho de quórum.Um valor precisa ser aprovado pelo Acceptor com W = N / 2 + 1. O aluno precisa ler pelo menos N / 2 + 1 Accpetors e depois de ler os resultados do N Acceptor. Para aprender um valor passado. Por exemplo:

Tenho 10 Concorrentes, leio pelo menos 6 valores idênticos e, no máximo, 10 valores idênticos. Ou seja, o resultado com mais votos é selecionado.

Emissor do cliente

A função do Cliente, como emissor, na verdade não participa do processo de eleição, como a fonte da solicitação de modificação. Interação entre Proponente e Aceitante

Interação entre Proponente e Aceitante

Em Paxos, a proposta é enviada ao Aceitador, e o Aceitador concorda em selecionar o valor final e depois informa ao Aprendiz o valor final.

A interação entre o proponente e o aceitante tem principalmente quatro tipos de comunicação de mensagens, como mostrado abaixo:

Acho que você gosta

Origin www.cnblogs.com/360514875/p/12735357.html
Recomendado
Clasificación