Perguntas da entrevista Springboot e Springcloud (incluindo código e diagrama de exibição)

1 Fale brevemente sobre springboot?

Spring Boot é uma estrutura totalmente nova fornecida pela equipe do Pivotal. Seu objetivo de design é simplificar a configuração inicial e o processo de desenvolvimento de aplicativos Spring. - Depois de usar o springboot, construir um aplicativo e desenvolver o Spring, a implantação se torna muito simples.

2 Como implementar simplesmente um aplicativo springboot

1) Crie um novo projeto maven

2) Deixe o projeto assumir spring-boot-starter-parent como o módulo pai

<parent>     
    <groupId>org.springframework.boot</groupId>   
    <artifactId>spring-boot-starter-parent</artifactId>    
    <version>2.0.5.RELEASE</version> 
</parent>

3) Escolha alguns iniciantes de acordo com a cena

<dependency>   
   <groupId>org.springframework.boot</groupId>    
   <artifactId>spring-boot-starter-web</artifactId>  
</dependency>  

<dependency>      
  <groupId>org.springframework.boot</groupId>    
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>

4) Configure application.yml / application.properties

server:

 port: 8080 

5) Porta de gravação

@SpringBootApplication 

 public class PetHomeApplication {   
       public static void main(String[] args) {
            SpringApplication.run(PetHomeApplication.class,args);    
  }  }

6) Teste

Inicie o principal, comece via localhost: 8080 sem erros

3 Como o springboot realiza a configuração de vários ambientes

1) O que é configuração de vários ambientes

É um conjunto de códigos que pode ser usado em vários ambientes. É necessário configurar vários ambientes.

2) Como configurar vários ambientes

① Configure vários ambientes em um arquivo

② Vários arquivos (nome do ambiente do aplicativo.yml / propriedades)

3) Como especificar um ambiente específico

① Iniciar por padrão

② Especifique o ambiente de inicialização

4 Como implantar o projeto springboot

O Springboot integrou o Tomcat embutido por padrão.Depois de empacotá-lo no jar, haverá o Tomcat nele. Pode ser executado diretamente como um pacote jar.

1) Embalagem

pom.xml加入打包插件

<build>      
      <plugins>          
          <plugin>            
  <groupId>org.springframework.boot</groupId>       
  <artifactId>spring-boot-maven-plugin</artifactId>         
          </plugin>      
      </plugins> 
</build>

打包:

mvn clean package

2) Implantação

windows: java -jar xxx.jar

Linux: execute nohup java -jar xxx.jar em segundo plano

5 princípios de configuração automática do springboot

Quando apresentarmos o starter, usaremos o princípio de configuração automática springboot para configurar este cenário.

imagem

①A classe de entrada do aplicativo Springboot usa @EnableAutoConfiguration (anotação pai) por meio da introdução da anotação @SpringBootApplication

②Depois de usar @EnableAutoConfiguration, todos os arquivos spring.factories no jar serão verificados e todas as classes de configuração serão carregadas (classes @Configuration adicionadas)

③A classe de configuração (classe com @Configuration adicionado) usa XxxProperties para completar a configuração da cena correspondente na forma de @Bean

④ As informações de configuração em XxxPropereis têm valores padrão, mas podemos obtê-las em application.properties/application.yml

6 O que é Monolith

Normalmente, o código correspondente a este projeto pode ser composto por vários módulos, e cada módulo tem uma fronteira clara de acordo com as diferentes funções fornecidas por ele. Ao compilar, esses projetos serão empacotados em um pacote JAR e, finalmente, mesclados para formar um pacote jar ou WAR

imagem

Esse tipo de aplicativo monolítico é relativamente simples quando o projeto é pequeno, mas à medida que o projeto fica maior e maior, o código se torna mais e mais. Haverá as seguintes deficiências.

① Difícil de compilar, difícil de implantar, difícil de testar

A quantidade de código aumenta, mesmo se uma linha de código for alterada, leva muito tempo para compilar. Antes da implantação, ele precisa ser compilado, empacotado, descompactado etc. É difícil implantar e é difícil testar após a implantação.

② Difícil escolher a tecnologia

À medida que se torna cada vez maior, a tecnologia usada em nossos aplicativos também se torna mais e mais. Algumas dessas tecnologias são incompatíveis, por exemplo, é quase impossível misturar C ++ e Java em grande escala em um projeto. Nesse caso, precisamos abandonar o uso de certas tecnologias incompatíveis e escolher uma tecnologia que não seja tão adequada para cumprir funções específicas.

③ Difícil de expandir

Mesmo se houver apenas uma função com alta simultaneidade, todas devem ser estendidas

imagem

7 O que é MicroService

Arquitetura de microsserviço é um estilo de arquitetura. Um software grande e complexo deve consistir em um ou mais microsserviços. Cada microsserviço no sistema pode ser selecionado por tecnologia independente, desenvolvimento independente, implantação independente, operação e manutenção independentes, e cada microsserviço é fracamente acoplado. Cada microsserviço se concentra apenas em concluir uma tarefa e concluí-la bem. Em todos os casos, cada tarefa representa uma capacidade de uma pequena empresa.

imagem

8 Seleção de Monolith e MicroService

imagem

Como pode ser visto na figura acima, no estágio inicial, a eficiência do desenvolvimento de aplicativos usando o padrão de arquitetura de microsserviço é significativamente menor do que a do Monolith. No entanto, conforme a escala de aplicativos aumenta, a eficiência de desenvolvimento com base no modelo de arquitetura de microsserviço aumentará significativamente, enquanto a eficiência de desenvolvimento com base no modelo Monolith diminuirá gradualmente.

Arquitetura de aplicativo monolítica: projetos de pequeno e médio porte (relativamente poucas funções), site oficial da empresa, sistema de gestão, etc.

Arquitetura de microsserviços: projetos em grande escala (mais funções), shopping erp, recursos humanos, paraíso de animais de estimação, etc. Projetos de Internet

9 O que prestar atenção quando o MicroService divide os microsserviços

1. Responsabilidade única, alta coesão e baixo acoplamento

2. Granularidade de serviço moderada

3. Considere a estrutura da equipe

4. Corte com um modelo de negócios

5. Divisão evolutiva

6. Evite dependência circular e dependência bidirecional

10 problemas a serem resolvidos no núcleo do MicroService

1. Registro de Serviço e Centro de Registro de Descoberta

2. Entrada unificada de gerenciamento de rede de microsserviços API

3. Tolerância a falhas de serviço e limite de corrente

4. Centro de configuração centralizado para serviços

5. Rastreamento da cadeia de chamadas de serviço

6. Implantação de serviço

7. Monitoramento de serviço

11 Soluções Comuns de MicroService

1. Springcloud Netflix

2. Springcloud alibaba

3. Dubbo

4. Kubernates-k8s

5. Malha de serviço

6. Outro

12 Fale brevemente sobre Springcloud

A arquitetura de microsserviço é uma ideia que requer a implementação de tecnologia. Na solução de microsserviço spring, springboot é usado para implementar um único serviço, e chamadas coordenadas entre serviços são implementadas usando a estrutura de governança de serviço springcloud netflix / alibaba. Os itens a seguir falam principalmente sobre os componentes comuns do netflix da seguinte maneira:

Cinco grandes bestas:

Descoberta de registro de serviço (centro de registro) -Netflix Eureka: ajude-nos a gerenciar o endereço de comunicação do serviço (ip, porta)

Balanceamento de carga do cliente - Netflix Ribbon \ Feign: resolver chamadas de serviço

Disjuntor-Netflix Hystrix: Resolva a falha de microsserviços, proteja os microsserviços

Gateway de serviço-Netflix Zuul: entrada de acesso unificada, porta para microsserviços (departamento de segurança)

Configuração distribuída - Spring Cloud Config: gerenciamento unificado de configuração de microsserviço

13 Fale brevemente sobre Springcloud Netflix eureka

Eureka é um submódulo do netflix e um dos módulos principais.

Eureka é um componente de registro e descoberta de serviço. Simplificando, é usado para gerenciar uniformemente o endereço de comunicação de microsserviços. É composto por duas partes: servidor EurekaServer (também chamado de registro) e cliente EurekaClient. EureakServer é um serviço independente e EurekaClient Ele precisa ser herdado em cada microsserviço.

Quando o microsserviço (EurekaClient) é iniciado, ele enviará sua própria lista de endereços de comunicação ao EureakServer, como: nome do serviço, ip, porta e EurekaServer formará uma lista de endereços de comunicação de microsserviço - isso é chamado de registro de serviço

O microsserviço (EurekaClient) irá extrair periodicamente uma lista de endereços de comunicação de microsserviço do EureakServer e armazená-la em cache localmente. Quando um microsserviço inicia uma chamada para outro microsserviço, ele encontrará sua lista de endereços de comunicação com base no nome do serviço de destino e, em seguida, iniciará uma solicitação para o serviço de destino com base no protocolo HTTP. - Isso é chamado de descoberta de serviço

Além disso, o microsserviço (EurekaClient) usa o mecanismo de "pulsação" para enviar um pedido ao EureakServer para renovação do serviço. Na verdade, ele envia um pedido ao EureakServer regularmente para relatar seu estado de saúde, informando ao EureakServer que você ainda está vivo e não se exclui da lista de endereços do serviço. Então, quando o microsserviço (EurekaClient) não conseguir renovar o contrato com o EureakServer, ou o pedido de renovação expirar, o registro removerá o serviço com falha da lista de endereços.

14 Fale brevemente sobre Springcloud Netflix ribbon / feign

Ribbon é um projeto de código aberto para serviços de camada intermediária em nuvem lançado pela Netflix. Sua principal função é fornecer algoritmos de balanceamento de carga do lado do cliente.

O Ribbon é um balanceador de carga do cliente, ele pode completar várias chamadas de balanceamento de carga do servidor de acordo com certas regras, e essas regras também oferecem suporte à personalização.

Feign é um cliente de Web Service declarativo, sua finalidade é facilitar as chamadas de Web Service. Feign fornece o modelo de interface de solicitação HTTP (o endereço de acesso está marcado acima). Ao escrever uma interface simples e inserir anotações, você pode definir os parâmetros, formato, endereço e outras informações da solicitação HTTP. Feign fará o proxy de solicitações HTTP completamente. Só precisamos chamá-lo como um método para concluir solicitações de serviço e processamento relacionado. Feign integra Ribbon e Hystrix (falaremos sobre Hystrix mais tarde), de forma que não precisamos mais usar esses dois componentes explicitamente.

15 Fale brevemente sobre Springcloud Netflix hystrix

Hystrix é um framework de alta disponibilidade muito popular, de código aberto, pelo conhecido site de vídeo estrangeiro Netflix. Hystrix pode resolver perfeitamente uma série de problemas técnicos enfrentados ao criar serviços altamente disponíveis na arquitetura de sistema distribuído.

Hystrix "Porcupine" tem a capacidade de se proteger. Hystrix resolve o problema do efeito de avalanche por meio do seguinte mecanismo.

1 Isolamento de recursos (limite atual): Incluindo isolamento de pool de threads e isolamento de semáforo, limitando o uso de recursos para chamar serviços distribuídos e um problema com um serviço chamado não afetará outras chamadas de serviço.

2 Fusível: Quando a taxa de falha atinge o limite, a degradação é acionada automaticamente (por exemplo, a taxa de falha é alta devido à falha / tempo limite da rede) e a falha rápida acionada pelo fusível se recupera rapidamente.

3 Mecanismo de downgrade: Downgrade com o tempo e recursos insuficientes (thread ou semáforo). Após o downgrade, ele pode cooperar com a interface de downgrade para retornar os dados do fundo.

4 Cache: fornece cache de solicitação e implementação de mesclagem de solicitação.

16 Fale brevemente sobre Springcloud Netflix zuul

Zuul é um servidor API Gateway de código-fonte aberto da netflix. As principais funções são as seguintes:

1. O roteamento dinâmico distingue qual serviço específico chamar por endereços diferentes

2. Filtro através do filtro, interceptação de login, julgamento de autoridade, etc. podem ser realizados

3. Balanceamento de carga: A camada inferior implementa chamadas de balanceamento de carga por meio da faixa de opções

4. Downgrade do fusível A camada inferior usa hystrix para implementar medidas de garantia de serviço, como o downgrade do fusível

5. ...

17 Fale brevemente sobre o servidor Springcloud Netflix Config

Em um sistema distribuído, devido ao grande número de serviços, a fim de facilitar o gerenciamento unificado dos arquivos de configuração de serviço e atualizações em tempo real, um componente do centro de configuração distribuído é necessário. No Spring Cloud, há um componente do centro de configuração distribuído, a configuração do spring cloud, que oferece suporte ao serviço de configuração na memória do serviço de configuração (ou seja, local) e também ao warehouse Git remoto. No componente de configuração do spring cloud, há duas funções, uma é config server e a outra é config client.

18 MicroService Architecture-Link Tracking

Na arquitetura de microsserviço, há chamadas mútuas entre os serviços e o monitoramento da cadeia de chamadas de serviço é necessário. Existem muitos produtos no mercado, as vantagens e desvantagens específicas são as seguintes:

imagem

19 Arquitetura de MicroServiço - Implantação

Na arquitetura de microsserviço, há muitos serviços, portanto, muitos serviços precisam ser implantados e atualizados rapidamente. Portanto, a implantação do docker é geralmente usada e um pipeline de cicd é necessário. O processo específico é o seguinte:

imagem

Acho que você gosta

Origin blog.csdn.net/Java_Yhua/article/details/110484030
Recomendado
Clasificación