>  기사  >  Java  >  Spring Cloud의 우아한 마이크로서비스 사례

Spring Cloud의 우아한 마이크로서비스 사례

PHPz
PHPz원래의
2023-06-22 12:31:441196검색

인터넷의 발전과 함께 마이크로서비스 아키텍처는 인터넷 기업들 사이에서 점점 더 대중화되고 있습니다. Spring Cloud는 Spring Boot를 기반으로 완벽한 마이크로서비스 솔루션을 제공합니다. 이 글에서는 Spring Cloud 프레임워크를 사용하여 마이크로서비스를 실습하는 방법을 소개합니다.

1. 마이크로서비스 아키텍처 개요

소위 마이크로서비스 아키텍처는 애플리케이션을 더 작은 자율 서비스 단위로 분할하는 것입니다. 서비스는 경량 통신 메커니즘을 통해 함께 작동하며 각 서비스는 독립적으로 구축, 배포, 테스트 및 확장될 수 있습니다. . 마이크로서비스 아키텍처의 장점은 팀의 생산성과 시스템의 탄력성과 확장성을 향상시킬 수 있다는 것입니다.

2. Spring Cloud 마이크로서비스 프레임워크

Spring Cloud는 Spring 제품군의 마이크로서비스 솔루션입니다. Spring Boot를 기반으로 하는 완전하고 풍부한 툴킷을 제공합니다. Spring Cloud는 여러 구성요소(예: Eureka, Zuul, Hystrix 등)를 사용하여 완전한 마이크로서비스 환경을 구축합니다. Spring Cloud의 주요 구성요소는 다음과 같습니다.

1. Eureka: 서비스 등록 센터 제공,
2. Feign: 서비스 간 통신 구현, RESTful 호출 구현
3. , 다운그레이드 및 기타 기능을 통해 시스템의 견고성을 향상시킵니다.
4. Zuul: 통합 액세스 입구 및 로드 밸런싱을 달성하기 위한 API 게이트웨이 서비스를 제공합니다.
5. 구성: 구성 관리를 구현하고 분산 구성 센터를 제공합니다.

3. Spring Cloud 마이크로서비스 실습

다음은 Spring Cloud 프레임워크를 사용하여 마이크로서비스를 구축하는 방법을 보여주는 간단한 예입니다. 이 예에는 사용자 서비스와 주문 서비스라는 두 가지 서비스가 포함되어 있습니다. 사용자 서비스는 사용자 정보에 대한 CRUD 작업을 제공하며 주문 서비스는 사용자 정보를 얻기 위해 사용자 서비스를 호출해야 합니다.

1. 서비스 등록 센터 만들기

먼저 서비스 등록 및 검색을 위한 서비스 등록 센터를 만듭니다. Spring Cloud의 Eureka 구성 요소를 통해 서비스 등록 및 검색을 구현하는 Spring Boot 프로젝트를 만듭니다.

종속성 추가:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

시작 클래스에 @EnableEurekaServer 주석을 추가합니다.

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

application.properties 구성 파일에서 Eureka Server 관련 정보를 구성합니다.

2. 사용자 서비스 생성

사용자 정보에 대한 CRUD 작업을 제공하는 사용자 서비스를 생성합니다. Spring Cloud의 Feign 구성 요소를 통해 서비스 간 통신을 구현하는 Spring Boot 프로젝트를 만듭니다.

종속성 추가:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

시작 클래스에 @EnableFeignClients 주석을 추가합니다.

@SpringBootApplication
@EnableFeignClients
public class UserServiceApplication {

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

UserService 인터페이스를 생성하고 사용자 정보에 대한 CRUD 작업을 정의합니다. 호출할 서비스를 지정하려면 @FeignClient 주석을 사용하세요. 이 인터페이스에서는 OrderService에 대한 호출이 정의됩니다.

@FeignClient(name = "order-service", fallback = OrderServiceFallback.class)
public interface OrderService {
  
  @GetMapping("/user/{userId}")
  UserDTO getUserById(@PathVariable("userId") Long userId);
  
  @PostMapping("/user")
  UserDTO createUser(@RequestBody UserDTO user);
  
  @PutMapping("/user")
  UserDTO updateUser(@RequestBody UserDTO user);
  
  @DeleteMapping("/user/{userId}")
  void deleteUser(@PathVariable("userId") Long userId);
}

application.properties 구성 파일에서 Eureka 관련 정보와 Feign timeout을 구성합니다.

3. 주문 서비스 만들기

주문 정보를 처리하는 주문 서비스를 만듭니다. Spring Boot 프로젝트를 생성하고 Spring Cloud의 리본 및 Feign 구성 요소를 사용하여 사용자 서비스를 호출하고 서비스 간 로드 밸런싱을 달성합니다.

종속성 추가:


  org.springframework.cloud
  spring-cloud-starter-ribbon


<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

시작 클래스에 @EnableFeignClients 및 @EnableDiscoveryClient 주석을 추가합니다.

@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class OrderServiceApplication {

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

OrderService 인터페이스를 생성하고 주문 정보에 대한 CRUD 작업을 정의하세요. 이 인터페이스에서는 UserService에 대한 호출이 정의됩니다.

public interface OrderService {

  @GetMapping("/order/{orderId}")
  OrderDTO getOrderById(@PathVariable("orderId") Long orderId);

  @PostMapping("/order")
  OrderDTO createOrder(@RequestBody OrderDTO order);

  @PutMapping("/order")
  OrderDTO updateOrder(@RequestBody OrderDTO order);

  @DeleteMapping("/order/{orderId}")
  void deleteOrder(@PathVariable("orderId") Long orderId);
}

구현 클래스에서 @Autowired를 사용하여 UserService 인터페이스를 삽입합니다.

@Service
public class OrderServiceImpl implements OrderService {

  @Autowired
  private UserService userService;

  // ...
}

application.properties 구성 파일에서 Eureka 관련 정보와 리본의 로드 밸런싱 방식을 구성합니다.

IV. 요약

이 기사에서는 Spring Cloud 프레임워크를 통해 마이크로서비스 아키텍처 기반 환경을 구축하는 방법을 소개하고, 간단한 예제를 사용하여 서비스 등록 및 검색, 서비스 간 통신, 로드 밸런싱 및 기타 기능을 구현하는 방법을 보여줍니다. . 물론 이는 단순한 시작점일 뿐이며 실제 적용에서는 더 많은 시나리오와 문제를 고려해야 합니다. 더 깊은 학습과 실습을 통해서만 시스템의 안정성과 확장성이 더 향상될 수 있습니다.

위 내용은 Spring Cloud의 우아한 마이크로서비스 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.