묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka Source Connect 버전 에러
안녕하게요 강의를 보고 있는데 Kafka Connect 이 부분이 기존의 zookeeper 에서 kraft 로 버전이 변경되서 지원을 안 하는데 혹시 다른 방법이 있을까 ? 싶어 질문 올립니다.참고로 블로그 도 여러개 봤는데 계속 에러가 걸려서 질문 올립니다. 정확히 kafka Connect 설치 를 하고 이거를 했을때 C:\Work\confluent-5.5.2>bin\windows\connect-distributed.bat etc\kafka\connect-distributed.properties Classpath is empty. Please build the project first e.g. by running 'gradlew jarAll' C:\Work\confluent-5.5.2> 윈도우이고 이런 에러가 계속 뜨는데 해결이 안됩니다.
-
해결됨장애를 허용하는 견고한 시스템 만들기
[데이터 버저닝을 활용한 멱등성 처리] 멱등성 보장을 위한 version 비교 질문
안녕하세요 준형님! 우선, 강의 정말 잘 들었습니다. 정말 정말 많이 배웠습니다 🙇🏻🙇🏻🙇🏻 다름이 아니라,데이터 버저닝 파트에서 컨슈머의 멱등성을 보장하기 위해주문 서비스가 재고 차감 이벤트에 version을 담고,상품 서비스에서는 JPA가 관리하는 상품 version과 이를 동등성 비교하여중복 소비를 방지하는 방식에 대해 질문드리고 싶습니다. 이 접근 방식에서 많은 인사이트를 얻었지만,상품의 version을 주문 서비스가 반드시 알아야 한다는 점은 조금 와닿지 않았습니다.테스트에서는 version = 0부터 시작하니 문제가 없어 보였으나,여러 이유로 두 version 값이 어긋나면 오히려 소비해야 할 이벤트까지 멱등 처리되어 버릴 수 있다고 생각했습니다.그렇다고 이를 해결하기 위해 주문 서비스가 상품 서비스로부터 version 이벤트를 직접 받아 관리하는 것도 과한 방식처럼 느껴지는데요, 이 부분에 대해 준형님의 의견을 들을 수 있다면 좋을 것 같습니다.시간 편하실 때 부담없이 답변 주시면 감사하겠습니다 🙂
-
해결됨Kafka & Spark 활용한 Realtime Datalake
디스코드 만료
디스코드가 만료되었는데 링크좀 주세요 소개페이지도 안되고 질문페이지도 안됩니다
-
미해결Kafka & Spark 활용한 Realtime Datalake
Zookeeper 설치 오류
8월말 9월초에 비슷한 질문보고 해결하려했는데 3.8.4가 url에서 없어진거 같은데 어떻게 해야하나요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
github 레파지토리 생성 및 연결 관련 질문드립니다!
안녕하세요 강사님 아직 모르는것 투성이인 수강생입니다. 강사님께서는 깃허브 저장소를 생성한 뒤 토큰을 발급받으시던데 구글링을 해보니 토큰을 사용하면 보안과 유연성에 장점이 있다고 나와있었습니다.배포를 하기 위해서는 꼭 토큰을 발급받아야 하는 건지 실습 환경을 구축할 때 토큰을 사용하시는 이유가 궁금합니다!좋은 강의 만들어주셔서 감사드립니다!!
-
미해결Kafka & Spark 활용한 Realtime Datalake
git action실행 안됨
안녕하세요 강사님!ch03.8 git action 실행 강의 수강 중 입니다.강의안에 나온대로 디렉토리 설정 완료하고, master 파일의 버킷명도 제 고유버킷명으로 잘 변경했습니다. 이후 git push를 진행했고 push도 잘 된것을 깃허브에서 확인했는데요.문제는 git actions에 아무것도 올라오지 않는다는 것 입니다. 이에 chat-gpt를 통해 문제 원인을 분석해보니📌 원인master.yml 파일이 레포지토리 루트가 아니라kafka-producer/kafka-producer/.github/workflows/master.yml 처럼 하위 디렉토리 안에 들어 있었기 때문이에요.GitHub Actions는 오직 레포 최상위(repo-root/.github/workflows/) 위치만 인식합니다.하위 폴더 안에 있으면 파일이 있어도 무시돼서, Actions 탭에 아무것도 안 보였던 거예요.이와 같았습니다.chat-gpt의 수정대로 레포 구조를 바꿔 git push를 진행하면 actions에 워크플로우가 뜨고 빌드가 됩니다. 하지만 강의안에 나온 구조와는 상이해보여 질문드립니다. 정확한 문제의 원인과 해결 방안을 알 수 있을까요? 사진은 강의안대로 구성한 제 디렉토리 구조 입니다. chat-gpt가 제시한 해결 방안입니다. 이대로 했을 때 actions 탭에 워크플로우 뜸.
-
미해결Kafka & Spark 활용한 Realtime Datalake
터미널에서 NAT 인스턴스로 직접 로그인 안됨
16강 ansible 설치를 위해 터미널에서 NAT 인스턴스로 직접 로그인하려고 하는데 오류가납니다. PS C:\Users\nayun\downloads> ssh -i public-nat-key.pem ec2-user@3.39.207.192ssh: connect to host 3.39.207.192 port 22: Connection timed out 15강까지 원활히 강의따라 실습 진행한 상태입니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
흐름정리 제가 이해한게 맞나요?
쿠폰 100개를 발급해야하고 이 개수는 100을 넘어가면 안됨-> java synchronized락의 경우 쿠폰 발급을 담당하는 서버가 여러개라면 db에 쿠폰 저장(개수 업데이트) 요청이 동시에 올수 있으므로 race condition 발생-> redis의 경우 여러 서버가 쿠폰 발급 요청을 보내도 싱글 스레드이므로 쿠폰 발급 수를 정확히 100개로 맞출 수 있음. 하지만 예제의 경우 threadpool을 사용하여 각 스레드별로 쿠폰 발급이 가능하면 바로 db에 쿠폰 저장하는 로직이라서 db 부하가 심함-> kafka를 도입하여 스레드들이 쿠폰 발급 메세지만 카프카로 보내고 카프카 컨슈머가 이 메세지를 처리하여 db에 쿠폰을 저장함. 컨슈머 그룹에 속한 컨슈머는 현재 하나이므로 메세지 1개씩을 처리함 따라서 db에 부하가 심하지 않음.
-
해결됨Kafka & Spark 활용한 Realtime Datalake
AWS EC2 생성하기 2분55초 부분
private 서버 이용시 2c, 2d로 사용한다했는데 이제 2d는 없어진 모양입니다. 2c로만 진행해도 무리 없을런지요?
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
avro plugin에 안보이는거 같아요
안녕하세요 개발자님 AvroConverter 관련 문의 드립니다.Failed to start task mysql_cdc_solid_avro_payment_source_02-0 (org.apache.kafka.connect.runtime.Worker:656)java.lang.NoClassDefFoundError: io/confluent/kafka/serializers/AbstractKafkaSchemaSerDeConfig필요한거 설치 한거 같은데 노친 부분이 무엇일까여?114956 -rw-rw-r-- 1 root root 580K Oct 21 2021 avro-1.11.0.jar114955 -rw-rw-r-- 1 root root 17K May 3 2023 common-utils-7.4.0.jar114869 -rwxr-xr-x 1 root root 8.7M Sep 14 17:26 confluentinc-kafka-connect-avro-converter-8.0.0.zip114992 drwxr-xr-x 6 root root 4.0K Sep 15 17:02 confluentinc-kafka-connect-jdbc-10.8.4114947 -rwxr-xr-x 1 root root 25M Sep 14 17:42 confluentinc-kafka-connect-jdbc-10.8.4.zip115040 drwxr-xr-x 2 root root 4.0K Sep 15 17:03 debezium-connector-mysql114948 -rwxr-xr-x 1 root root 16M Sep 14 17:03 debezium-connector-mysql-1.9.7.Final-plugin.tar.gz114954 -rw-rw-r-- 1 root root 36K May 3 2023 kafka-avro-serializer-7.4.0.jar114951 -rw-r--r-- 1 root root 36K May 3 2023 kafka-avro-serializer-7.4.0.jar.1 97327 -rw-r--r-- 1 root root 36K May 3 2023 kafka-avro-serializer-7.4.0.jar.2 98927 -rw-rw-r-- 1 root root 8.8K May 3 2023 kafka-connect-avro-converter-7.4.0.jar 98495 -rw-rw-r-- 1 root root 263K May 3 2023 kafka-schema-registry-client-7.4.0.jar114949 -rw-rw-r-- 1 root root 2.5M Sep 14 17:37 mysql-connector-java-8.0.29.jar
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
소스커넥터는 사용안한 거 맞죠?
이전 강의에서 콘솔로 디비 이벤트를 소스커넥트로 추적하고 싱크커넥트로 추적한 내용을 저장했는데여기서는 소스커넥터로 추적하는 방식은 제외하고 싱크커넥터로 추적하는 방식을 사용해서 오더서비스 디비의 내용을 동기화한 건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
조회수 정보를 어디서 저장할지 고민입니다.
안녕하세요. 강의 너무 잘 듣고 제 프로젝트에 필요한 부분들로 리팩토링 하면서 MSA를 처음 공부하려 했습니다!먼저 제 프로젝트는 거의 똑같은 구조로 게시글이 있습니다. 2가지의 질문이 있습니다. (1) 정보를 취합하기 위해 동기로 API호출을 한다는 것은 장애 전파가 된다고 이해하고 있습니다. 그렇다면 저희 예시에서도 Article-read에서 조회수는 api호출을 통해 받기로 했습니다. 그렇다면 어느정도의 장애 전파는 허용한다고 받아들여집니다. 실제 서비스에서도 여러 정보를 취합해서 줘야하는 경우가 많을텐데 API를 통해 정보를 가져오는것이 절대 안되나요? 아니면 종종 허용하기도 하나요? (2) CQRS의 Query(질의)부분은 데이터 수정이 없어야 한다 이해했습니다. 그런데 데이터를 수정해도 되나요?예를 들어 제가 게시글 상세 조회를 게시글 모듈에서 분리하려고 합니다. 그런데 게시글 상세 조회를 하게되면 조회수가 올라갑니다. 따라서 게시글 상세조회 발생 -> 조회수 증가 이벤트 발생 ->조회수 증가 이런 식으로 구상을 했습니다. 이러한 질의 부분 모듈에서 데이터를 수정하게 만드는 이벤트가 발생해도 괜찮을지 여쭤봅니다!!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의자료 업데이트 문의
깃허브에 올라와있는 강의자료는 언제쯤 업데이트 될까요?
-
미해결장애를 허용하는 견고한 시스템 만들기
데이터 버저닝 질문
안녕하세요.먼저 좋은 강의 감사드립니다. 데이터 버저닝에서 이해가 가지 않는 부분이 있어서 질문 드립니다.낙관적 락을 사용하는걸 봤습니다.결과적으로 발행시와 소비시의 버전이 같아야 하는데, 대규모 시스템에서 장애가 발생하지 않으려면 프로듀서에 아이디 1인 상품 발행하고 나서컨슈머에서 처리하기 전까지 절대 새로운 이벤트를 발행하면 안되는거 아닌가요? 만약 컨슈머에서 처리하기 전에 이벤트를 발행하면 똑같은 버전이 후에 계속 들어와서 이 재고 업데이트는 무시되는게 아닌가 해서 질문드립니다. 맞다면 재고 감소 멱등성은 어떻게 해결하면 좋을지 고견 듣고 싶습니다. 감사합니다.
-
미해결카프카 완벽 가이드 - ksqlDB
복합키 디코딩 오류 질문드립니다.
안녕하세요 강사님. 좋은 강의 감사드립니다. 항상 강의 잘듣고 있습니다 😀다름이 아니라, 복합키 디코딩 관련 질문이 있습니다. 아래와 같이 Group By와 Window Session 함수를 결합한 CTAS절입니다.CREATE OR REPLACE TABLE MASTERWITH (KAFKA_TOPIC = 'master',KEY_FORMAT = 'JSON',VALUE_FORMAT = 'JSON' )AS SELECTTRID AS KEY,AS_VALUE(TRID) AS "trid",WINDOWSTART AS "min_time",WINDOWEND AS "max_time",(WINDOWEND - WINDOWSTART) AS "duration",MINtimestamp) AS "@timestamp",COLLECT_LIST(service) AS services,COLLECT_SET(system) AS systemsFROM ORIGINAL_STREAMWINDOW SESSION (5 SECONDS)GROUP BY TRID EMIT CHANGES; 제가 기대한 값으로는 master라는 토픽의 key에 trid와 windowstart 값으로 결합된 JSON 형식의 값이 저장되는 것이었습니다. ksqldb에서 print 문으로 topic을 조회하면 잘 읽히지만, kafka-consumer에서 topic을 조회하면, 디코딩 부분에서 깨져서 조회가 됩니다.명령어: ./kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic cpm_master --from-beginning --property print.key=true현재는 총 두 개의 쿼리를 추가적으로 사용하여 id 값을 컨슈머가 읽을 수 있도록 정제하고 있습니다. 혹시 이 문제에 대해서 아신다면 답변 주시면 감사하겠습니다!
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
자바 17로 하셨던데 21로 해도 되나요?
자바 17로 하셨던데 21로 해도 되나요?
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
zookeeper가 실행이 안되요
echo $CONFLUENT_HOME이 정확한 위치인것 확인했고, zookeeper.properties와 zookeeper-server-start가 정확한 위치인 것도 확인했습니다.그러나 zookeeper-server-start $CONFLUENT_HOME/etc/kafka/zookeeper.properties를 치면아무것도 나오지 않습니다.에러 문구조차도 없네요
-
해결됨카프카 완벽 가이드 - 코어편
Cooperative Sticky Rebalancing 질문
안녕하세요.Cooperative Sticky Rebalancing할 때컨슈머 3만 reassign rebalance된다고 하셨습니다.궁금한건 컨슈머 1 2에서 topic A, B / Partion 1 2 각각 총 4개는 유지된다고 하셨는데이떄 poll은 계속 동작하고 있는건지 궁금합니다.즉, 3이 죽고 이걸 새로 붙이는 컨슈머 1 2에 있는 모든 토픽과 모든 파티션에 poll이 정지되나요?아니면 같은 토픽 컨슈머만 정지되나요?(여기선 A P1이 있어고 A에 P3가 붙으므로 P1이 P3를 위한 assign rebalance 때문에 컨슈머 1 A 토픽 poll 전체 정지) reassign rebalance: 부분 할당rebalance: 전체 할당으로 이해하면 되는지도 궁금합니다. 감사합니다.
-
해결됨카프카 완벽 가이드 - 코어편
consumer 설정 질문
안녕하세요.Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해 강의 5:03에서 망냑 파티셩니 10개 있으면 최대 10MB 가져올 수 있따이렇게 말씀하셨는데컨슈머를 띄울 때 파티션별로 각 서버마다 따로 뜨게 하시는지한 컨슈머 서버에 여러 파티션을 구독하게 띄우시는지 궁금합니다. 이를 설정하는 기준이 있으신지도 궁금합니다. 제가 카프카를 처음 공부하고 있어서 혹시 질문이 잘못되었다면 알려주시면 감사하겠습니다. 감사합니다.
-
해결됨카프카 완벽 가이드 - 코어편
consumer.poll 질문입니다.
안녕하세요.consumer.poll 관련해서 궁금한 점이 생겨 질문드립니다. 일단 가정으로데이터 있으면 기다리지 않고 값을 반환한다고 하셨는데, 이 부분이 이해가 가지 않습니다. 처음에 직관적으로 poll이 데이터를 가져오는 주기라고 생각했습니다.하지만 설명을 듣고 시간을 지정하는게 의미가 있나? 하는 생각이 들었습니다. 그 후 존재 이유를 poll 시간 이유 -> heart beat를 위한 것인가?로 생각했지만heart beat 는 다른 스레드에서 동작하기 때문에 이도 아니라고 생각했습니다. 제 생각으로는 추론할 수 없어서 poll에 시간을 지정하는 이유가 무엇인지 설명해주시면 감사하겠습니다. 그리고, 추가 질문 2개가 더 있습니다.추가 질문 1.카프카는 왜 지연해서 poll하는 기능을 지원하지 않는지 궁금합니다.카프카 철학 때문인건지 아니면 기술적 제한떄문인건지 궁금합니다. 추가 질문 2.heart beat thread는 만약 여러 토픽과 토픽 내에서도 여러 그룹 아이디로 구독하고 있다 했을 때 어떻게 동작을 하는지 궁금합니다. A, B 토픽 존재하고A 토픽에 1 2 3 그룹 아이디 / B 토픽 ㄱ 그룹 아이디 존재한다 했을 때heart beat thread가 3 + 1인 4개 생성되는게 맞는지 궁금합니다. 항상 좋은 강의 감사합니다.