일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MSA
- spring cloud
- JPA
- 백준 16235
- spring security
- 백준 17779
- 백준 19238
- 백준 15685
- Spring Boot
- java 기술면접
- with recursive
- springboot
- JVM
- 백준 17626
- 백준
- 백준 16719
- Kotlin
- 백준 16236
- java
- re.split
- 프로그래머스
- MySQL
- Spring
- Coroutine
- 웹어플리케이션 서버
- 백준 파이썬
- 프로래머스
- sql 기술면접
- 파이썬
- spring oauth
- Today
- Total
시작이 반
[MSA] Spring Cloud ( Config, Cloud bus ) 본문
외부 Config 정보 바꾸기는 3가지가 있다.
- 서비스 재기동
- Actuator refresh
- Spring cloud bus
이전 포스트는 Actuator refresh까지 설명하였다.
Actuator refresh는 어플리케이션 서버가 한두개면 문제가 되지 않지만 수백개의 서비스가 있을경우 각각의 어플리케이션마다 다 refresh를 수동으로 해줘야 하기 때문에 번거롭다.
이보다 더 편한 방법은 3번째 방법인 Spring cloud bus를 이용하면 된다. 이방법은 한쪽에서 refresh를 config와 연결된 모든 서비스를 refresh를 해주는 방법이다.
상태 및 구성에 대한 변경사하으 연결된 노드에게 전달한다. (Broadcast)
구현방법
- AMQP : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜
- 메시지 지향, 큐잉, 라우팅, 신롸성, 보안
- Erlang, RabbitMQ에서 사용
- Kafka
- Apachec Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
- 분산형 스트리밍 플랫폼
- 대용량의 데이터를 처리 가능한 메시징 시스템
메시지 큐잉서비스
RabbitMQ ( 적은데이터 안전 )
- 메시지 브로커
- 초당 20+ 메시지를 소비자에게 전달
- 메시지 전달 보장, 시스템 간 메시지 전달
- 브로커, 소비자 중심
Kafka ( 대용량 )
- 초당 100k+ 이상의 이벤트 처리
- pub/sub, Topic에 메시지 전달
- Ack를 기다리지 않고 전달 가능
- 생산자 중심
결과로 HTTP POST/busrefresh 를 통해 연결된 모든 노드들을 refresh한다.
만약 user-service의 설정정보가 바꼈다고하면 아무서버에서 /busfresh를 하면 연결된 모든 노드를 refresh를 한다.
RabbitMQ를 통해 구현해보자
우선 윈도우사용자는 RabbitMQ와 Erlang을 설치한다. ( 설치방법은 찾아보자... )
서버를 실행해놓아야 한다.
15672포트로 들어가보면 해당 화면이 나온다.
초기
id : guest
pw : guest
모든 서비스에는 해당 디펜던시를 추가한다. (config, gateway, user, order, catalog)
또한 연결된 모든 노드에 RabbiMq 설정정보를 추가한다. (포트번호는 5672번임)
또한 actuator 의 end point에 busrefresh를 추가해준다.
이제 확인해보자....
실행은 rabbimq서버가 실행되어 있어야하고 discovery, config를 순서대로 먼저 실행해준다.
그 다음 각 서비스들을 실행해준다.
user-service의 설정값을 변경하고 order-service에서 busrefresh를 통해 변경이 되는지 확인해 보겠다.
User-service의 설정 파일 정보 test2.yml
test 정보는 "test2"라고 되어있음
test2가 나온다.
이제 바꿔보자....
우선 yml파일은 바꾸고 config서버의 정보를 확인해보자
잘 바껴있다. ( 아직 서비스 값은 바껴있지 않음 )
그러면 이제 바뀐값을 적용하기 위해 busrefresh를 사용하여 적용시켜보자
노드로 이어진 어디서든 호출하면된다. ( config, gateway, user, order, catalog )
order-service에서 호출해보자
204status를 주면서 성공한것을 볼 수 있다.
그러면 user-service의 값이 변경됐는지 확인해보자.
변경이 잘되었다.
'Programming > MSA' 카테고리의 다른 글
[MSA] Spring Cloud ( Kafka 사용법 ) (0) | 2021.08.09 |
---|---|
[MSA] Spring Cloud ( Microservice간 통신 - feignClient) (0) | 2021.08.08 |
[MSA] Spring Cloud ( Config, actuator refresh ) (0) | 2021.08.07 |
[MSA] Spring Cloud ( Service 등록 ) (0) | 2021.08.04 |
[MSA] Spring Cloud ( Gateway Filter ) (0) | 2021.08.03 |