얼렁뚱땅 스며드는 Data Science

2024/07 4

[Kafka] Apache Kafka 초보 4 : 컨슈머 그룹 & 컨슈머 오프셋

이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다. 컨슈머 그룹컨슈머는 그룹형태로 데이터를 읽어옴그룹 안의 컨슈머들은 각각 상호배타적으로 파티션을 읽어옴만약 파티션의 개수보다 컨슈머가 많은면, 여유분은 stand by 컨슈머 오프셋커밋된 offset은 '__consumer_offset'이라는 카프카 토픽으로 저장데이터가 충돌나거나 실패한 곳 (offset)부터 읽어올 수 있음java consumer는 자동으로 offset commit수동 커밋at least once (주로 사용됨)메시지가 처리된 후 오프셋이 커밋됨문제가 생겼을때 다시 읽을 수 있음(멱등성 보장)메시지 중복이 발생될 수 있음at most once메세지가 도착하자 마자 바로 오프셋 커밋문제가 생겼을때 일..

카테고리 없음 2024.07.03

[Kafka] Apache Kafka 초보 3 : 컨슈머 & 역직렬화

이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다. 컨슈머topic에서 부터 데이터를 읽어옴 (이름으로 구별됨) : pull modelkafka 브로커에 데이터 요청, 응답받음컨슈머는 여러개의 파티션을 읽어올 수 있음컨슈머는 어떤 브로커(kafka server)에서 읽어올지 알게됨브로커가 failure면, 컨슈머는 어떻게 recover할지 알 수 있음데이터는 각 파티션의 offset의 순서대로 읽어옴 Consumer Deserializerbytes -> object / datavalue, key에만 쓰임consumer는 메세지 형식이 어떻게 되어있는지 사전에 알아야 함common deserializersstring (+ json)int, floatavroprotob..

[Kafka] Apache Kafka 초보 2 : 프로듀서 & 메시지 키

이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다. 프로듀서프로듀서는 topic에 데이터를 쓴다프로듀서는 어떤 파티션에 데이터를 쓸지 알고 있다카프카 브로커가 해당 정보를 가지고 있음카프카 서버에서 특정 파티션이 failure되면, 프로듀서는 recover할 수 있음로드밸런싱을 함 메세지 키프로듀서는 메세지에 키를 추가하여 보낼 수 있음 (선택사항, 키는 string, number, binary, ...의 형식을 가짐)key=null이면 round-robin 형식으로 전송key!=null이면 특정한 키에만 데이터가 써짐 (hashing strategy)특정 field의 메세지 순서가 중요하다면 key를 제공해줘야함Kafka message key hashingkafka..

[Kafka] Apache Kafka 초보 1 : 토픽, 파티션, 오프셋

이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다. 토픽db로 치면 테이블과 비슷한 개념으로, 파티션을 구성할 수 있다.모든 종류의 message format 가능 (avro, json, txt ..)message의 순서는 'data stream'으로 부름topic을 query할 수 없지만, consumer로 데이터를 보내 읽을 수 있게 할 수 있음데이터가 한번 쓰이면 수정 불가 (immutable)데이터는 한정된 시간만큼 보관된다 (디폴트는 일주일) 파티션토픽 내에 여러개의 파티션을 만들 수 있다파티션 내 메세지 순서는 파티션 내부에서만 한정적으로 보장된다 (파티션 간에는 순서 보장 x)topic은 immutable : partition에 데이터가 쓰이면 수정 불가..