Resumo de alta simultaneidade, alta disponibilidade e perguntas distribuídas da entrevista relacionada

  1. O princípio de alta simultaneidade não se aplica ao
    estado
    sem o estado, o que é conveniente para a expansão horizontal
    . A configuração com estado pode realizar a configuração sem estado por meio do centro de configuração.
    Prática: Disconf, Yaconf, Zookpeer, Consul, Confd, Diamond,
    Xdiamond, etc.
    Dividir
    dimensões do sistema: de acordo com as funções do sistema, divisão de negócios, como compras, liquidação, pedidos, etc.
    Dimensões funcionais: divisão refinada das funções do sistema.
    Dimensões de leitura e gravação: dividida de acordo com as características das taxas de leitura e gravação ; leia mais, considere o cache multinível; escreva mais, permita o teste de dimensões AOP da
    subtabela da sub-biblioteca considerada
    : Os padrões de acesso de acordo com ⾏ dividido em AOP, como mercadoria ⻚ ⽐ podem ser divididos em
    CDN, ⻚ ⾯ sistema de renderização , o CDN é ⼀ um sistema de
    dimensões de módulos AOP : a divisão geral da estrutura de código da Web, serviço, DAO
    orientada a
    serviço evolução orientada a serviço: serviço em processo autônomo remoto serviço-cluster registro manual serviço-registro automático e
    agrupamento de serviço-serviço de descoberta, isolamento, governança de serviço de roteamento,
    considere agrupamento de serviço, isolamento, limitação de corrente, lista negra, tempo limite, mecanismo de nova tentativa, roteamento,
    compensação de falha , etc.
    Prática: Utilize Nginx, HaProxy, LVS, etc. para obter balanceamento de carga , ZooKeeper, Consul,
    etc. para obter registro automático e descoberta de serviços. Alvo da
    fila de mensagens
    : desacoplamento de serviço (consumo um-para-muitos), processamento assíncrono, buffer de redução de pico de tráfego, etc.
    Armazenamento de fluxo de massa: Sacrifique a consistência para garantir consistência final (Caso: dedução de estoque, a dedução agora é feita no
    Redis, registro de registro de dedução, aprovação O processo em segundo plano aplicará o registro de dedução ao BD)
    Revisão de dados: Resolva o problema de perda de mensagens no mecanismo de mensagem assíncrona.
    Heterogeneidade de dados . Heterogeneidade de
    dados: receba alterações de dados por meio do mecanismo de fila de mensagens e armazene
    dados originais . Loop de dados fechado: proteja várias fontes de dados e armazene dados heterogeneamente para formar um -loop
    cache silver bullet
    Camada do usuário:
    cache DNS Cache do
    navegador DNS do
    sistema operacional Cache DNS
    local do provedor de serviços
    DNS Cache do servidor DNS Cache
    do lado do cliente Cache do
    navegador (Expira, Cache-Control, Last-Modified, Etag) *
    Cache do cliente do aplicativo (js / css / image ...)
    Camada de proxy:
    cache CDN (geralmente construído com base em ATS, Varnish, Nginx, Squid, etc.,
    nó de extremidade - nó de sub-nível-nó do meio - site de origem)
    Camada de interface :
    Nginx como um exemplo :
    Proxy_cache: cache de proxy, você pode Armazenado em / dev / shm ou SSD
    FastCGI Cache
    Nginx + Lua + Redis: Cache de dados de negócios
    PHP como exemplo:
    Opcache:
    camada de aplicativo Opcodes para cache de PHP : Cache de dados
    estáticos de
    negócios (Redis / Memcached / arquivos locais, etc.) Camada de dados da
    fila de mensagens
    :
    NoSQL: Redis, Memcache, SSDB, etc.
    MySQL: Innodb / MyISAM, etc. Cache de consulta, cache de chave, tamanho do
    buffer Innodb etc.
    Camada do sistema:
    CPU: Cache L1 / L2 / L3 / disco de
    memória NUMA
    : cache do próprio disco, dirty_ratio / dirty_background_ratio, array card Concorrência do próprio
    cache
  2. Princípio de alta usabilidade
    Downgrade
    Downgrade de gerenciamento centralizado de switch: push switch informações de configuração para cada
    aplicativo, downgrade de serviço de leitura de vários níveis: como chamada de serviço rebaixada para
    interface de switch de cache local somente leitura : como Nginx + lua (OpenResty) Configure um estratégia de downgrade para desviar o tráfego; com base
    nisso, uma estratégia de escala de cinza pode ser feita.
    Downgrade de negócios: alta simultaneidade, garantindo funções essenciais, funções secundárias podem ser alteradas de estratégias síncronas para assíncronas ou
    funções de bloqueio
    Limite de fluxo
    : evitar solicitações maliciosas ** * ou sistema além da
    prática de pico : o
    tráfego malicioso apenas solicita acesso ao Cache
    penetra no back-end para aplicá-lo ao fluxo Use o limite Nginx para processar
    IP malicioso Usando a política Nginx Negar ou recusar o
    tráfego de corte de iptables
    para fazer isso: a
    prática de falha da máquina de blindagem :
    o DNS: alterar a resolução do nome de domínio, como DNSPOD pode adicionar um IP de backup, quando um IP normal falha
    , ele muda automaticamente para o endereço de backup; a prática efetiva é mais lenta
    HttpDNS: a fim de contornar o agendamento de tráfego preciso implementado pelo operador LocalDNS
    LVS / HaProxy / Nginx: Remova o nó com falha
    e reverta . Quando a
    versão de lançamento falhar, você pode reverter rapidamente para a versão estável anterior a qualquer momento
  3. Princípios de design de negócios
    anti-redesenho
    design idempotente
    definição de processo de
    estado da máquina de estado de
    operação do sistema de retorno pode ser alimentado por
    sistemas de back office aprovação da
    documentação que
    backup de anotação
  4. Conclusão É
    necessário planejar e desenhar primeiro, ter planos para os problemas existentes e planos para o futuro, as
    dívidas técnicas serão pagas mais cedo ou mais tarde.
  5. A diferença entre distribuído e cluster:
    Distribuído refere-se à distribuição de negócios diferentes em lugares diferentes. Cluster refere-se ao agrupamento de vários servidores para
    alcançar o mesmo negócio
  6. Transação distribuída:
  7. Submissão na segunda etapa:
    a) Conceito: Os participantes informam o coordenador do sucesso ou fracasso da operação, e o coordenador
    decide se cada participante deve enviar ou não a operação com base no feedback de todos os participantes.
    b. Função: Principalmente garantir a originalidade das transações distribuídas; o primeiro estágio é o de preparação e o segundo
    estágio é o de confirmação;
    c. Desvantagens: não só deve bloquear todos os recursos dos participantes, mas também bloquear a coordenação. recurso, o custo é
    grande. O resumo de uma frase é: 2PC é muito ineficiente e hostil para alta simultaneidade.
  8. Confirmação de três fases:
    a. Conceito: O protocolo de confirmação de três fases introduz um mecanismo de tempo limite tanto no coordenador quanto nos participantes e
    divide a primeira fase do protocolo de confirmação de duas fases em duas etapas: consulta e, em seguida, bloqueia os recursos.
    , ele é realmente enviado. Dessa forma, o envio de três fases tem três estágios: CanCommit, PreCommit e
    DoCommit.
    b. Desvantagens: Se após entrar no PreCommit, o Coordenador enviar uma solicitação de aborto.
    Supondo que apenas uma Coorte receba e execute a operação de abortar,
    outras Coortes que são desconhecidas sobre o status do sistema escolherão continuar com o Commit de acordo com o 3PC. Neste momento , o status do sistema
    Inconsistent.
  9. Transação flexível:
    a. Conceito: A chamada transação flexível é uma transação rígida que é relativamente forçada a travar a mesa. Fluxo abaixo:
    Se a transação do servidor A for executada sem problemas, a transação A. será enviada primeiro. Se a transação B também for executada
    sem problemas, a transação B também será enviada e toda a transação será concluída. Porém, se SIM falha na transação B
    falhar, o rollback da transação em B, então a transação A foi confirmada, é necessário executá-la uma operação de compensação
    para a transação ter sido enviada para A Executar operação inversa da operação, não retornar para o O
    status da transação A antes da execução .
    b. Desvantagens: O negócio é muito intrusivo e são necessárias operações compensatórias, carece de universalidade e não pode ser promovido em grande escala
    .
  10. A implementação RabbitMQ da solução consistente de mensagem final:
    a. Implementação: confirmação de envio + persistência da mensagem + confirmação do consumidor.
  11. Quando usar o desenvolvimento distribuído:
    a. Vantagens:
    i. Desacoplamento do módulo: dividir módulos, usar comunicação de interface, reduzir o acoplamento entre os módulos.
    Ii. Dividir projetos, diferentes equipes são responsáveis ​​por diferentes subordinados Projeto: Dividir o projeto em vários
    subprojetos , e diferentes equipes são responsáveis ​​por diferentes subprojetos.
    iii. Melhorar a escalabilidade do projeto: Ao adicionar funções, você só precisa adicionar outro subprojeto e chamá-lo. A conexão de
    outros sistemas está bem.
    iv. Implantação distribuída: A implantação distribuída pode ser realizada de forma flexível.
    v. Melhorar a capacidade de reutilização do código: Como a camada de serviço, se você não usar uma
    arquitetura de serviço de repouso distribuída , ela estará disponível no shopping WAP móvel, WeChat. shopping, pc, android e ios precisam
    escrever uma lógica de camada de serviço. A quantidade de desenvolvimento é grande e é difícil de manter e atualizar. Neste momento, um
    método de serviço de descanso distribuído pode ser adotado e uma camada de serviço pode ser usado publicamente.
    a. Desvantagens:
    i. A interação entre sistemas
    requer o uso de comunicação remota para aumentar a carga de trabalho de desenvolvimento de acesso; ii. Há um atraso nas solicitações de rede;
    iii. O processamento de transações é mais problemático e requer o uso de transações distribuídas.
  12. cdn (Multiatividade em locais diferentes)
    1. Multiatividade em locais diferentes: Multiatividade em locais diferentes refere-se a um cenário de negócios onde vários locais distribuídos em locais diferentes fornecem serviços para o mundo externo ao mesmo tempo
    . Multiatividade em locais diferentes é um tipo de design de arquitetura de alta disponibilidade. A principal diferença do design de recuperação de desastre tradicional é a
    "multiatividade", ou seja, todos os locais fornecem serviços externos ao mesmo tempo.
    2. Esquema de transição de tolerância a desastres em dois
    locais : A tolerância a desastres é a parte mais importante de várias atividades em diferentes lugares. Pegue o diagrama de arquitetura de várias atividades em duas cidades como exemplo:

Um
sistema comercial completo é implantado em duas cidades (a cidade 1 está localizada na região Sul da China 1 e a cidade 2 está localizada na região Leste da China 1) .
O negócio do pedido é classificado de acordo com "user_id"% 100. Em circunstâncias normais:
[00 ~ 49] Todas as leituras e gravações estão no banco de dados principal da instância do banco de dados na cidade 1.
[50 ~ 99] Todas as leituras e escritas das subpáginas estão no banco de dados principal da instância do banco de dados na cidade 2.
"Instância do banco de dados principal da cidade 1" e "Instância do banco de dados principal da cidade 2" estabelecem a replicação bidirecional DTS
.
Quando ocorre uma anormalidade, é necessária uma alternância de recuperação de desastres. Existem quatro cenários possíveis:
a segunda e a terceira situações anormais são todas tratadas pelo segundo caso, portanto, se são todas as
anormalidades do APP Server, todas as anormalidades do banco de dados e anormalidades da cidade inteira, basta seguir o
plano de recuperação de desastre no nível da cidade e alternar diretamente o servidor APP e banco de dados para outra cidade.
3. Várias cidades e lugares diferentes:
várias cidades e lugares diferentes, o modo de vários empregos refere-se à implantação de vários empregos em locais diferentes entre 3 ou mais cidades. Neste modo
, existem nós centrais e nós de unidade:
nó central: significa que os dados incrementais do nó de unidade precisam ser sincronizados para o nó central em tempo real, e o
nó central sincroniza todos os dados incrementais distribuídos para outros nós de unidade .
Nó da célula: o nó correspondente à leitura e escrita do ramo, o nó precisa sincronizar o incremento do ramo ao
nó central e receber os dados incrementais de outras partições do nó central.
A figura abaixo é um diagrama da arquitetura multiatividades em três cidades: East China 1 é o nó central e South China 1 e North China 1 são
nós de unidade.
9. Como lidar com o tempo de inatividade em um ambiente distribuído?
1. Dubbo: O servidor está fora do ar e zk é temporariamente excluído;
2. Springcloud: Envie a detecção de um salto a cada 30s para entrar novamente no lease. Se o cliente não puder
renovar o lease várias vezes , ele será removido do centro de registro do servidor em 90s.
3. Monitoramento de Apm:
10.

Acho que você gosta

Origin blog.51cto.com/15144514/2677735
Recomendado
Clasificación