백엔드/MSA

[MSA] Spring Cloud Netflix Eureka

2023. 5. 11. 23:55
목차
  1. Spring Cloud Netflix Eureka
  2. Eureka 서버 생성
  3. Eureka Client
  4. 등록
  5. 설정
  6. 유레카 서버 속성
  7. 유레카 설정 구분
  8. 자기 보호 모드
  9. 레지스트리 등록 여부/캐싱 여부
728x90

Spring Cloud Netflix Eureka

Spring Cloud Netflix Eureka는 Client-Side discovery 방식의 Service Discovery중 하나이다.

 

[MSA] Service Discovery

Service Discovery란? MSA와 같은 분산 환경에서의 동작은 서비스 간의 원격 호출(API 호출)로 구성되며, 원격 호출은 각 서비스의 ip 주소와 port를 기반으로 요청된다. 클라우드 환경에서는 서비스가 aut

brightstarit.tistory.com

 

Service Discovery의 기능은 크게 2가지이다.

  • 등록 : microservice를 사용할 수 있도록 등록해준다.
  • 검색 : Api Gateway 혹은 라우터에게 그 서비스들을 알려주도록 검색하는 기능을 제공한다.

Eureka 서버 생성

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

@EnableEurekaServer 라는 어노테이션을 통해 해당 애플리케이션을 서버로 등록해 줄 수 있다.


Eureka Client

Eureka Client LoadBalancer 방식을 기본으로 사용하는 로드밸런서를 내장하고 있다.

로드밸런싱 방식에는 여러방식이 있지만 server와 client로 구분해 살펴볼 수 있다.

  • server side loadBalancing : 스위치를 거쳐 분산처리를 하는 방식
  • client side loadBalancing : 스위치를 거치지 않고 클라이언트가 처리하는 방식

등록

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

@EnableDiscoveryClient 라는 어노테이션을 통해 해당 애플리케이션을 클라이언트로 등록할 수 있다.


설정

유레카 서버 혹은 microservice를 등록하기 위해서는 설정이 필요하다.

 

방법

  1. application.yml을 작성
  2. 별도의 설정 클래스를 만들어 설정을 적용

yml파일에 들어갈 유레카 서버 속성을 살펴보자

유레카 서버 속성

  • 유레카 설절 구분
  • 가지 보호 모드
  • 레지스트리 등록 여부/캐싱 여부
  • 레지스트리 갱신 - 서비스 등록 관련
  • 레지스트리 갱신 - 서비스 해제 관련
  • IP 주소 우선하기
  • 유레카 피어링 설정

유레카 설정 구분

  • eureka.server. : Eureka Server 관련 설정
  • eureka.client. : 클라이언트가 레지스트리에서 다른 서비스의 정보를 얻을 수 있는 설정
  • eureka.instance. : 포트나 이름등 현재 Eureka Client의 행동을 재정의하는 설정

자기 보호 모드

일시적인 네트워크 장애로 인한 서비스 해제 막기 위한 모드이다.(운영단계에서는 항상 활성화시켜야 한다.) eureka.server.enable-self-preservation

유레카 서버는 서비스의 각 인스턴스로부터 생존신호(heartbeat) 메시지를 받게 되는데, 설정된 기간 동안 하트비트 메시지를 받지 못하면 레지스트리에서 서비스가 삭제된다.

이때, 등록된 모든 서비스가 해제되는 것을 방지하기 위해 자기 보호 모드가 필요한것이다.

레지스트리 등록 여부/캐싱 여부

  • eureka.client.register-with-eureka : 레지스트리에 자신을 등록할지에 대한 여부
  • eureka.client.fetch-registry : 레지스트리에 있는 정보를 가져올지에 대한 여부
    • 만약 해당 속성을 true 로 설정 시 검색할 때마다 Eureka Server를 호출하는 대신 레지스트리가 로컬로 캐싱됨
    • 또한 30초마다 Eureka Client가 유레카 레지스트리 변경 사항 여부 재확인함

참고 자료:

https://velog.io/@ksh9409255/Service-Discovery

 

Service Discovery

클라이언트가 필요한 서비스가 어디에 있는지 알려주는 서비스를 의미한다.우리는 해당 서비스를 Eureka 서버를 사용하여 실습을 할 것이다.Service Discovery의 기능은 크게 2가지이다.1\. 등록2\. 검

velog.io

 

'백엔드 > MSA' 카테고리의 다른 글

[MSA] Kafka Connect  (0) 2023.05.24
[MSA] Spring Cloud Gateway  (0) 2023.05.13
[MSA] Service Discovery  (0) 2023.05.11
  1. Spring Cloud Netflix Eureka
  2. Eureka 서버 생성
  3. Eureka Client
  4. 등록
  5. 설정
  6. 유레카 서버 속성
  7. 유레카 설정 구분
  8. 자기 보호 모드
  9. 레지스트리 등록 여부/캐싱 여부
'백엔드/MSA' 카테고리의 다른 글
  • [MSA] Kafka Connect
  • [MSA] Spring Cloud Gateway
  • [MSA] Service Discovery
밝은별 개발자
밝은별 개발자
호기심 가득한 밤을 하나씩 밝히는 밝은별입니다.
밝은별 개발 블로그호기심 가득한 밤을 하나씩 밝히는 밝은별입니다.
밝은별 개발자
밝은별 개발 블로그
밝은별 개발자
전체
오늘
어제
  • 전체 글 (59)
    • 자소서 (0)
    • 백엔드 (55)
      • Java (15)
      • 네트워크 (5)
      • JPA (11)
      • Spring (6)
      • 운영체제 (8)
      • MSA (4)
      • etc (4)
      • 데이터베이스 (2)
    • 프로젝트 (3)
      • Petogram (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 운영체제
  • pojo
  • 캐시
  • OS
  • 런타임데이터영역
  • 메모리
  • 이펙티브자바
  • db
  • Service discovery
  • JDK 동적프록시
  • HTTP
  • 디자인 패턴
  • 스트림
  • 네트워크
  • MSA
  • 클린 아키텍처 #spring
  • 영속성컨텍스트
  • JPA
  • Redis
  • EUREKA
  • Spring
  • java8
  • Petogram
  • 객체지향
  • 변경 감지
  • ORM
  • 상속
  • Java
  • 데이터베이스
  • 쓰기 지연

최근 댓글

최근 글

hELLO · Designed By 정상우.
밝은별 개발자
[MSA] Spring Cloud Netflix Eureka
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.