"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Desenvolvendo Microsserviços com Spring Boot e Spring Cloud

Desenvolvendo Microsserviços com Spring Boot e Spring Cloud

Publicado em 2024-11-06
Navegar:929

Developing Microservices with Spring Boot and Spring Cloud

A arquitetura de microsserviços se tornou uma solução popular para a construção de sistemas escaláveis ​​e modulares. Com microsserviços, você pode dividir um aplicativo monolítico em serviços menores, independentes e especializados, o que facilita a manutenção e a evolução do sistema. Nesta postagem, exploraremos como você pode usar Spring Boot e Spring Cloud para criar microsserviços robustos e eficientes.

Introdução aos microsserviços
A ideia principal por trás dos microsserviços é dividir uma aplicação em pequenos serviços que podem ser desenvolvidos, implantados e dimensionados de forma independente. Cada microsserviço deve ser responsável por uma funcionalidade específica e se comunicar com outros serviços de maneira leve, geralmente usando APIs REST ou mensagens.

Algumas vantagens dos microsserviços incluem:

  • Escalabilidade independente: cada serviço pode ser escalado separadamente.
  • Implantação contínua: você pode atualizar ou corrigir um microsserviço sem afetar outros.
  • Flexibilidade tecnológica: cada serviço pode ser implementado usando diferentes tecnologias e frameworks. Agora, vamos ver como criar e gerenciar microsserviços com Spring Boot e Spring Cloud.

Agora, vamos ver como criar e gerenciar microsserviços com Spring Boot e Spring Cloud.

Criando microsserviços com Spring Boot

Spring Boot facilita a construção de microsserviços graças ao seu foco na configuração mínima e inicialização rápida. Vamos começar criando dois microsserviços: um serviço de "usuários" (User-service) e um serviço de "pedidos" (Order-service).

  1. Configurando um projeto Spring Boot

Para configurar um microsserviço, você pode usar o Spring Initializr para gerar um novo projeto com as dependências necessárias, como Spring Web e Spring Data JPA. Aqui está um exemplo básico de um controlador REST no serviço do usuário:

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public ResponseEntity getUserById(@PathVariable Long id) {
        User user = new User(id, "Matheus");
        return ResponseEntity.ok(user);
    }
}

Cada microsserviço pode ter seu próprio banco de dados, garantindo que os serviços sejam independentes e desacoplados. Para o User-service, podemos utilizar uma configuração com H2 ou PostgreSQL, por exemplo.

  1. Expondo APIs REST Cada microsserviço expõe seus recursos por meio de APIs REST, permitindo que outros serviços ou clientes consumam suas funcionalidades. Abaixo está um exemplo de um endpoint no serviço Order que consome a API do serviço do usuário:
@RestController
@RequestMapping("/orders")
public class OrderController {

    private final RestTemplate restTemplate;

    public OrderController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @GetMapping("/{id}")
    public ResponseEntity getOrderById(@PathVariable Long id) {
        User user = restTemplate.getForObject("http://user-service/users/"   id, User.class);
        Order order = new Order(id, user, "Order details");
        return ResponseEntity.ok(order);
    }
}

O RestTemplate é usado para fazer solicitações HTTP entre microsserviços.

Gerenciando microsserviços com Spring Cloud
Enquanto o Spring Boot ajuda a criar microsserviços rapidamente, o Spring Cloud fornece ferramentas adicionais para gerenciar a comunicação e a resiliência desses serviços em um ambiente distribuído. Vamos cobrir alguns componentes essenciais.

  1. Servidor de descoberta Eureka Um dos desafios dos microsserviços é a descoberta de serviços. Eureka é um servidor de descoberta que permite que serviços se registrem e descubram outros serviços sem a necessidade de URLs fixos.
  • Adicione a dependência spring-cloud-starter-netflix-eureka-server ao servidor Eureka.
  • Configure o arquivo application.yml no serviço User e no serviço Order para registrar-se no servidor Eureka:
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

Agora, os serviços serão registrados automaticamente no Eureka, tornando mais fácil para eles se descobrirem.

  1. API Gateway com Spring Cloud Gateway Em uma arquitetura de microsserviços, é essencial ter um ponto de entrada único para todos os serviços. O API Gateway atua como um intermediário entre o cliente e os microsserviços, encaminhando solicitações de forma eficiente.

Adicione a dependência spring-cloud-starter-gateway para criar um gateway simples:

spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://USER-SERVICE
          predicates:
            - Path=/users/**
        - id: order-service
          uri: lb://ORDER-SERVICE
          predicates:
            - Path=/orders/**

Com isso, qualquer solicitação feita a /users/** será encaminhada para o serviço do usuário, e o mesmo se aplica a /orders/**.

3.** Resiliência com disjuntor (Hystrix)**

Em um ambiente de microsserviços, as falhas são inevitáveis. Hystrix é um disjuntor que protege serviços contra sobrecarga isolando falhas. Aqui está um exemplo de como aplicá-lo a um método que consome outro serviço:

@HystrixCommand(fallbackMethod = "fallbackGetUser")
public User getUser(Long id) {
    return restTemplate.getForObject("http://user-service/users/"   id, User.class);
}

public User fallbackGetUser(Long id) {
    return new User(id, "Default User");
}

Se o serviço do usuário falhar, o método fallbackGetUser será chamado, garantindo que o sistema permaneça funcional.

Spring Boot, combinado com Spring Cloud, oferece uma excelente infraestrutura para o desenvolvimento de microsserviços escaláveis ​​e resilientes. Com recursos como descoberta de serviços, roteamento e gerenciamento de falhas, seu aplicativo estará bem preparado para operar em um ambiente distribuído e dinâmico.

Esteja você migrando de um aplicativo monolítico para microsserviços ou começando do zero, Spring Boot e Spring Cloud podem acelerar seu processo e garantir uma arquitetura sólida.

Gostou do post? Se você tiver alguma dúvida ou sugestão, deixe nos comentários! E não se esqueça de compartilhar com outros desenvolvedores que possam se beneficiar com essas dicas.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/matheusmartinello/developing-microservices-with-spring-boot-and-spring-cloud-5feh?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3