월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
CommitAsync
안녕하세요강의를 듣다보니CommitAsync는 commitSync에 비해서 데이터 처리가 일시적으로 중단되지 않아서 더 좋아보이는데CommitAsync의 단점은 없을까요?운영환경에서도 보통 CommitAsync를 사용하시나요?
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Producer key, 커스텀 파티셔너
kafka Producer를 사용할 때 Key 값을 사용하거나 커스텀 파티셔너를 사용하면 특정 파티션으로만 데이터를 넣을 수 있는데 특정 파티션으로 데이터를 넣는 가장 큰 이유가데이터의 순서를 보장하기 위해서 인가요??아니면 다른 이유도 있을까요?? 강의를 들어보면서 순서가 중요하지 않다면Producer key나 커스텀 파티셔너를 안 사용해도 될 것 같아서 질문드립니다.
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
컨슈머 추가
안녕하세요LAG가 있을 때컨슈머를 추가하는 것도 해결 방법 중 하나라고 하셨는데정확히 어떻게 추가를 하는건지 알 수 있을까요? 예를 들어Kafka 토픽 : test-topic기존 컨슈머 그룹 이름 : test-consumer-group기존 컨슈머 : 127.0.0.1 서버에서 a.jar 파일을 사용하는 컨슈머이고 test-consumer-group에 속해 있음 여기서 컨슈머를 추가하면127.0.0.2 신규 서버를 하나 만들고 기존과 똑같이 a.jar 파일을 사용하면서 기존 test-consumer-group에 추가하고 test-topic을 컨슘하게 만들기만 하면 되는건가요??
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
데이터 다시 읽기
안녕하세요세그먼트가 00000.log, 00010.log, 00020.log가 있다고 하고 Consumer가 30번 offset까지 읽었을 때offset 10 ~ 19번까지를 다시 읽고 싶으면00010.log 파일을 사용하면 되는걸까요??
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 브로커 cpu 사용률 관련입니다.
안녕하세요, 강의 잘 봤습니다.카프카의 실제 운영관점의 질문을 드리고자 합니다. 상황에 따라 다르겠지만, 카프카 브로커의 권장 cpu 스펙이 있을까요? 카프카 브로커의 cpu사용률은 무엇에 크게 좌우될지 궁금합니다.예를들면, 토픽 및 파티션의 수에 비례한다든지, 메시지 사이즈에 비례한다든지 질문드리는 이유는 카프카를 신규 구성 예정인데요, 내부적으로 테스트 해봤을때 업무량에 크게 좌우되지는 않는 것 같았는데, 파티션 수가 많은 경우에 튀어 보이긴 합니다. 참고로 압축기능은 사용하지 않습니다.
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
custom partitioner 을 이용한 메세지역전 현상 해결방안
원영님 안녕하세요. 강의 항상 잘듣고있습니다.다름아니라, CDC커넥터에서 발생된 메시지 처리시 '메세지 역전현상'을 해결하기 위해 테이블의 PK값을 기준으로 특정 파티션으로 데이터가 보내질수 있도록 cusomPartitioner을 구현하고 commitSync로 메시지 순서를 보장하려고 하는데요.ex) 1번 pk -> 1번 파티션 -> 1번 consumer.2번 pk -> 2번 파티션 -> 2번 consumer.이럴 경우에 특정파티션으로 데이터가 쏠리면 스케일아웃을 한 의미가 없어지더라구요. 실시간성이 요구되는 비지니스라 일정 이상의 TPS가 나와야되거든요. 문제 접근방식이 잘못됬는지... 메시지역전문제와 TPS 성능을 위해선 컨슈머에서 다른 도구들을 이용해서 해결해야 하는건지... 확신이 안서더라구요.. 혹시 비슷한 경험을 통해서 위와같은 문제를 해결해보셨다면 조언부탁드리겠습니다. 감사합니다!
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 클러스터 ID 충돌 이슈가 있습니다.
처음에 강의를 보면서 주키퍼와 브로커를 띄우면 문제없이 실행되는데, 다음날 다시 실행하려고 하면 kafka.common.InconsistentClusterIdException: The Cluster ID 8Q9ArKFaQjG9sOAyuBI3DQ doesn't match stored clusterId Some(golWFU1QQCWt7dC6LX9zhw) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.위와 같은 메시지가 뜨면서 브로커가 실행을 못합니다. data 디렉토리에 생성된 meta.properties를 삭제하고 다시 실행하면 문제없이 동작하는데, 번거롭기도 하고, 실제로도 이렇게 사용하는게 맞는건가 하는 의문도 드네요. 해당 부분에 대해 조언 좀 부탁드리겠습니다. :)
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Kafka port 9092 already in use 문제
안녕하세요 zookeeper 실행 완료하고이제 마지막으로 Kafka 를 실행하면 완료 되는데요. (이미지 안보이시면 ㅠ,ㅠhttps://cdn.inflearn.com/public/files/posts/769307aa-6074-40cd-9d9d-94ffb82f7508/cccccc.PNG) 기본 default port 가 9092 설정된 상태에서 실행하면 이미 사용된 포트라고 에러가 발생 됩니다.혹시나 해서 9093 으로 설정해도 문제가 발생되네요... 참고로 꼭!! 9092 포트로 설정하고 프로세스 올리고 싶습니다 ㅠ,.ㅠ 그래서 혹시 9092 포트가 사용되고 있나 netstat -ano | findstr :9093 명령어 통해 확인을 해도 사용하는 포트가 없다고 나오는데요... 무슨 문제일까요?... 참고로 OS는 윈도우 입니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 컨슈머 그룹에 대하여
카프카 컨슈머 그룹을 공부하면서 어플리케이션을 만들다가 질문이 있어 글을 썼습니다.컨슈머 그룹 안에 여러개의 컨슈머들이 있고 그 컨슈머들이 토픽 안에 있는 파티션어 각각 붙어서 저장되어 있는 메세지를 받아오고 그 각각의 컨슈머들의 로직은 같다고 하셨는데 그러면 컨슈머 어플리케이션은 그 갯수만큼 서버에 올려서 만들어줘야 하나요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
브로커에 연결이 안됩니다
원영님 강의를 보고 현재 스프링 프레임워크 기반의 회사 솔루션에 카프카 도입을 구현하고 있습니다. 터미널 상에서 컨슈머와 프로듀서는 잘 주고 받는데 IDE로 넘어와 적용하면 에러가 발생합니다브로커의 로그를 확인해보니 Processing automatic preferred replica leader election (kafka.controller.KafkaController)Checking need to trigger auto leader balancing (kafka.controller.KafkaController)Topics not in preferred replica for broker 0 Map() (kafka.controller.KafkaController)이런 로그들이 찍히는데 구글링해도 이렇다 할 해결방법을 못찾고 있습니다 컨슈머 프로퍼티에 부트스트랩 서버도 localhost:9092 프로듀서 프로퍼티의 부트스트랩 서버도 동일하며 서버 프로퍼티의 애드버타이즈드 리스너도 localhost:9092로 설정해뒀습니다혹시 제가 빠뜨린 부분이 있을까요? 도움 주시면 감사하겠습니다..
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
이해한게 맞는지 문의 드리고 싶습니다.
안녕하세요. 강의 끝까지 잘 들었습니다.이해한 바가 맞는지 궁금해서 문의 드립니다.카프카 커넥트데이터 파이프라인을 반복적이라고 하는 것이 1분에 한번씩 브로커로 Record를 전송하고 이를 Consumer에서 가져와서 사용하는 경우에 카프카 커넥터가 적합하다고 하신 것으로 이해하면 될까요? 반면 1회 데이터를 Producer가 전송하고 Consumer가 처리하는 경우에는 일반적인 Producer/Consumer가 적합하다는 것으로 이해했는데 맞는지 궁금합니다.Producer/Consumer or Source Connector/Sync ConnectorProducer(Source Connector)쪽이 3개의 Server, Consumer쪽이 3개의 서버로 구성된다고 할때 실제 각 Producer/Consumer는 개별 서버에서 Application을 실행시켜줘야 하는 것으로 이해가 되는데 이게 맞을까요?좋은 강의 제공해주셔서 감사합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
CCDAK 문의
이왕 강의를 들은 김에 자격증도 한번 생각해보려고 하는데요.강의 내용만 충실하게 들으면 자격증 시험에 도전해볼만할까요?아니면 별도로 더 준비를 해야 하는지 궁금합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
서버에 카프카 컨슈머를 계속올려놓을경우 종료를 해야하나요?
안녕하세요! 제가 카프카 컨슈머 애플리케이션을 개발해서aws 서버에 올려놓고 계속 컨슈밍을 할 예정입니다.강의에서 컨슈머의 안전한 종료 파트를 듣고 질문이 생겨 글을 남깁니다.이렇게 서버에 계속 올려놓고 컨슈밍을 받아야할때 컨슈머의 종료가 필요한가요?만약 필요하다면 종료된 컨슈머는 어떻게 재실행이 되는 건지 여쭤볼 수 있을까요? 일단 저는 스프링기반 카프카 컨슈머를 개발하였고 Runnable 인터페이스로 run() 메서드로 서버가 실행되면 바로 컨슈머가 실행되게 개발해놓은 상태입니다. 저의 코드입니다.@PostConstruct public void startConsuming() { Thread consumerThread = new Thread(new Consumer()); consumerThread.start(); } private class Consumer implements Runnable { private final Logger logger = LoggerFactory.getLogger(Consumer.class); private final static String TOPIC_NAME = ""; private final static String BOOTSTRAP_SERVERS = ""; private final static String GROUP_ID = ""; public void run() { try { Properties configs = new Properties(); configs.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS); configs.put(ConsumerConfig.GROUP_ID_CONFIG, GROUP_ID); configs.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); configs.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); // 구독 중인 주제 파티션에서 사용 가능한 가장 빠른 오프셋부터 읽기 configs.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); configs.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "30000"); configs.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, "5000"); configs.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, "300000"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(configs); consumer.subscribe(Arrays.asList(TOPIC_NAME)); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1)); for (ConsumerRecord<String, String> record : records) { logger.info("record: {}", record); // 받은 메세지 String value = record.value(); // commit the offset consumer.commitSync(Collections.singletonMap( new TopicPartition(record.topic(), record.partition()), new OffsetAndMetadata(record.offset() + 1))); } } } catch (Exception e) { logger.error("Error occurred while consuming messages", e); } } }
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 이해
제가 카프카에 대한 구조와 사용법을 이해하지 못해서 학습 재미가 떨어지는데요.카프카를 이렇게 써야 하는지를 맞는지가 궁금합니다. 많은 영상을 봤지만서도 사용법이 잘 이해가 안되서 질문드립니다
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
kafka streams 데이터 보관 주기 질문
안녕하세요카프카 스트림즈 학습중에 궁금한 점이 있어 질문드립니다.예를 들어 말씀드리겠습니다kstream 으로 변경되는 상품의 가격 정보를 받아온다고 가정하고, ktable 로 해당 상품의 마스터성 정보를 받는다고 해보겠습니다.카프카 스트림즈를 써도 결국엔 카프카 브로커에 로그로 쌓이는 것이고, 로그 압축이나 삭제 정책에 따라 A라는 상품의 정보가 있다가 사라질 수 있을 것 같은데요4월 1일에는 A상품의 정보(상품이름, 판매처 등)가 로그에 있어서 데이터를 읽어올수 있었지만 4월4일에는 기간이 지나 삭제되었다거나 하는 경우가 있을 것 같아서요카프카 스트림즈를 띄우는 서버의 메모리나 로컬 디스크에 모든 내용을 가지고 있는 건지가 궁금하구요만약 해당 서버에 데이터가 있다면 서버가 다운되거나 했을때 리밸런싱 혹은 서버가 재시작 되었을때 사라진 로컬데이터의 복구 기능이 구현되어있는 건지 궁금합니다또한 로컬에 저장된다면 그동안 스트림을 거쳐간 모든 데이터를 가지고 있는건지.. 데이터가 대용량이 된다면 로컬 머신의 저장공간을 고려해야하는지 궁금합니다 그리고.. 만약 카프카 스트림엔 데이터가 없고 rdb등의 저장소에 데이터가 있다면 이걸 가져와서 쓸수 있는지도 궁금합니다
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
안녕하세요. 미러메이커 질문이 있습니다.
미러메이커2를 사용할 때 각 카프카의 버전이 달라도 사용이 가능한가요? 예를 들어서 하나의 클러스터는 2.2버전이고 하나의 클러스터는 3.1 버전이라고 했을 때2.2버전은 미러메이커2를 지원하지 않는데 3.1 버전의 클러스터에서 미러메이커2를 실행하면 2.2버전에서 3.1버전으로 데이터가 가져와지나요...?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
'멀티스레드 컨슈머 애플리케이션' 편을 보고 질문드립니다~
안녕하세요 데브원영님. 수준높은 강의 항상 잘보고있습니다. 다름아니라, '멀티스레드 컨슈머 애플리케이션' 강의를 듣고 관련 내용을 찾아보던 와중에 '메세지 역전현상' 이라는 이슈를 찾았습니다.멀티 스레드 혹은 멀티 프로세스로 동작할경우, 파티션이 하나더라도 스레드의 작업종료 시간이 전부 다르기때문에 순서보장이 필요한 시스템에 치명적이라는 내용이였습니다. 이 문제를 해결하기 위해 메세지에 key와 partioner 인터페이스를 구현하더라도 파티션 수와 스레드 수가 1:1 매칭이 아닐 경우 순서가 틀어지거나, Key 설계를 잘못할 경우 특정파티션으로 데이터가 몰리게되어 scale-out을 한 의미가 퇴색 될 것 같아서요.'순서보장 + (다중 파티션 + 다중 컨슈머 설계로 성능확보)' 가 필요한 시스템에서 '메세지 역전현상' 문제를 해결 할수 있는 방법이 있을까요?.. 발행된 메세지가 DB에 적재되있을 경우, 최종 일관성(순서보장문제)을 DB에 조회하여 해결할 수 있을 것 같은데요!.. 저장소에 적재되지 않는 메세지일 경우 해당문제를 어떻게 풀어야될지 잘 모르겠네요 ... 관련하여 답변 부탁드리겠습니다!.. 확인 감사합니다.~
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 배치 데이터 처리
- 카프카를 공부하시면서 생긴 질문들을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다! 좋은 강의 올려주셔서 감사합니다. 빅데이터 아키텍쳐의 종류와 카프카의 미래 강의 9:00 전후의 카프카가 배치 데이터를 처리하기 위해 제공하는 기능에 대해서 질문이 있습니다.슬라이드의 설명으로 이해하기에는 기존의 배치 데이터는 각 시점의 스냅샷 데이터이지만, 카프카는 변환 기록 로그를 남김으로써 기존의 배치 데이터 스냅샷을 매번 만들 필요 없이 로그로 특정 시점의 데이터를 만들 수 있다 라고 이해했습니다.강의 내용으로는 카프카에서 배치 데이터를 가져오기 위해 기존의 배치 데이터 컨셉인 배치 데이터 스냅샷과, 변환 기록 로그 이렇게 둘 다의 정보를 사용해서 배치 데이터를 표현한다 라고 이해 했습니다. 1, 2번중 어떤게 더 적절하게 이해했는지 궁금합니다.감사합니다!
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 ISR 개념 부분 질문
카프카 ISR 에서 leader partition 이 장애가 있어서 follow partition 이 승계를 받고 그 후 leader partition 이였던 브로커가 정상 작동 된다면 이 partition 은 follow partition 으로 역할을 하는건가요? 그리고 장애가 났을 때 복제되지 못 했던 데이터들은 어떤식으로 복구 할 수 있는지 알고싶습니다.
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 커넥터를 두가지 사용하는 이유
안녕하세요 카프카 커넥터를 적용해보려고, 공부중인데, 많은 예시에서 JDBC Connector와 Kafka MySQL Conenctor 두가지를 사용하더라구요 JDBC Connector는 데이터를 관계형 DB와 잘 연동되게 가져오고 넣기위한 소스들을 제공하는 커넥터이고, Kafka MySQL Connector는 카프카와 MySQL DB를 연결하기위한 커넥터이다.라고 제가 이해하고 있는데, 맞는건가요?