Skip to content

[2024] 인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) study

Notifications You must be signed in to change notification settings

devwuu/spring-cloud-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spring-cloud-study

인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) study

서비스 실행 순서

  • 유레카 서버
  • config service 서버
  • gateway service 서버
  • 유레카 클라이언트 서버

Spring Atuator란

  • 애플리케이션의 상태를 모니터링, Metric 수집, 환경 설정 정보 업데이트 등을 위한 Http Endpoint를 제공해주는 모듈이다.
  • 참고 문서

Spring cloud bus란

  • 환경 설정 정보가 변경되었을 때 각각의 애플리케이션에 대해서 refresh 하지 않고 bus를 통해 환경 설정 정보를 일괄 업데이트 할 수 있도록 해줌
  • cloud bus는 설정 정보 애플리케이션을 퍼블리셔로 설정하고 그 외 마이크로 서비스들을 구독자로 설정하여서
    설정 정보 애플리케이션이 설정 정보가 업데이트 되었다고 메세지를 퍼블리싱하면 그것을 구독하는 마이크로 서비스가 환경 설저 정보를 업데이트 할 수 있도록 한다.
  • 이번 프로젝트에서는 rabbitMQ를 사용했다 (다른 MQ를 사용할 수도 있다.)
  • 참고 문서

Spring cloud client 설정 변경

kafka 예제

  • 공식 문서

  • 참고 문서

  • connector 등록 예제

    {
    "name": "jdbc-source-connector",
    "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "tasks.max": "1",
        "connection.url": "jdbc:mariadb://user-service-db:3306/user_sys",
        "connection.user": "root",
        "connection.password": "qwerty",
        "mode": "incrementing",
        "incrementing.column.name": "id",
        "topic.prefix": "user_sys_", // topic 이름은 prefix+whitelist == user_sys_member
        "poll.interval.ms": "10",
        "table.whitelist" : "member"
      }
    }
    {
      "name": "jdbc-sink-connector",
      "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
        "tasks.max": "1",
        "topics": "user_sys_member", // 연결할 topic, source connector에서 생성한 topic 이름과 동일해야 함
        "connection.url": "jdbc:mariadb://user-service-db:3306/user_sys",
        "connection.user": "root",
        "connection.password": "qwerty",
        "auto.create": "true", // table을 자동 생성
        "auto.evolve": "true",
        "key.converter": "org.apache.kafka.connect.json.JsonConverter",
        "value.converter": "org.apache.kafka.connect.json.JsonConverter",
        "table.name.format": "user_sync", // table 이름, default는 topics
        "insert.mode": "insert",
        "pk.mode": "none"
      }
    }
  • kafka 명령어 예제

    $ kafka-topics --bootstrap-server localhost:9092 --list
    $ kafka-topics --bootstrap-server localhost:9092 --create --topic hello-world-events --partitions 1
    $ kafka-console-producer --broker-list localhost:9092 --topic hello-world-events
    $ kafka-console-consumer --bootstrap-server  localhost:9092 --topic hello-world-events --from-beginning
    [appuser@broker ~]$ kafka-console-consumer --bootstrap-server  localhost:9092 --topic quickstart_member --from-beginning
    {"schema":{"type":"struct","fields":[{"type":"int64","optional":false,"field":"id"},{"type":"string","optional":false,"field":"email"},{"type":"string","optional":false,"field":"encrypted_pwd"},{"type":"string","optional":false,"field":"user_id"}],"optional":false,"name":"member"},"payload":{"id":1,"email":"user1@test.com","encrypted_pwd":"","user_id":"6b2a13f2-0970-4ea7-967a-475c6265e52a"}}
    {"schema":{"type":"struct","fields":[{"type":"int64","optional":false,"field":"id"},{"type":"string","optional":false,"field":"email"},{"type":"string","optional":false,"field":"encrypted_pwd"},{"type":"string","optional":false,"field":"user_id"}],"optional":false,"name":"member"},"payload":{"id":2,"email":"test@gmai.com","encrypted_pwd":"","user_id":"new_member"}}

Tracing

Monitoring

docker 관련 명령어

  • 이미지 빌드
    docker build -t devwuu/config-service:1.0
  • 프로파일 설정
    docker compose --profile docker up -d

About

[2024] 인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) study

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published