>Java >java지도 시간 >Spring Cloud 마이크로서비스의 서비스 등록 및 검색

Spring Cloud 마이크로서비스의 서비스 등록 및 검색

WBOY
WBOY원래의
2023-06-23 09:48:061070검색

인터넷 비즈니스가 지속적으로 발전함에 따라 단일 애플리케이션은 더 이상 복잡한 비즈니스 요구 사항을 충족할 수 없으며 마이크로서비스 아키텍처는 점차 인기 있는 비즈니스 아키텍처 모델이 되었습니다. Spring Cloud는 마이크로서비스 아키텍처 시스템에서 중요한 지원 기술 중 하나이며 서비스 검색 및 등록 기능의 구현은 매우 중요합니다. 이번 글에서는 Spring Cloud의 서비스 등록과 검색 기능에 대해 자세히 설명하겠습니다.

  1. Background

마이크로서비스 아키텍처에서는 각 기능 모듈이 독립적인 서비스이고 서비스는 서로 통신해야 하므로 서비스 간 통신을 관리하는 메커니즘이 필요합니다. 서비스 등록 및 검색 메커니즘은 서비스가 통신하고 협력할 수 있도록 다른 서비스를 동적으로 등록하고 검색할 수 있도록 하는 메커니즘입니다.

Spring Cloud는 유레카 및 영사와 같은 다양한 등록 센터를 통합하여 서비스 등록 및 검색 메커니즘을 제공합니다. 그 중 유레카는 높은 가용성과 성능을 갖춘 가장 인기 있는 등록 센터 중 하나입니다.

  1. 서비스 등록

서비스 등록의 목적은 해당 서비스를 등록센터에 등록하여 다른 서비스에서 사용할 수 있도록 하는 것입니다. Spring Cloud에서는 @EnableDiscoveryClient 주석을 통해 서비스 검색 및 등록 기능을 활성화하는 동시에 관련 구성 정보를 application.yml 파일에 추가해야 합니다.

server:
  port: 8080
spring:
  application:
    name: service-demo
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/

위 구성에서 application.name은 서비스 이름이고 eureka.client.service-url.defaultZone은 등록 센터의 주소입니다.

  1. 서비스 검색

서비스 검색의 목적은 등록 센터에서 필요한 서비스 인스턴스를 찾은 다음 로드 밸런싱 정책에 따라 이러한 서비스 인스턴스를 호출하는 것입니다. Spring Cloud는 Ribbon, Feign 등 서비스 검색 및 로드 밸런싱을 위한 다양한 솔루션을 제공합니다.

리본을 사용하여 서비스 검색 및 로드 밸런싱을 구현하는 경우 pom.xml 파일에 관련 종속성을 추가해야 합니다. 샘플 코드는 다음과 같습니다.

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  <version>2.2.6.RELEASE</version>
</dependency>

먼저 서비스 등록 및 검색 기능을 활성화하려면 시작 클래스에 @EnableDiscoveryClient 주석을 추가해야 합니다. 그런 다음 @LoadBalanced 주석을 사용하여 로드 밸런싱된 RestTemplate 인스턴스를 생성한 다음 이 인스턴스를 사용하여 다른 서비스를 호출할 수 있습니다. 샘플 코드는 다음과 같습니다.

@RestController
public class ServiceController {
    @Autowired
    private RestTemplate restTemplate;
 
    @RequestMapping("/getProduct")
    public String getProduct() {
        String result = restTemplate.getForObject("http://product-service/product", String.class);
        return "get product from " + result;
    }
 
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceDemoApplication.class, args);
    }
}

위 코드에서 RestTemplate.getForObject()를 사용합니다. 다른 서비스를 호출하려면 "응용 프로그램 이름"을 사용해야 합니다(예: "http://product-service/product"). 여기서 product-service는 서비스 이름입니다.

  1. 요약

Spring Cloud는 각 서비스 인스턴스가 서로를 검색하고 호출할 수 있도록 서비스 등록 및 검색 기능을 제공합니다. 이러한 메커니즘을 통해 마이크로서비스 아키텍처의 각 구성 요소를 보다 편리하게 관리하고 예약할 수 있으며, 전체 시스템의 가용성과 확장성을 향상시킬 수 있습니다.

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

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