Conjunto de perguntas da entrevista em Java três (dubbo)

Você também pode consultar https://blog.csdn.net/zl1zl2zl3/article/details/83721147

  1. Quais são os componentes do dubbo e o que é necessário
    Dubbo requer quatro componentes básicos: Registro, Monitor, Provedor e Consumidor.
    Insira a descrição da imagem aqui

Provedor: provedor
Consumidor:
registro do consumidor : centro de registro (equivalente a um intermediário)
monitor: centro de monitoramento (projeto de monitoramento do próprio dubbo, pode ser lançado diretamente no tomcat, você pode ver consumidores, produtores) ---- ------ -

https://blog.csdn.net/qq_24853627/article/details/79380707
Insira a descrição da imagem aqui
container: container de serviço

O contêiner de serviço é responsável por iniciar, carregar e executar o provedor de serviços. Quando o provedor de serviços é iniciado, ele registra o serviço que oferece na central de registro.
Quando um consumidor de serviço é iniciado, ele assina o registro do serviço de que precisa.
O centro de registro retorna a lista de endereços do provedor de serviços ao consumidor. Se houver uma alteração, o centro de registro enviará os dados de alteração ao consumidor com base na conexão longa.
O consumidor de serviço, com base no algoritmo de balanceamento de carga suave, seleciona um provedor para chamar da lista de endereços de provedor e, se a chamada falhar, seleciona outro para ligar.
Os consumidores e provedores de serviço acumulam o número de chamadas e o tempo das chamadas na memória e enviam dados estatísticos para a central de monitoramento a cada minuto.

  1. Qual estrutura de comunicação é usada por padrão, existem outras opções?

    O netty framework e o mina são recomendados por padrão.

  2. Processo de inicialização do Dubbo

    Referência de https://www.jianshu.com/p/7f3871492c71

  3. Qual é o processo de solicitação de dubbo?
  4. A chamada do serviço dubbo está bloqueando?

    O padrão é o bloqueio, você pode chamar de forma assíncrona, você pode fazer isso se não houver valor de retorno

       <dubbo:reference id="xxx" ....>
          <dubbo:method name="method1" async="true" /
       </dubbo:reference>
    
  5. Apresente sua compreensão de zk, você conhece cap (consistência, disponibilidade, tolerância a falhas de partição)

A teoria CAP existe no campo distribuído, e essa teoria foi comprovada: qualquer sistema distribuído só pode satisfazer dois pontos ao mesmo tempo e não pode cuidar de todos os três.

①C: Consistência, consistência, atualização de dados consistente, todas as alterações de dados são sincronizadas.
②A: Disponibilidade, disponibilidade, o sistema tem bom desempenho de resposta.   
③P: Tolerância da partição, tolerância a falhas da partição.

Os detalhes são os seguintes:

  ● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。一致性被称为原子对象,任何的读写都应该看起来是“原子“的,或串行的。(等同于所有节点访问同一份最新的数据副本)
  ● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  ● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

(1) Consistência
  Consistência significa que quando os dados dentro do sistema são lidos de fora do sistema, eles são os mesmos sob certas restrições, ou seja, as mudanças de dados devem ser sincronizadas entre os nós do sistema. De acordo com o grau de consistência, os níveis de consistência podem ser divididos nos seguintes tipos:

①Forte consistência (consistência forte). A qualquer momento, qualquer usuário pode ler os últimos dados atualizados com sucesso.
  ② Consistência monotônica (consistência monotônica). A qualquer momento, uma vez que qualquer usuário leia o valor de certos dados após uma certa atualização, ele não lerá um valor mais antigo do que esse valor. Em outras palavras, a ordem dos dados disponíveis deve ser monotonicamente crescente.
  ③ consistência da sessão (consistência da sessão). Qualquer usuário em uma sessão, uma vez lido o valor de certos dados após uma certa atualização, então nesta sessão não irá ler um valor mais antigo do que este valor. A consistência da sessão é monotônica. Nesta base, as restrições são relaxadas e apenas a monotonicidade dentro de uma única sessão de um único usuário é garantida, e não há garantia entre diferentes usuários ou diferentes sessões do mesmo usuário. Caso de exemplo: conceito de sessão do PHP.
  ④ Consistência eventual (consistência eventual). O usuário só pode ler o valor após uma determinada atualização, mas o sistema garante que os dados acabarão por atingir um estado totalmente consistente, mas o tempo necessário não pode ser garantido.
  ⑥ Consistência fraca (consistência fraca). O usuário não pode ler o último valor atualizado dentro de um certo tempo.

2. Serviço de consistência fornecido pelo ZooKeeper
  Muitos artigos e blogs mencionaram que o zookeeper é um serviço que fornece consistência forte.Ele fez um certo comprometimento na tolerância a falhas de partição e disponibilidade, que é consistente com a teoria CAP. Mas, na verdade, o que o zookeeper oferece é apenas consistência monotônica.
Motivos:
  1. Supondo que existam 2n + 1 servidores, no processo de sincronização o líder sincroniza os dados com os seguidores. Quando o número de seguidores sincronizados for maior que n + 1, o processo de sincronização termina e o sistema pode aceitar a conexão do cliente solicitações de. Se o cliente não estiver conectado a um seguidor sincronizado, os dados mais recentes não serão obtidos, mas a monotonicidade pode ser garantida.
  2. Depois que o seguidor recebe a solicitação de gravação, ele a encaminha para o líder para processamento; o líder conclui o mecanismo de confirmação de duas fases. Inicie uma proposta para todos os servidores. Quando a proposta for aprovada por mais da metade (n + 1) servidores, todo o cluster será sincronizado. Depois que mais da metade (n + 1) servidores forem sincronizados, a solicitação de gravação será concluída. Se o cliente não estiver conectado ao seguidor de forma síncrona, os dados mais recentes não são obtidos, mas a monotonicidade pode ser garantida.

Analise o Zookeeper com o princípio CAP do sistema distribuído:
(1) C: Zookeeper garante a consistência final e pode ser sincronizado para cada nó em dez segundos.
(2) A: Zookeeper garante disponibilidade, os dados estão sempre disponíveis, sem bloqueio. E os dados pertencentes a mais da metade dos nós são os mais recentes, em tempo real. Se você quiser garantir que os dados sejam os mais recentes, você precisa chamar manualmente Sync ()
(2) P: Existem dois pontos para analisar .
① Há muitos nós Isso levará a um atraso muito grande na gravação de dados, porque vários nós são necessários para sincronizar.
② Se houver mais nós, a escolha do líder é muito demorada, o que aumentará o problema de rede. problema pode ser aliviado pela introdução de nós observadores.

  1. Como zk garante consistência

    Referência https://blog.csdn.net/wq237wq/article/details/51607180

    Como o
    Zookeeper garante a consistência da sequência das transações? Zookeeper usa um ID de transação incremental para identificá-la. Todas as propostas são adicionadas com zxid quando são propostas. Zxid é na verdade um número de 64 bits, e os 32 bits superiores são usados ​​para a época To identificar se o líder mudou, se um novo líder for gerado, a época aumentará automaticamente e os 32 bits inferiores são usados ​​para incrementar a contagem. Quando uma nova proposta é gerada, ele primeiro emitirá solicitações de execução de transação para outros servidores de acordo com o processo de duas etapas do banco de dados. Se mais da metade das máquinas puderem executar e obter sucesso, então ele iniciará a execução

Como o zookeeper escolhe o líder principal?
Quando o líder falha ou perde a maioria de seus seguidores, zk entra no modo de recuperação,

Existem quatro tipos de znodes em zk. Nós de diretório persistentes. Nós de diretório de numeração de sequência persistente (ordenados podem ser usados ​​em muitos cenários, como máquinas de registro). Nós de diretório temporário
. Nós de numeração de sequência temporária . O mecanismo de notificação de zk. O
cliente irá estabelecer um znode. Um evento de observador, quando o znode muda, esses clientes receberão a notificação zk, e então o cliente pode fazer mudanças de negócios de acordo com as mudanças znode.

O
programa de gerenciamento de configuração do zk é implantado em diferentes máquinas de maneira distribuída, e as informações de configuração do programa são colocadas sob o znode de zk. Quando a configuração muda, ou seja, quando o znode muda, você pode mudar um nó de diretório in zk Use água para notificar cada cliente para alterar a configuração.
O serviço de nomenclatura de zk O serviço de nomenclatura
refere-se à obtenção do endereço de um recurso ou serviço por meio de um nome especificado. Usando zk para criar um caminho global, esse caminho pode ser usado como um nome, apontando para o cluster no cluster, o endereço do serviço prestado, ou objetos remotos e assim por diante.

Notificação e coordenação distribuídas
Para a programação do sistema: o operador envia uma notificação para realmente alterar o estado de um nó por meio do console e, em seguida, zk envia essas alterações a todos os clientes que registraram o inspetor deste nó.
Para o relatório de implementação: cada processo de trabalho cria um nó temporário em um determinado diretório. E carregue os dados do andamento do trabalho, de forma que o processo resumido possa monitorar as mudanças dos subnós do diretório para obter a situação global em tempo real do andamento do trabalho.

Por que há um mestre
em uma máquina? Em um ambiente distribuído, algumas lógicas de negócios só precisam ser executadas por uma máquina no cluster, e outras máquinas podem compartilhar esse resultado, o que pode reduzir muito cálculos repetidos e melhorar o desempenho, por isso precisa a ser realizada a eleição do Mestre.

  1. Como determinar o tamanho da partição do Kafka é mais razoável
  2. Algoritmo de balanceamento de carga do Dubbo (aplicado ao cluster do Dubbo)
① Random LoadBalance(随机均衡算法)

② RoundRobin LoadBalance(权重轮询均衡算法)

③ LeastAction LoadBalance(最少活跃调用数均衡算法)

④ ConsistentHash LoadBalance(一致性Hash均衡算法)

缺省时为Random随机调用

Acho que você gosta

Origin blog.csdn.net/weixin_39195030/article/details/88044493
Recomendado
Clasificación