월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
파티션의 갯수를 줄이지 못하는 이유는 '데이터 손실' 때문인가요?
파티션의 갯수를 늘렸을때는 '파티션에 이미 존재하는 데이터의 손실'이 없습니다. 단순히 파티션의 갯수가 늘어남에따라, 저장되는 레코드의 위치가 달라지게 될것입니다. 파티션의 갯수를 줄였을때는 '새로 들어가는 레코드는 문제가없지만, 삭제되는 파티션에 존재하는 데이터는 손실' 되기 때문에 InvalidPartitionsException 에러가 발생하는게 맞나요 ? 2.5.0 버전 이상부터는 UniformStickyPartitioner이 기본파티셔너로 설정된다는데, 혹시 이 부분도 연관이되어있나요 ??
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
스트림즈에서 테이블의 데이터 수명주기
안녕하세요 카프카 스트림에서 조인을 공부하다가 질문을 남기게 되었습니다. 카프카에는 기본적으로 세그먼트가 있는거로 알고 있습니다. 저는 이것의 수명주기를 1주일로 세팅했다고 가정하겠습니다. 1월 1일address topic에 gildong: busan 이라는 내용이 들어갔습니다. 1월 3일order topic에 gildong: iphone이라는 내용이 들어갔습니다. 1월 15일order topic에 gildong: apple watch라는 내용이 들어갔습니다. 그럼 1월1일 address의 gildong: busan은 1월 15일에는 액티브 세그먼트에는 들어있지 않게 되는거 아닌가요? 이상태에서 order에 gildong: ipad라는 내용이 들어가면 조인이 되는건지 궁금합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
etc/hosts 에서 127.0.0.1를 my-kafka로 바꿔줬는데, server.properties는 안바꿔줘도 되나요?
안녕하세요 테스트 편의를 위해서 127.0.0.1 주소를 localhost가 아니라 my-kafka로 설정을 했었습니다. 주키퍼,카프카를 실행하기 위해 콘솔에서 bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-start.sh config/server.properties 로 켜는데요 zookeeper.properties, server.properties 항목에 존재하는 localhost주소는 안바꿔줘도 에러가 안나는지 궁금합니다!
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
WSL 개발 환경 설정(링크) 위치
안녕햐세요. 윈도우에서 강의 실습을 하고 있습니다. sh 실행이 안되어 관련 내용을 찾다보니 윈도우는 개발환경을 설정해야 하는데 관련 설정방법을 알수가 없어서요. WSL 개발 환경 설정(링크) 라고 되어 있는데, 어디서 확인이 가능할까요?
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Flink vs. Kafka Streams
안녕하세요. 강의를 통해서 Kafka에 대한 개념을 다 잡을 수 있었습니다.Flink와 Kafka Streams 비교를 위하여 질문 드리고자 해요.현재 업무 중 CDC를 이용하여 받아온 데이터를 Kafka에 인입하고 있고, 해당 데이터를 Flink로 가공하여 다시 Kafka Topic에 넣고 있어요.여기서 든 생각이 이럴거면 Kafka Streams를 쓰는 것이 어떨까라는 생각이 들더라구요.Kafka Streams를 Flink 대신 사용하여 얻을 수 있는 이점에 대해서 궁금합니다. 감사합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
커넥터마다 다른 컨버터 사용
안녕하세요 선생님. 커넥트를 실행할 때 설정 파일에 key.converter, value.converter와 같은 값들이 있는데, 이런 값들을 커넥트 단위가 아니라 커넥터 단위로 주려면 어떻게 해야 하나요? 예를 들어, MySQL의 싱크 커넥터, 몽고DB의 소스 커넥터 이런 식으로 각각 다르게 주려면 어떻게 하나요? REST API로 커넥터를 등록할 때 json에 값을 넣어주면 덮어쓰기 되는 식으로 혹시 동작하나요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
시리얼라이저 vs 컨버터
안녕하세요. 프로듀서/컨슈머 애플리케이션에 있는 시리얼라이저/디시리얼라이저와 커넥터에 있는 컨버터가 같은 건가요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
레코드-키값에 따른 파티셔닝
레코드 강의 듣다가 궁금한 점이 있어 질문드립니다~ 복제 강의에서프로듀서나 컨슈머는 오직 리더 파티션과 통신하는것으로 이해했습니다. 하지만 레코드-키 값으로 파티셔닝이 처리된다면리더 파티션이 아닌 팔로워 파티션과도 통신이 이루어지는건가요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
리밸런스 리스너 활용이 궁금합니다.
강사님 안녕하세요. 스프링 카프카로 공부를 하는 중, 궁금증이 생겨서 문의를 드립니다. @KafkaListner 를 사용해서 컨슈머 리스너를 구현하였습니다. 리밸런스가 일어날 때, 메시지 중복 처리 발생을 막기 위한 예제를 직접 만들어 보고있는데요. 500개 레코드를 Poll 해온 뒤, 300번째 정도 레코드를 읽었을 때 Rolling Update 가 진행되도록 상황을 만들어서 리밸런싱이 발생하도록 하였습니다. 스프링 카프카에서 제공되는 ConsumerAwareRebalanceListener 를 이용하면 리밸런스가 일어날 때 onPartitionRevokedBeforeCommit 와 AfterCommit 함수를 이용해서 300번째까지 처리한 오프셋으로 수동 커밋을 해줄 수 있을 것 같던데요. 궁금한 것은 현재 300번째까지 처리했다라는 오프셋 값을 어떻게 얻을 수 있는지 모르겠습니다. onPartitionRevokedBeforeCommit 의 인자로 넘어오는 Consumer 객체나 TopicPartition 객체에는 500개 레코드를 Poll 해온 시점의 offset 값은 있지만 현재 처리한 시점의 offset 값은 없는 것 같더라고요. 강사님 혹시 답을 알고 계실까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
블로그 정리시 강의자료 사용 여부
안녕하세요! 먼저 너무 좋은 카프카 강의 개설해주셔서 감사합니다. 열심히 강의자료에 필기도 하면서 열심히 원영님 강의 들으며 카프카에 대해 알아가고 있습니다. 혹시 블로그에 정리시에 강의자료 중 그림 같은 부분은 혹시 업로드하여 사용해도 괜찮을지 문의드립니다!
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
min.insync.replicas=2
min.insync.replicas=2의 경우 복제가 완료된 개수를 말하는 것이라고 이해했습니다. 다만 강의의 그림에서 브로커#0(리더 파티션) 1개와 브로커#1(팔로워 파티션) 1개를 합쳐 2개가 됐다는 것으로 이해하면 될까요? 브로커#0(리더 파티션) + 브로커#1(팔로워 파티션) = 2 replicas 이 경우 1개가 복제 완료되었다고 말할 수 도 있을 것 같아서 헷갈리네요. 복사본의 갯수로 이해하는 것보단 실제 데이터 세트의 개수로 이해하는 것이 더 맞을까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
오프셋 리셋 문의드려요
강사님 안녕하세요. 카프카 CLI 에서 컨슈머그룹의 현재 오프셋을 변경할 수 있는 명령어 수업을 잘 보았습니다. 한가지 궁금한 점이 생겼는데요.. --to-offset 을 사용하게 되면 특정 오프셋으로 리셋이 된다고 적혀있는데요. 특정 오프셋으로 리셋을 하게 되면 리셋된 시점부터 현재 오프셋까지 모든 레코드가 다시 수신이 될텐데요. 혹시 특정 오프셋의 레코드 몇개만 수신을 한 이후 다시 현재 시점 오프셋으로 돌리고 싶을 때 적용할 수 있는 방법이 있을까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
트랜잭션 프로듀서와 트랜잭션 컨슈머 질문
트랜잭션 컨슈머를 만들고, 일반적인 트랜잭션을 사용하지 않는 프로듀서로 데이터를 생성하였을 때, 트랜잭션 컨슈머가 이를 읽는것을 확인하였습니다. 명시적으로 트랜잭션을 커밋하지 않는 프로듀서도 레코드를 커밋한다고 생각하면 되는걸까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
리밸런스 리스너 문의드립니다.
강사님, 두번째 질문을 연이어 남깁니다. 카프카 컨슈머에서 리밸런스가 자주 발생하면 안좋다고 살짝 언급하셨는데요. 현재 운영중인 스프링부트 애플리케이션의 경우, 애플리케이션 내에서 @KafkaListener 를 사용하여, 컨슈머 컨테이너가 포함된 형태로 사용중입니다. 즉, 메인 애플리케이션이 컨슈머를 안고있는 셈이죠. 강의를 듣기 전까지는 생각하지 못했는데 강의를 듣다보니 컨슈머는 변경이 없는데 메인 애플리케이션의 소스배포 등의 문제로 스프링부트 애플리케이션이 재기동될 때마다 컨슈머도 리밸런스가 발생하게 될텐데, 이렇게 운영하는 것은 그리 좋은 형태가 아닐런지요. 즉, 컨슈머만 동작하는 스프링부트 어플리케이션을 별도로 나누는 것이 권장하는 방식일지 궁금합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
컨슈머 커밋 실패 문의드립니다..
강사님 안녕하세요. 강의 잘 듣고 있습니다. 컨슈머의 동기/비동기 커밋 과정을 듣다가 한가지 질문사항이 생겼는데요. 비동기 커밋의 경우, 별도 콜백을 통해 커밋이 실패한 경우를 캐치해낼 수 있었는데요. 만약 컨슈머의 poll 메소드를 통해 가져온 레코드의 오프셋이 1부터 100까지 있었다고 할 때, 컨슈머 애플리케이션에서는 100번 루프를 돌면서 레코드를 처리할텐데 만약 이런 경우, 레코드별로 커밋이 이뤄진다면 마지막에 커밋 실패가 나지않고, 중간에 커밋 실패가 발생하는 것은 문제로 보기는 어려운 상황일까요? 예를 들어 99번 오프셋에서 커밋 실패해도 100번 오프셋에서 커밋 성공하면 99번의 커밋 실패는 별 의미가 없을 거 같아서요.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
unclean.leader.election.enable=false에 대해서
안녕하세요. 강의 중 궁금한 점이 있어 질문 드립니다. 리더 파티션 브로커에 장애가 발생했을 때, ISR 상태의 팔로워 파티션을 가지는 브로커가 없는 상황에서 unclean.leader.election.enable=false로 설정할 경우, 1. 리더 파티션 브로커의 복구를 기다리는 동안 중단된다라고 하셨는데, 여기서 중단된다는 말이 해당 토픽으로 프로듀서의 데이터 쓰기와 컨슈머의 데이터 읽기가 모두 불가능해진다는 뜻인가요? 2. 만약 프로듀서가 데이터를 쓰는게 불가능해진다면, 예를 들어 상품 구매 이벤트 발생으로 거래 내역 데이터가 계속 실시간으로 발생하면 이런 데이터는 그동안 어디에 두어야 하나요? (토픽이 '나 복구될 때 까지 데이터 안받을래' 이렇게 선언하더라도, 소스에서는 계속 새로운 데이터가 생성되면 그 데이터를 유실하지 않기 위해 어떻게 할지가 궁금합니다)
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
소스DB에서 데이터 삭제시 카프카에서 일어나는 일
안녕하세요. 세그먼트 파일 삭제와 관련해서 질문 드립니다. 1. 만약 MySQL과 같은 DB를 프로듀서에서 사용하고, 카프카 브로커와 Debezium connector같은 걸로 연결되어 있다고 할 때, MySQL 소스 DB에서 데이터 삭제가 발생하면 브로커는 이를 어떻게 처리하나요? 브로커에서도 MySQL DB와 데이터 상태를 같게 하기 위해 뭔가 레코드 단위의 삭제가 필요할 것 같은데 어떻게 될지 궁금합니다. 2. 또 한가지 궁금한 점은, 혹시 브로커에 저장되는 로그 파일들은 append-only 방식으로 저장되나요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
강의자료 PDF랑 순서가 다른것같습니다
강의자료 PDF 에는 유지보수하기 좋은 토픽이름 정하기 카프카 브로커와 클라이언트가 통신하는 방법 레코드 상세히 살펴보기 순서대로 되어있는데, 강의순서랑 다른것 같아서 문의드립니다!
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 영속성 관련 질문
안녕하세요. 영속성 관련해 질문 드립니다. - 데이터를 파일 시스템에 저장함으로써 영속성을 얻게 되고 - 한 번 읽은 데이터를 페이지 캐시 메모리 영역에 놔둠으로써 처리량 또한 높게 유지할 수 있다 저는 이렇게 이해했는데, 이렇게 했을 때 컨슈머 쪽에서 Read는 빠르겠지만 프로듀서 쪽에서 Write하는 속도는 여전히 느릴 것처럼 느껴지는데 이 문제는 배치로 처리함으로써 해결하는 건가요? 혹시 컨슈머 속도 대비 프로듀서의 속도가 느려서 컨슈머 쪽에서 컴퓨팅 리소스 낭비가 생기는 경우는 없나요? 보통 프로듀서의 데이터가 브로커에 도착하는 속도와 컨슈머가 브로커의 데이터를 읽어가는 속도 중 어느 쪽이 더 빠른가요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
목차에서 카프카 기본 개념 설명 > 카프카 브로커와 클러스터 영상이 이상해요 ㅠㅠ
카프카 기본 개념 설명 > '카프카 브로커와 클러스터 영상'이 '브로커 로그와 세그먼트' 부분이랑 완전히 동일합니다 ㅠㅠ