Coder Social home page Coder Social logo

msa-springcloud's Introduction

MSA using SpringCloud

Development Environment

Windows 10 JDK 11.0.6 SpringBoot 2.3.2.RELEASE Maven 3.6.3 Git 2.22.0.windows.1 intellij Spring Cloud Hoxton.SR6 에서 SR8 로 업그레이드 RabbitMQ 3.8.6 Erlang/OTP 23.0 kafka_2.13-2.6.0

Table of Contents

  • Config Server (환경설정 외부화)
  • Feign (REST Client & Circuit Breaker)
  • Eureka (Service Registry & Discovery)
  • Zuul (Proxy & API Gateway)
  • OAuth2, JWT (Security)
  • Spring Cloud Stream (EDA, 비동기 마이크로서비스 구성)
  • Sleath, Papertrail, Zipkin (Logging Tracker)
  • Hystrix + Turbine (Circuit Breaker & Dashboard, 여러 대의 WAS 한번에 모니터링)

- Config Server (환경설정 외부화)
자세한 설명은 Spring Cloud - Spring Cloud Config Server 를 참고

Messaging with RabbitMQ
AMQP doc
JCE jar download

HOW TO RUN

-- rabbitMQ 서버 실행
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start

-- rabbitMQ 관리자 UI 확인
http://localhost:15672/

-- 현재 프로젝트 실행
mvn spring-boot:run

-- 컨피스 서버 구동 확인
http://localhost:8889/actuator

-- 컨피그 서버 JSON Payload 확인
http://localhost:8889/member-service/default/
http://localhost:8889/member-service/dev

-- 현재 실행중인 환경정보 확인
http://localhost:8090/actuator/env

-- port 재설정하여 서비스 띄우기
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar

-- actuator bus 종단점 호출하여 설정정보 변경 전파
POST http://localhost:8090/actuator/bus-refresh

-- 변경된 설정정보 확인
GET http://localhost:8090/member/name?nick=JU
GET http://localhost:8091/member/name?nick=JU

-- 컨피그 서버 암호화 키로 암호화/복호화된 패스워드 확인
POST http://localhost:8889/encrypt

POST http://localhost:8889/decrypt

- Feign (REST Client & Circuit Breaker)
자세한 설명은 Spring Cloud - Spring Cloud Feign 를 참고


- Eureka (Service Registry & Discovery)
자세한 설명은 Spring Cloud - Spring Cloud EurekaSpring Cloud - Spring Cloud Eureka (상세 설정편)를 참고

HOW TO RUN

-- rabbitMQ 서버 실행
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start

-- port 재설정하여 서비스 띄우기
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8070 -jar event-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8071 -jar event-service-0.0.1-SNAPSHOT.jar

-- actuator bus 종단점 호출하여 설정정보 변경 전파
POST http://localhost:8090/actuator/bus-refresh

-- 변경된 설정정보 확인
GET http://localhost:8090/member/name?nick=JU
GET http://localhost:8071/event/name?nick=JU

-- 유레카 서버 구축 후 재기동
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\eurekaserver\target>java -jar eurekaserver-0.0.1-SNAPSHOT.jar

-- 유레카 콘솔 확인
http://localhost:8761/

-- 유레카 서비스 등록 후 재기동
C:\eurekaserver\target>java -jar eurekaserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8071 -jar event-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8070 -jar event-service-0.0.1-SNAPSHOT.jar

-- 유레카 서버에 등록된 레지스트리 내용 확인
http://localhost:8761/eureka/apps/

-- 특정 서비스 레지스트리 확인
http://localhost:8761/eureka/apps/event-service

-- RestTemplate 적용 후 API 호출
http://localhost:8090/member/gift/flower 

-- Feign 적용 후 API 호출
C:\> mvn clean install
C:\configserver>java configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java event-service-0.0.1-SNAPSHOT.jar

GET http://localhost:8070/event/member/hyori

- Zuul (Proxy & API Gateway)
자세한 설명은 Spring Cloud - Netflix Zuul(1/2)Spring Cloud - Netflix Zuul(2/2), Spring Cloud - Netflix Zuul(Ribbon) Retry를 참고

HOW TO RUN

-- 유레카 콘솔 접속하여 주울 등록되었는지 확인
http://localhost:8761/

-- 주울이 잘 떴는지 확인
http://localhost:5555/actuator/env

-- 주울이 라우팅하고 있는 경로 확인
http://localhost:5555/actuator/routes

-- 주울을 통해 이벤트 서비스의 REST API 호출 (feign)
http://localhost:5555/event-service/event/member/assu

-- 컨피그 저장소 설정값 변경 후 내용 전파
POST http://localhost:5555/actuator/bus-refresh 

-- 주울 수동 매핑된 경로로 라우팅되는지 확인
http://localhost:5555/evt/event/member/hyori

-- `api` 프리픽스 붙인 후 라우팅 확인
http://localhost:5555/api/evt/event/member/hyori

-- 주울을 통해 회원 서비스의 REST API 호출 (RestTemplate)
http://localhost:5555/api/mb/member/gift/flower

-- 사전/사후 필터 동작 확인 (상관관계 ID 생성 및 하위 서비스에 전파/응답 헤더에 상관관계 ID 삽입)
http://localhost:5555/api/mb/member/name/hyori

- OAuth2, JWT (Security)
자세한 설명은 Spring Cloud - OAuth2, Security(1/2)Spring Cloud - OAuth2, Security(2/2)를 참고

HOW TO RUN

-- 액세스 토큰 획득
[POST] http://localhost:8901/auth/oauth/token

-- 액세스 토큰으로 사용자 정보 조회
[GET] http://localhost:8901/auth/user 

-- OAuth2 로 회원 서비스 보호 후 API 호출
[GET] http://localhost:8090/member/name/rinda

-- 권한 있는 사용자(assuAdmin) 의 액세스 토큰과 함께 PUT 메서드 API 호출
[PUT] http://localhost:8090/member/rinda

-- oauth2 전파 (이벤트 서비스에서 회원서비스 호출)
[GET] http://localhost:5555/api/evt/event/userInfo/rinda

-- JWT 인증 서버 설정 후 액세스 토큰 획득
[POST] http://localhost:8901/auth/oauth/token

-- JWT 토큰 획득 후 인증 확인
[GET] http://localhost:8090/member/gift/manok

- Spring Cloud Stream (EDA, 비동기 마이크로서비스 구성)

자세한 설명은 Spring Cloud Stream, 분산 캐싱 (1/2)Spring Cloud Stream, 분산 캐싱 (2/2) 를 참고

HOW TO RUN

--  주키퍼 실행
C:\kafka_2.13-2.6.0\bin\windows>.\zookeeper-server-start.bat ..\..\config\zookeeper.properties

-- 카프카 실행
C:\kafka_2.13-2.6.0\bin\windows>.\kafka-server-start.bat ..\..\config\server.properties

-- 카프카 토픽 리스트 조회
C:\kafka_2.13-2.6.0\bin\windows>.\kafka-topics.bat --list --zookeeper localhost:2181
__consumer_offsets
mbChangeTopic
springCloudBus

-- 메시지 발행/수신 확인
[POST] http://localhost:8090/member/assu

-- 레디스 설치확인
C:\Users\ju>netstat -an|findstr 6379
  TCP    127.0.0.1:6379         0.0.0.0:0              LISTENING
C:\Users\ju>redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"
127.0.0.1:6379>

-- 레디스 실행
redis-server.bat 실행

-- 모든 키 확인
127.0.0.1:6379> keys *
1) "member"

-- key-value 확인 (get 은 String 만 다루므로 여기선 에러로 표시)
127.0.0.1:6379> get member
(error) WRONGTYPE Operation against a key holding the wrong kind of value

-- 모든 키 삭제
127.0.0.1:6379> flushall
OK

-- 레디스 캐싱 데이터 무효화
[GET] http://localhost:8070/event/1234

[DELETE] http://localhost:8090/member/userInfo/1234

[GET] http://localhost:8070/event/1234

- Sleath, Papertrail, Zipkin (Logging Tracker)


- Hystrix + Turbine (Circuit Breaker & Dashboard, 여러 대의 WAS 한번에 모니터링)


Server Diagram

TO-DO...


How to run

-- 현재 프로젝트 바로 실행하기
mvn spring-boot:run

-- parent-pom 이 위치한 디렉터리안에 있는 메이븐 pom.xml 파일을 실행
mvn clean package

-- rabbitMQ 플러그인 활성화
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-plugins enable rabbitmq_management

-- rabbitMQ 서비스 중지
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat stop

-- rabbitMQ 서비스 설치
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat install

-- rabbitMQ 서비스 재기동
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start

-- 각각 터미널 창에서 서비스 띄우기
java -jar /target/fares-1.0.jar

-- 서비스 확인
http://localhost:8080/actuator/
http://localhost:8888/licensingservice/default





star--v1 thanks!

msa-springcloud's People

Contributors

assu10 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.