inflearn logo
강의

講義

知識共有

Spring Cloudで開発するマイクロサービスアプリケーション(MSA)

RestTemplateの使用 ②

@Loadbalanced 관련

629

Junyi Song

投稿した質問数 5

0

- spring-boot: v2.5.2

- cloud: 2020.0.3

예제처럼 따라했는데, user-service -> order-service로의 접근시에는 gateway를 통하지 않고 바로 통신합니다.
유레카에서 해당 서비스 IP/PORT 아이피를 바로 얻어갑니다

아래는 /user 조회시 주문 정보까지 가져올 때 gateway 로그입니니다. 

/user호출

  |- 해당 호출에서 rest로 /order 호출 

이면 gateway에서 /order 로깅이 되어야 하는데 출력이 되지 않네요.

2021-07-14 12:10:01.325  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global filter: baseMessage: Spring Cloud Gateway Global Filter
2021-07-14 12:10:01.327  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global Filter Start: request id -> 96706a17-38
2021-07-14 12:10:01.328  INFO 48697 --- [ctor-http-nio-3] c.s.c.filter.AuthorizationHeaderFilter   : Authorization> authorizationHeader: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjYzg5N2Q3ZmQ3OTU0NjFiYmVjYjFhNjE1YTE5ZjU1OSIsImV4cCI6MTYyNjIzMzI4MH0.RIMPVoIUb8UNsrTOC4UTfmG3VXF-NdwqUlzTsNIxqjr2Fp0A50DGcmBQc6qwZ6Ucwi8-kraU9FuYCgMM_nIM2Q
2021-07-14 12:10:01.331  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging filter: baseMessage: Inner Logging Filter
2021-07-14 12:10:01.332  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging PRE Filter: request uri -> http://localhost:8080/users/cc897d7fd795461bbecb1a615a19f559
2021-07-14 12:10:01.461  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging POST Filter: response code -> 200 OK
2021-07-14 12:10:01.461  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global Filter End: response code -> 200 OK
2021-07-14 12:14:07.516  INFO 48697 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration

그래서 예제처럼 @Loadbalanced를 쓰려면 uri에서 "/order-service"를 제거해야만 나옵니다.

먼가 설정을 빠뜨린 것 같은데 잘 모르곘네요

spring-cloud architecture spring-boot JPA Kafka msa

回答 2

1

Dowon Lee

안녕하세요, 이도원입니다. 

다음과 같이 사용자의 상세 정보를 요청하게 되면, 

http://ip_address:8000/user-service/users/[user_id]

ex)

해당 사용자가 주문한 주문 내역이 같이 보여지게 됩니다. 이때 RestTempalte에서는 order-service에 요청하기 위해서 user-service.yml 파일로 부터 다음과 같은 주소를 사용하고 있습니다. 

order_service:
url: http://ORDER-SERVICE/order-service/%s/orders

위에서 보시는 것처럼, EUREKA에 등록된 ORDER-SERVICE라는 애플리케이션명을 통해 직접 order service에 접속하고 있기 때문에, apigateway-service를 거치지 않고 바로 요청하게 됩니다. 만약 위 정보를 아래와 같이 apigateway를 거쳐서 접속하도록 수정한다면 apigateway-service에 해당 로그가 출력되는 것을 보실 수 있을겁니다. 

order_service:
# url: http://ORDER-SERVICE/order-service/%s/orders
url: http://ip_address:8000/order-service/%s/orders

위 로그는 apigateway-service에 대한 내용인데, 첫번째 request id -> c5045b2f-53는 user-service에 대한 요청이고, 두번째 request id -> 3925e9cb-1는 user-service에서 order-service를 요청한 내용입니다.

추가로, 위와 같이 Eureka의 ORDER_SERVICE라는 애플리케이션명 대신 직접 ip address를 지정해서 사용하실 경우에는 user-service에서 RestTemplate 빈을 등록하실 때 @LoadBalanced 어노테이션을 넣지 말고 실행하시기 바랍니다.

    @Bean
// @LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}

감사합니다. 

0

wnrhd10821572

@Loadbalanced 관련

- spring-boot: v2.5.2

- cloud: 2020.0.3

예제처럼 따라했는데, user-service -> order-service로의 접근시에는 gateway를 통하지 않고 바로 통신합니다.
유레카에서 해당 서비스 IP/PORT 아이피를 바로 얻어갑니다

아래는 /user 조회시 주문 정보까지 가져올 때 gateway 로그입니니다. 

/user호출

  |- 해당 호출에서 rest로 /order 호출 

이면 gateway에서 /order 로깅이 되어야 하는데 출력이 되지 않네요.

2021-07-14 12:10:01.325  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global filter: baseMessage: Spring Cloud Gateway Global Filter
2021-07-14 12:10:01.327  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global Filter Start: request id -> 96706a17-38
2021-07-14 12:10:01.328  INFO 48697 --- [ctor-http-nio-3] c.s.c.filter.AuthorizationHeaderFilter   : Authorization> authorizationHeader: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjYzg5N2Q3ZmQ3OTU0NjFiYmVjYjFhNjE1YTE5ZjU1OSIsImV4cCI6MTYyNjIzMzI4MH0.RIMPVoIUb8UNsrTOC4UTfmG3VXF-NdwqUlzTsNIxqjr2Fp0A50DGcmBQc6qwZ6Ucwi8-kraU9FuYCgMM_nIM2Q
2021-07-14 12:10:01.331  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging filter: baseMessage: Inner Logging Filter
2021-07-14 12:10:01.332  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging PRE Filter: request uri -> http://localhost:8080/users/cc897d7fd795461bbecb1a615a19f559
2021-07-14 12:10:01.461  INFO 48697 --- [ctor-http-nio-3] c.socurites.cloud.filter.LoggingFilter   : Logging POST Filter: response code -> 200 OK
2021-07-14 12:10:01.461  INFO 48697 --- [ctor-http-nio-3] com.socurites.cloud.filter.GlobalFilter  : Global Filter End: response code -> 200 OK
2021-07-14 12:14:07.516  INFO 48697 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration

그래서 예제처럼 @Loadbalanced를 쓰려면 uri에서 "/order-service"를 제거해야만 나옵니다.

먼가 설정을 빠뜨린 것 같은데 잘 모르곘네요

Dowon Lee
Dowon Lee2021.07.22 AM 11:12

안녕하세요, 이도원입니다. 

다음과 같이 사용자의 상세 정보를 요청하게 되면, 

http://ip_address:8000/user-service/users/[user_id]

ex)

해당 사용자가 주문한 주문 내역이 같이 보여지게 됩니다. 이때 RestTempalte에서는 order-service에 요청하기 위해서 user-service.yml 파일로 부터 다음과 같은 주소를 사용하고 있습니다. 

order_service:
url: http://ORDER-SERVICE/order-service/%s/orders

위에서 보시는 것처럼, EUREKA에 등록된 ORDER-SERVICE라는 애플리케이션명을 통해 직접 order service에 접속하고 있기 때문에, apigateway-service를 거치지 않고 바로 요청하게 됩니다. 만약 위 정보를 아래와 같이 apigateway를 거쳐서 접속하도록 수정한다면 apigateway-service에 해당 로그가 출력되는 것을 보실 수 있을겁니다. 

order_service:
# url: http://ORDER-SERVICE/order-service/%s/orders
url: http://ip_address:8000/order-service/%s/orders

위 로그는 apigateway-service에 대한 내용인데, 첫번째 request id -> c5045b2f-53는 user-service에 대한 요청이고, 두번째 request id -> 3925e9cb-1는 user-service에서 order-service를 요청한 내용입니다.

추가로, 위와 같이 Eureka의 ORDER_SERVICE라는 애플리케이션명 대신 직접 ip address를 지정해서 사용하실 경우에는 user-service에서 RestTemplate 빈을 등록하실 때 @LoadBalanced 어노테이션을 넣지 말고 실행하시기 바랍니다.

kafka 업데이트 강의 듣고 시포요

0

84

1

강의 교안

0

72

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

64

1

섹션 19 질문드립니다

0

51

1

강의 자료 업데이트

0

81

1

부하분산 강의 섹션

0

56

1

강의자료는 어디에서?

0

69

1

강의 자료는 어디서 다운 받을 수 있나요?

0

109

1

전체 사용자 조회시 오류

0

57

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

109

2

학습 방향

0

94

2

카프카 커넥터 사용 목적 문의

0

85

2

kafka 강의

0

107

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

115

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

89

2

Kafka Source Connect 버전 에러

0

83

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

94

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

111

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

160

2

어떤 것이 업데이트 된 건가요?

0

162

2