Microservice Day2 - Introdução ao Nacos Registration Center

Central de Cadastro Nacos

1. Introdução ao Nacos

As empresas nacionais geralmente respeitam a tecnologia do Alibaba, como o centro de registro, e o Spring Cloud Alibaba também lançou um centro de registro chamado Nacos.

2. Instalação do Mac

  1. Entre no site oficial da Nacos para baixar o pacote de instalação
    http://nacos.io/zh-cn/
    imagem.png
    Endereço do Github warehouse
    imagem.png

  2. Depois de baixar e descompactar, entre no diretório nacos/bin
    imagem.png

  3. Execute sh startup.sh -m standaloneo comando para iniciar o nacos
    imagem.png
    4. Entre na página de visualização http://127.0.0.1:8848/nacos/ , a senha da conta é nacos, basta logar, a porta do nacos é 8848
    imagem.png

(Se você quiser fechar o nacos, digite sh shutdown.sh, mas descubra que após o fechamento, você ainda pode se conectar ao nacos na página de visualização, então você precisa matar o processo na porta 8848, você pode digitar lsof-i:8848 kill -9 número do processo)

3. Registre o serviço para nacos

O Nacos é um componente do SpringCloudAlibaba, e o SpringCloudAlibaba também segue as especificações de registro e descoberta de serviço definidas no SpringCloud. Portanto, não há muita diferença entre usar Nacos e usar Eureka para microsserviços.

As principais diferenças são:

  • depende de diferentes
  • o endereço do serviço é diferente

1) Introduzir dependências

<dependencyManagement>Introduza a dependência de SpringCloudAlibaba no arquivo pom do projeto pai cloud-demo :

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Em seguida, introduza as dependências do nacos-discovery nos arquivos pom em user-service e order-service:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

Nota : Não se esqueça de comentar a dependência eureka.

2) Configure o endereço nacos

Adicione o endereço nacos em application.yml de user-service e order-service:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

Nota : Não se esqueça de comentar o endereço de eureka

3) reiniciar

Depois de reiniciar o microsserviço, faça login na página de gerenciamento do nacos e você poderá ver as informações do microsserviço:
imagem.png

4. Modelo de armazenamento hierárquico de serviço

O Nacos divide as instâncias na mesma sala de computadores em um cluster .

Em outras palavras, user-service é um serviço. Um serviço pode conter vários clusters, como Hangzhou e Shanghai. Cada cluster pode ter várias instâncias, formando um modelo hierárquico, como mostra a figura: Quando os microsserviços acessam uns aos outros, eles devem tentar acessar a mesma instância de cluster o máximo possível, porque a velocidade de acesso local é mais rápida
imagem.png
. Acesse outros clusters somente quando o cluster estiver indisponível. Por exemplo:
imagem.png
o serviço de pedidos na sala de computadores em Hangzhou deve dar prioridade ao acesso ao serviço de usuários na mesma sala de computadores.

4.1 Configurar cluster para atendimento ao usuário

Modifique o arquivo application.yml do user-service e adicione a configuração do cluster:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

Depois de reiniciar as duas instâncias de serviço do usuário, podemos ver os seguintes resultados no console nacos:
imagem.png

imagem.png

Modelo de armazenamento hierárquico do serviço Nacos

  • O primeiro nível é um serviço, como userservice
  • O segundo nível é o cluster, como Hangzhou ou Xangai
  • O terceiro nível é uma instância, como um servidor em uma sala de computadores em Hangzhou que implementa o serviço de usuário

Como definir propriedades de cluster para uma instância

  • Modifique o arquivo application.yml e inclua a propriedade spring.cloud.nacos.discovery.cluster-name

4.2 Balanceamento de carga com prioridade no mesmo cluster

Por padrão, ZoneAvoidanceRulenão é possível obter balanceamento de carga com base na prioridade do mesmo cluster.

Portanto, o Nacos fornece uma NacosRuleimplementação que pode selecionar preferencialmente instâncias do mesmo cluster.

1) Configurar informações de cluster para serviço de pedido

Modifique o arquivo application.yml de order-service e adicione a configuração do cluster:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

2) Modifique as regras de balanceamento de carga

Modifique o arquivo application.yml de order-service e modifique as regras de balanceamento de carga:

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

Estratégia de balanceamento de carga NacosRule

  • Priorize a lista de instâncias de serviço no mesmo cluster
  • O cluster local não consegue encontrar o provedor, então ele vai para outros clusters para procurá-lo e um aviso será relatado
  • Depois de determinar a lista de instâncias disponíveis, o balanceamento de carga aleatório é usado para selecionar as instâncias

5. Configuração de peso

Na implantação real, esse cenário aparecerá:

  • Existem diferenças no desempenho dos equipamentos servidores. O desempenho de algumas máquinas onde as instâncias estão localizadas é melhor, enquanto outras são piores. Esperamos que as máquinas com melhor desempenho possam suportar mais solicitações dos usuários.

Nacos fornece configuração de peso para controlar a frequência de acesso, quanto maior o peso, maior a frequência de acesso

No console do nacos, localize a lista de instâncias do serviço de usuário e clique em Editar para modificar o peso:

imagem.png

Na janela de edição que aparece, modifique o peso:
imagem.png

Nota : Se o peso for modificado para 0, a instância nunca será visitada

6. Isolamento ambiental

A Nacos fornece namespace para implementar o isolamento do ambiente.

  • Pode haver vários namespaces em nacos
  • Pode haver grupo, serviço, etc. sob o namespace
  • Namespaces diferentes são isolados uns dos outros, por exemplo, serviços em namespaces diferentes são invisíveis entre si

A camada mais externa de armazenamento de serviço e armazenamento de dados no Nacos é uma coisa chamada namespace, que é usada para isolamento externo
imagem.png

6.1 Criar um espaço de nomes

Por padrão, todos os serviços, dados e grupos estão no mesmo namespace denominado public:

imagem.png

Podemos clicar no botão Adicionar na página para adicionar um namespace:
imagem.png

imagem.png

6.2 Configurar namespace para microsserviços

A configuração de namespaces para microsserviços só pode ser feita modificando a configuração.

Por exemplo, modifique o arquivo application.yml de order-service:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: fe205277-84c6-402c-be48-ba772cbe7a2f # 命名空间,填ID

Depois de reiniciar o serviço de pedidos, acesse o console e você verá os seguintes resultados:

imagem.png

Neste momento, ao acessar o order-service, como o namespace é diferente, o userservice não será encontrado e o console informará um erro:

imagem.png

7. A diferença entre Nacos e Eureka

As instâncias do serviço Nacos são divididas em dois tipos:

  • Instância temporária: Caso a instância fique fora do ar por mais de um determinado período de tempo, ela será removida da lista de serviços, o tipo padrão.

  • Instância não temporária: Se a instância cair, ela não será removida da lista de serviços e também pode ser chamada de instância permanente.

Configure uma instância de serviço como uma instância permanente:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例

A estrutura geral de Nacos e Eureka é semelhante, registro de serviço, pull de serviço, espera de pulsação, mas existem algumas diferenças:

imagem.png

  • O que Nacos e eureka têm em comum

    • Ambos oferecem suporte ao registro de serviço e ao pull de serviço
    • Ambos oferecem suporte ao método de pulsação do provedor de serviços para detecção de integridade
  • A diferença entre Nacos e Eureka

    • Nacos suporta o servidor para detectar ativamente o status do provedor: a instância temporária adota o modo de pulsação e a instância não temporária adota o modo de detecção ativa
    • Instâncias temporárias com pulsação anormal serão removidas, enquanto instâncias não temporárias não serão removidas
    • O Nacos suporta o modo push de mensagens das alterações da lista de serviços e as atualizações da lista de serviços são mais oportunas
    • O cluster Nacos adota o modo AP por padrão. Quando há instâncias não temporárias no cluster, o modo CP é adotado; Eureka adota o modo AP

Acho que você gosta

Origin blog.csdn.net/qq_54351538/article/details/131788432
Recomendado
Clasificación