Nacos Arquitetura e Princípios - Arquitetura Geral


insira a descrição da imagem aqui


origem dos nacos

A Nacos originou-se do projeto Wucaishi no Alibaba em 2008 (concluindo a divisão de microsserviços e a construção de plataformas de negócios) e cresceu no teste de pico do Double Eleven em dez anos. Acumulou a competitividade central de facilidade de uso, estabilidade e confiabilidade, e excelente desempenho.

Em 2018, o Nacos (kernel Configserver/Diamond/Vipserver interno do Alibaba ) será de código aberto.

insira a descrição da imagem aqui


Posicionamento Nacos

Nacos ( /nɑ:kəʊs/) é o acrônimo de Dynamic Na ming and Configuration Service ; uma plataforma dinâmica de descoberta de serviços, gerenciamento de configuração e gerenciamento de serviços que facilita a criação de aplicativos nativos da nuvem.

Site oficial: https://nacos.io/
Armazém: https://github.com/alibaba/nacos

insira a descrição da imagem aqui


Vantagens do Nacos

  • Facilidade de uso: modelo de dados simples, API restful padrão, console fácil de usar e documentação rica.

  • Estável: 99,9% de alta disponibilidade, nascido da verificação de produção de 10 anos do Alibaba de produtos internos, suportando cenários de grande escala com milhões de serviços, produtos de código aberto com SLA de nível empresarial.

  • Tempo real: as alterações de dados são enviadas para entrar em vigor no nível de milissegundos; no nível 1w, o SLA promete que 10.000 instâncias fiquem online e offline em 1 segundo e 99,9% do push é concluído; no nível 10w, o SLA promete que 1.000 instâncias fiquem online e offline em 3 segundos e 99,9% dos pushes sejam concluídos; no nível 100w, o SLA promete que 10.000 instâncias fiquem online e offline 9s, 99,9% push concluído.

  • Escala: serviços/configurações de 100.000 níveis, conexões de um milhão de níveis e forte escalabilidade.

insira a descrição da imagem aqui


ecologia dos nacos

O Nacos oferece suporte a vários idiomas convencionais, não limitados a Java. Ele suporta:

  • Java: integrado através do Spring Cloud Alibaba, muito completo.
  • Go: Existe um cliente go-nacos dedicado.
  • Python: Existe um cliente python-nacos.
  • C++: Existe um cliente cpp-nacos.

Todos esses clientes suportam o protocolo de conexão longa do Nacos 2.0, que pode maximizar o desempenho do Nacos.


Solução de microsserviço Alibaba, recomendado para usar:

  • Dubbo: estrutura RPC para chamadas de serviço.
  • Nacos: descoberta de registro de serviço, centro de configuração.
  • Spring Cloud Alibaba: Integre o Nacos para facilitar o desenvolvimento Java.
  • Seata: Uma solução de transação distribuída sob a arquitetura de microsserviços.
  • Sentinel: O guarda de tráfego da arquitetura de microsserviços.

Essa solução pode ser considerada a melhor prática no ecossistema de microsserviços Java.

Além disso, o Nacos também suporta muito bem outras tecnologias relacionadas a microsserviços:

  • Envoy: suporta Nacos como um mecanismo de descoberta de serviço.
  • Dapr: suporta Nacos como um centro de configuração e registro de serviços.

Portanto, o Nacos não é aplicável apenas ao Java, mas também a outras linguagens e suporta vários frameworks e especificações convencionais no ecossistema de microsserviços.É uma plataforma de microsserviços muito completa.

Por meio do Nacos, os usuários podem obter recursos relacionados a microsserviços de maneira mais padronizada e completa: descoberta de serviços, gerenciamento de configuração, roteamento de serviços etc. É por isso que a Nacos se tornou a plataforma padrão para os microsserviços do Alibaba

Armazém Ecológico: https://github.com/nacos-group

insira a descrição da imagem aqui


Projeto geral da Nacos

Para melhorar a robustez e escalabilidade do código, design totalmente em camadas e modularizado

Princípios de design

 O princípio do minimalismo, simples é fácil de usar, simples é estável e simples é fácil de colaborar.

 Consistência da arquitetura, um conjunto de arquitetura deve ser capaz de se adaptar a três cenários: open source, interno e comercial (nuvem pública e nuvem privada).

 Escalabilidade, com código aberto como núcleo e comercialização como base, totalmente expansível e conveniente para os usuários expandirem.

 Modularização, diminuindo a abstração de partes comuns, melhorando a reutilização e robustez do código.

 O longo prazo não requer uma estrutura que possa suportar os próximos 3 anos, mas sim uma estrutura que possa suportar 10 anos.

 A abertura, o design e a discussão mantêm a interação e a transparência da comunidade, o que é conveniente para que todos possam colaborar


diagrama de arquitetura

A arquitetura geral é dividida em camada de usuário, camada de negócios, camada de kernel e plug-ins

  • A camada do usuário resolve principalmente o problema de usabilidade para os usuários
  • A camada de negócios resolve principalmente os problemas funcionais de descoberta de serviço e gerenciamento de configuração
  • A camada de kernel resolve problemas centrais, como consistência, armazenamento e alta disponibilidade de sistemas distribuídos
  • Plugins resolvem problemas de escalabilidade

insira a descrição da imagem aqui


camada de usuário

 OpenAPI: expõe a interface HTTP de estilo Rest padrão, fácil de usar e conveniente para integração multilíngue.

 Console: Console fácil de usar para operações como gerenciamento de serviços e gerenciamento de configuração.

 SDK: SDK multilíngue, atualmente suporta quase todas as linguagens de programação convencionais.

 Agente: Opera em modo Sidecar e é desacoplado dos serviços através do protocolo DNS padrão.

 CLI: A linha de comando executa um gerenciamento leve de produtos, que é tão fácil de usar quanto o git.


Camada de negócios

 Gerenciamento de serviço: realize funções como CRUD de serviço, CRUD de nome de domínio, verificação de status de integridade do serviço e gerenciamento de peso do serviço.
 Gerenciamento de configuração: Realize funções como CRUD de gerenciamento de configuração, gerenciamento de versão, gerenciamento de escala de cinza, gerenciamento de monitoramento, push track e dados agregados.
 Gerenciamento de metadados: Fornece CURD de metadados e recursos de marcação, que são críticos para realizar o tráfego da camada superior e a escala de cinza do serviço.


camada do kernel

 Mecanismo de plug-in: realize a capacidade de separar e combinar os três módulos e realize o mecanismo SPI do ponto de extensão, que é usado para expandir a personalização da empresa.

 Mecanismo de evento: realiza notificação de evento assíncrono, notificação assíncrona de alteração de dados do SDK e outra lógica, que é uma parte fundamental do alto desempenho do Nacos.

 Módulo log: gerencie a classificação do log, nível do log, portabilidade do log (especialmente para evitar conflitos), formato do log, código de exceção + documento de ajuda.

 Mecanismo de retorno de chamada: O SDK notifica os dados e chama de volta o usuário para processamento por meio de um modo unificado. Interfaces e estruturas de dados precisam ser extensíveis.

 Modo de endereçamento: Resolva vários modos de endereçamento, como conexão direta do IP do servidor, acesso ao nome de domínio, endereçamento do servidor de nomes e transmissão, etc., que precisam ser escaláveis.

 Canal push: Resolva o problema de comunicação eficiente entre o servidor e o armazenamento, entre os servidores e entre o servidor e o SDK.

 Gerenciamento de capacidade: gerencie a capacidade de cada inquilino e grupo para evitar que o armazenamento seja substituído e afete a disponibilidade do serviço.

 Gerenciamento de tráfego: De acordo com várias dimensões, como inquilinos e grupos, a frequência de solicitação, o número de links longos, o tamanho do pacote e o controle do fluxo de solicitação são controlados.

 Mecanismo de cache: Diretório de recuperação de desastres, cache local e mecanismo de cache do servidor são a chave para a alta disponibilidade do Nacos.

 Modo de inicialização: Inicie diferentes módulos de acordo com o modo autônomo, modo de configuração, modo de serviço e modo DNS.

 Protocolo de consistência: Para resolver dados diferentes e diferentes requisitos de consistência, diferentes requisitos de consistência são a chave para Nacos alcançar o protocolo AP.

 Módulo de armazenamento: Resolva persistência de dados, armazenamento não persistente e resolva problemas de fragmentação de dados.


plugar

 Nameserver: Resolva o problema de roteamento do Namespace para o ClusterID e resolva o problema de mapeamento entre o ambiente do usuário e o ambiente físico do Nacos.

 CMDB: Resolva o problema de armazenamento de metadados, acoplando-se ao sistema CMDB de terceiros e resolva o relacionamento entre aplicativos, pessoas e recursos.

 Métricas: exponha dados de Métricas padrão, que são convenientes para conexão com sistemas de monitoramento de terceiros.

 Trace: Expõe o Trace padrão, que é conveniente para conectar com o sistema SLA, nivelar logs, rastrear rastreamentos e outros recursos, e pode ser conectado com o sistema de medição e cobrança.

 Gerenciamento de acesso: Equivale ao processo de abrir serviços no Alibaba Cloud e atribuir identidades, capacidades e permissões.

 Gerenciamento de usuários: resolva o gerenciamento de usuários, login, SSO e outros problemas.

 Gerenciamento de direitos: resolva problemas como identificação, controle de acesso e gerenciamento de funções.

 Sistema de auditoria: A interface de expansão é conveniente para se conectar com os sistemas de auditoria de diferentes empresas.

 Sistema de notificação: Para alterações ou operações de dados principais, é conveniente passar pelo sistema SMS e notificar a pessoa correspondente sobre as alterações de dados.


resumo

A Nacos adota a popular arquitetura de microsserviços e sua arquitetura geral é a seguinte:

  • Central de registro de serviços: responsável pelo registro e descoberta de serviços. O provedor de serviço registra o serviço e o consumidor de serviço descobre e consome o serviço do centro de registro.
  • Centro de Configuração: Arquivos de configuração para gerenciamento centralizado de aplicações. Os aplicativos podem extrair configurações do centro de configuração e atualizá-las dinamicamente.
  • Descoberta de serviço: os consumidores de serviço obtêm a lista de provedores de serviço do registro e podem atualizá-la dinamicamente.
  • Gerenciamento de configuração: os aplicativos podem obter configurações do centro de configuração e atualizá-las dinamicamente.
  • Roteamento de serviço dinâmico: Com o registro de serviço e a descoberta de serviço, a Nacos pode implementar roteamento dinâmico e atualizações de configuração.
  • Chamada de serviço: os consumidores podem chamar provedores de serviço por meio de RestTemplate e outros métodos.
  • Escala elástica: O número de provedores de serviços pode ser ajustado dinamicamente de acordo com a carga.
  • Balanceamento de carga: o balanceamento de carga distribui solicitações entre vários provedores de serviços.
  • Tolerância a falhas e disjuntor: para obter alta disponibilidade e tolerância a falhas dos serviços.
  • DNS dinâmico: Mapeie os serviços para o provedor de serviços mais recente para obter failover rápido e atualizações com tempo de inatividade zero.
  • Peso do serviço: você pode definir o peso do serviço e distribuir o tráfego de acordo com a proporção do peso.
  • Agregação de serviço: a agregação de vários microsserviços em um serviço geral é fornecida externamente.

A descrição acima é a estrutura geral e as principais funções do Nacos. Como uma estrutura de microsserviço, o Nacos inclui várias funções de governança de microsserviços, que podem efetivamente oferecer suporte a aplicativos de microsserviços.

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/yangshangwei/article/details/131100207
Recomendado
Clasificación