소개
#Kafka #Streaming #DataEngineer
- 카카오 데이터 엔지니어(전: SK플래닛)
- 저서
- 아파치 카프카 애플리케이션 프로그래밍 with 자바
- 예스24: https://bit.ly/3uFmhpF
- 교보문고: https://bit.ly/39Pk0Ak
- 알라딘: https://bit.ly/3a3Xa7T
- 실시간 데이터 파이프라인 아키텍처
- 예스24: https://bit.ly/3JjY96j
- 교보문고: http://bit.ly/3WEcgGJ
- 알라딘: https://bit.ly/3Hcbwmz
- 아파치 카프카 애플리케이션 프로그래밍 with 자바
강의
전체2로드맵
전체1수강평
게시글
질문&답변
2024.04.11
카프카 3버전
안녕하세요~ 제가 아는 선에서는 아직도 카프카 3을 상용환경에서 적극적으로 사용하고 있는 기업은 많지 않은 것으로 보입니다. 왜냐면 기존에 2점대 카프카 브로커를 사용하다가 3으로 넘어가기 위한 마이그레이션 작업이 쉽지 않기 때문입니다. 다만, 최근에 새로 카프카 클러스터를 구축하는 기업에서는 3버전을 도입하고 있는 것으로 알고 있습니다.
- 0
- 1
- 49
질문&답변
2024.04.11
오프셋 커밋 과정에서 장애 발생 시 카프카에서는 어떤 처리가 일어나는지 궁금합니다
안녕하세요. 자동 커밋 옵션이 실행되는 경우 레코드 처리 중간에 장애가 발생하면 마지막으로 커밋된 오프셋부터 마지막으로 처리했던 데이터까지 중복처리가 발생하게 됩니다. 이에 따라 실무환경에서도 컨슈머는 언제든 중복이 될 수 있는 가능성에 대해 염려하고 있으며, 가장 정확한 방법은 유니크 키를 가진 처리방식을 사용함으로써 데이터가 중복으로 들어오더라도 단 한번만 처리하는 idempotence 처리를 만족할 수 있게 됩니다. 말씀하신 바와 같이 레디스를 사용하는 방식도 있고 또는 rdb의 unique key 등을 활용하는 방식도 있습니다. 이외에도 upsert, WAL 방식을 예로 들 수 있겠는데요. 관련 내용을 담은 유튜브 링크를 하나 공유해드리겠습니다! https://www.youtube.com/watch?v=7_VdIFH6M6Q
- 0
- 3
- 89
질문&답변
2024.04.11
파티션 복제의 성능이슈는 없나요?
안녕하세요. 리더 파티션에 데이터가 쌓이고 나면 나머지 팔로워 파티션이 리더의 오프셋을 보고 데이터를 가져갑니다. 이런 과정 상에서 만약 카프카 프로듀서의 acks를 all로 주게되면 나머지 팔로워 파티션에 데이터가 완전히 저장되기 까지 기다립니다. 그렇기 때문에 acks=all로 프로듀서를 운영하게 되면 복제간 시간이 걸리는점 때문에 성능상 불리할 수도 있는점 참고부탁드립니다.
- 0
- 2
- 65
질문&답변
2024.04.11
온 프라미스의 서버랙, 클라우드의 리전 장애에 대비할 수 있는 카프카 설정이 무엇인가요??
카프카 브로커 실행시 broker.rack을 사용하면 복제본이 하나의 리전에 포함되지 않도록 하는 설정이 있습니다. broker.rack 옵션 보러 가기 : https://kafka.apache.org/documentation/#brokerconfigs_broker.rack
- 0
- 2
- 48
질문&답변
2024.04.11
윈도우 연산시 주의해야할 사항 + 기타 질문
안녕하세요. 문의주신 내용에 답변드립니다 스트림 간격시 커밋 간격을 윈도우간격으로 맞추는 의도는 좋습니다. 그러나 이런 셋팅으로는 정확한 이벤트의 시간에 맞춘 데이터 처리가 불가능합니다. 예를 들어 15초 간격의 텀블링 윈도우가 존재하고, 00시00시15초에 발생한 이벤트가 있다고 가정해볼게요. 이 때, 해당 이벤트는 00초~15초 윈도우 프로세싱 시간내에 해당 스트림즈 애플리케이션에 도착할 수 있을까요? 현실적으로 불가능합니다. 해당 시간에 발생한 이벤트는 아무리 빨리 네트워크를 타고 들어오더라도 15~30초 윈도우 프로세싱에 걸치게 됩니다. 이렇듯이 단순히 스트리밍 결과를 커밋 타이밍에 맞추도록 윈도우 간격과 커밋 타이밍을 맞추는 것은 의미가 없습니다. 또한 지연도 발생할 수 있구요. 그렇기 때문에 말씀하신 내용을 원하신다면 차라리 suppress() 메서드를 활용하시는 것이 좋겠습니다. suppress() 메서드 설명 : https://developer.confluent.io/patterns/stream-processing/suppressed-event-aggregator/ 2,3,4번에 대한 내용은 책에 포함된 내용이 아니고, 지금 들으시는 강의에도 포함된 내용이 아닌점 참고부탁드립니다. 감사합니다.
- 0
- 2
- 69