MSA

FeignClient 를 활용해보기(feat. Eureka)

초록색거북이 2024. 4. 18. 11:49
728x90
반응형
SMALL

 

https://yjkim-dev.tistory.com/109

 

Spring Cloud Gateway, Eureka 사용해보기

Eureka란? Neflix에서 제공하는 MSA를 위한 클라우드 오픈 소스입니다. 정의는 LB 와 Middle-tier server에 에러 대응을 위한 REST 기반 서비스입니다. Eureka를 왜 쓸까? LB는 MSA의 각 모듈에 대한 연결 정보(ip,

yjkim-dev.tistory.com

를 먼저 보고오시는 것을 추천합니다. (내용이 이어지기때문)

 

 

MSA에서는 내부통신이 많이 일어납니다.

주로 Eureka에 등록해놓고, 그 인스턴스의 정보를 가져와 주소를 알아내고 요청을 합니다.

 

1번서버는 2번서버의 리턴값을  리턴하는 서비스가 있고,

2번서버는 문자열 "2번서버"를 리턴하는 서비스가 있습니다.

 

1번서버에서 -> 2번서버로 내부통신을 해 2번서버의 있는 리턴값을 가져와서

 

최종적으로 게이트웨이를 통해 1번서버를 호출했지만 2번서버의 리턴값을 가져오도록 해봤습니다.

 

 

 

List<ServiceInstance> instances = discoveryClient.getInstances("my-second-service");

위에 코드를 통해 유레카에 등록되어있는 클라이언트의 인스턴스명을 가져와 정보를 얻어내는 방식을 사용햇습니다.

 

 

FeignClient 이용하여 더 간단히 해보자

 

제목그대로 feignClient를 이용하면 MSA에서 자주 있을법한 내부통신을 간단하게 만들어준 라이브러리입니다. (넷플릭스에서 만듬)

 

바로 코드로 보여드리겠습니다.

 

 

FeignClient 코드 설정

build.gradle 설정을 해줍니다.

implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'

 

SecondServiceClient 인터페이스를 만들어줍니다.

 

@FeignClient 이게 핵심인데, 유레카에 등록된 서비스의 인스턴스명을 적어주면 통신이 바로 됩니다.

2번서버의 요청보낼 주소를 미리 @GetMapping 으로 만들어줍니다.

 

다시 controller로 돌아가

 

 

방금 만들었던 인터페이스를 호출만하면 됩니다.

 

호출할때 인터페이스에 각종 헤더나 바디, 파라미터, 타임아웃 세션 설정을 다 할수 있습니다.

 

그래서 간편하게 호출이 가능합니다.

테스트 해보기

1번서버의 API 주소를 입력했지만, 2번서버의 리턴 문자열이 응답이 오고 있습니다.

 

테스트 완료.

728x90
반응형
LIST