Spring Cloud Config Server란?
분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리하기 위한 방법
하나의 중앙화 된 저장소에서 구성요소 관리 가능
각 서비스를 다시 빌드하지 않고, 바로 적용 가능
애플리케이션 배포 파이프라인을 통해 환경에 맞는 구성정보 사용하도록 할 수 있음.
사용하기
1.Config Server
config-server dependency 추가
@EnableConfigServer 추가
관리 방법
Private Git Repository
server:
port: 8888
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/askyclear/msa-study-config-info.git
Native File Repository
server:
port: 8888
spring:
application:
name: config-server
profiles:
active:native
cloud:
config:
server:
native:
search-location: file://${user.home}/your config path
git:
uri: https://github.com/askyclear/msa-study-config-info.git
2. Using Service
dependency 추가
spring-cloud-starter-config/ spring-cloud-starter-bootstrap /spring.cloud.bootstrap.enabled=true
bootstrap.yml 추가
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: ecommerce
profiles:
active: dev
설정 정보 변경 방법
1. 서버 재기동
2. Actuator refresh 를 통한 방법
ㄴ Spring Boot Actuator Dependency 추가 및 설정
management:
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace
ㄴ http://{serviceurl}/actuator/refresh
3. Spring Cloud Bus 사용
ㄴ분상 시스템의 노드를 경량 메시지 브로커와 연결, 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달
ㄴ bus-amqp Dependency 추가 및 mq 설정 추가 아래 설정은 rabbitmq 설정 추가했을때(Config Server, MSA Service들 전체)
spring:
application:
name: gateway-service
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace, busrefresh
RabbitMQ
- 메시지 브로커
- 초당 20+ 메시지를 소비자에게 전달
- 메시지 전달 보장, 시스템 간 메시지 전달
- 브로커, 소비자 중심
Kafka
- 초당 100k+ 이상으 ㅣ이벤트 처리
- Pub/Sub, Topic에 메시지 전달
- Ack를 기다리지 않고 전달 가능
- 생산자 중심
용어 정리
- MOM ( Message Oriented Middleware, 메시지 지향 미들웨어 )
- 독립된 서비스 간에 데이터를 주고받을 수 있게 연결해주는 소프트웨어
- 비동기 방식으로 메시지를 전달
- 독립된 서비스 간에 데이터를 주고받을 수 있게 연결해주는 소프트웨어
- Message Broker
- Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할.
- MQ ( Message Queue, 메시지 큐 )
- 메시지 브로커와 MOM을 구현한 시스템
- AMQP ( Advanced Message Queueing Protocol )
- 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안
- MOM을 위한 개방형 표준 응용 계층 프로토콜
- Erlang, RabbitMQ, Kafka에서 사용
구현간 참조
config-server 에서 remote git을 연동했을때 org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: main 오류가 생겼을 경우 해당 repository에 main 브랜치가 없어서 생긴 문제이므로 생성.
참고
https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture-performance-use-case
'정리 > Spring Cloud' 카테고리의 다른 글
API gateway (0) | 2022.08.07 |
---|---|
Service Discovery (0) | 2022.06.28 |
댓글