Springcloud-eureka 서비스 등록 및 검색

  • 모놀리식 아키텍처: 단순하고 편리하며 결합성이 높으며 확장성이 낮고 소규모 프로젝트에 적합합니다. 예: 학생 관리 시스템

  • 분산 아키텍처: 느슨하게 결합되고 확장 가능하지만 복잡하고 어렵습니다. JD.com 및 Taobao와 같은 대규모 인터넷 프로젝트에 적합

  • 마이크로서비스: 우수한 분산 아키텍처 솔루션

    ①장점: 더 작은 분할 세분성, 더 독립적인 서비스 및 더 낮은 결합

    ②단점 : 구조가 매우 복잡하고 운영 및 유지보수, 감시 및 배치의 어려움이 증가함

  • SpringCloud는 마이크로서비스 아키텍처를 위한 원스톱 솔루션으로, 다양하고 우수한 마이크로서비스 기능 구성 요소를 통합합니다.

2.2 서비스 분할 예시

수업 전 자료의 마이크로서비스 클라우드 데모를 예로 들면 그 구조는 다음과 같습니다.

 

cloud-demo: 상위 프로젝트, 종속성 관리

  • order-service: 주문 관련 업무를 담당하는 주문 마이크로서비스

  • user-service: 사용자 관련 비즈니스를 담당하는 사용자 마이크로서비스

필요하다:

  • 주문 마이크로서비스와 사용자 마이크로서비스 모두 서로 독립적인 자체 데이터베이스를 가져야 합니다.

  • 주문 서비스와 사용자 서비스 모두 Restful 인터페이스를 외부 세계에 노출합니다.

  • 주문 서비스가 사용자 정보를 조회해야 하는 경우 사용자 서비스의 Restful 인터페이스만 호출할 수 있으며 사용자 데이터베이스를 조회할 수 없습니다.

 유레카 서버 등록

먼저 모든 사람이 중앙 서버인 eureka-server를 등록합니다. 이는 독립적인 마이크로 서비스여야 합니다.

1) 유레카 서버 서비스 생성

cloud-demo 상위 프로젝트에서 하위 모듈을 만듭니다.

모듈 정보를 입력합니다.

 그런 다음 서비스 정보를 입력합니다.

2) 유레카 종속성 도입

eureka를 위해 SpringCloud에서 제공하는 스타터 종속성을 소개합니다.

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

3) 시작 클래스 작성

 eureka-server 서비스를 위한 시작 클래스를 작성하려면 @EnableEurekaServer 주석을 추가하여 eureka의 등록 센터 기능을 활성화해야 합니다.

package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

4) 구성 파일 쓰기

다음 내용으로 application.yml 파일을 작성합니다.

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

5) 서비스 시작

마이크로 서비스를 시작한 다음 브라우저에서 http://127.0.0.1:10086 을 방문하십시오.

다음 결과가 성공해야 합니다.

 유레카에서 서비스 목록 보기 

 

 

서비스 등록

다음으로 사용자 서비스를 eureka-server에 등록합니다.

1) 종속성 소개

user-service의 pom 파일에서 다음 eureka-client 종속성을 도입합니다. 

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

2) 구성 파일

user-service에서 application.yml 파일을 수정하고 서비스 이름과 eureka 주소를 추가합니다.

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3) 여러 사용자 서비스 인스턴스 시작

서비스에 여러 인스턴스가 있는 시나리오를 시연하기 위해 SpringBoot 시작 구성을 추가하고 사용자 서비스를 시작합니다.

먼저 원래 사용자 서비스 시작 구성을 복사합니다.

그런 다음 팝업 창에서 정보를 입력하십시오.

 1. 두 개의 주문 서비스를 복사하는 방법은 마우스 오른쪽 버튼을 클릭하고 구성 복사를 선택한 다음 사진의 선택한 위치에 추가합니다.

-Dserver.port=8082(8082는 포트 번호를 나타냄)

 이제 두 개의 사용자 서비스 시작 구성이 SpringBoot 창에 나타납니다.

 

그러나 첫 번째는 포트 8081이고 두 번째는 포트 8082입니다.

두 개의 사용자 서비스 인스턴스를 시작합니다.

 eureka-server 관리 페이지 보기:

1. 유레카의 주요 서비스

2. 투 오더 서비스

3. 하나의 사용자 서비스

 서비스 디스커버리

1. eureka-server로 이동하여 사용자 서비스 서비스의 인스턴스 목록을 가져오고 로드 밸런싱을 구현합니다.

그러나 이러한 작업을 수행할 필요는 없으며 일부 주석만 추가하면 됩니다.

order-service의 OrderApplication에서 RestTemplate Bean에 @LoadBalanced 주석을 추가합니다.

eureka-server로 이동하여 사용자 서비스 서비스의 인스턴스 목록을 가져오고 로드 밸런싱을 구현합니다.

그러나 이러한 작업을 수행할 필요는 없으며 일부 주석만 추가하면 됩니다.

order-service의 OrderApplication에서 RestTemplate Bean에 @LoadBalanced 주석을 추가합니다.  

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

 order-service 서비스의 cn.itcast.order.service 패키지 아래 OrderService 클래스에서 queryOrderById 메서드를 수정합니다. 액세스할 URL 경로를 수정하고 ip 및 포트 대신 서비스 이름을 사용합니다.

   @Autowired
    private RestTemplate restTemplate;

 public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order
        order.setUser(user);
        // 4.返回
        return order;
    }

요약하다

 

 

추천

출처blog.csdn.net/zxc472504515/article/details/125715740