목록2022/11/20 (2)
devops
컨슈머의 주요 역할은 카프카에 저장된 메시지를 당겨오는 것이다. 메시지를 당기는데 중요한 요소인 오프셋과 그룹 코디네이터, 파티션 할당 전략을 간단히 정리해보려고 한다. 1) 오프셋 (Offset) 오프셋 관리는 컨슈머의 동작 중에 핵심이라고 볼 수 있다. 컨슈머는 카프카에 저장된 메시지를 꺼내기 때문에 컨슈머가 메시지를 어디까지 가져왔는지를 표시하고 확인하는 것은 중요하다. 여기서 메시지의 위치를 나타내는 것을 오프셋이라고 한다. 이 오프셋은 숫자 형태로 저장된다. 컨슈머 그룹은 오프셋 정보를 카프카의 토픽에 저장한다. (__consumer_offsets 토픽에 각 컨슈머 그룹 별 오프셋 위치 정보가 기록됨) 2) 그룹 코디네이터(Group Cordinator) 컨슈머 그룹에서 컨슈머들은 속한 컨슈머 ..
Producer 카프카의 토픽은 병렬처리가 가능하기 위해서 파티션으로 나뉘어, 최소 하나 이상의 파티션으로 구성된다. 그리고 프로듀서가 카프카로 전송한 메시지는 토픽 내 각 파티션의 로그 세그먼트에 저장된다. 그래서, 프로듀서는 토픽으로 보낼 때 토픽의 어느 파티션으로 메시지를 보내야할 지 결정해야하고 이 때 사용하는 것이 '파티셔너(Partitioner)'다. 그래서 파티션의 증가에 따라 관리자의 의도와 다르게 메시지 전송이 이뤄질 수 있기 때문에 되도록 파티션 수를 변경하지 않는 것이 좋다. 파티셔닝 방법 2가지 레코드들은 배치 처리를 위해서 프로듀서의 버퍼 메모리 영역에서 잠시 대기한 후에 카프카로 전송된다. 이 때 크게 두가지전략을 고려할 수 있다. 1) 라운드 로빈 전략 키 값을 지정하지 않은 ..