1

  • 카프카: 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼

  • 링크드인에서 처음 출발한 기술

  • OLTPOnline Transaction Processing: 네트워크상 온라인 사용자들의 DB에 대한 트랜잭션 처리

  • OLATOnline

자유롭게 정리하는 곳

topic

  • producer는 topic에 message를 보냄

offset

  • topic 내의 partion에 데이터가 하나씩 들어가면 각 데이터에 offset이 붙음

lag

  • producer가 데이터를 넣어주는 속도 < consumer가 데이터를 가져가는 속도 = consumer lag

    • 파티션을 기준으로 측정하므로 lag는 여러 개 존재할 수 있음

      • 그중 가장 높은 숫자를 갖는 lag을 records-lag-max라고 함

    • 이 값을 통해 컨슈머 상태를 유추

    • 이 값이 높아지면…​

      • consumer의 성능에 비해 producer가 많은 record를 보내는 경우

      • consumer의 polling 빈도 수가 느려지는 경우

      • 네트워크 이슈

      • kafka broker 내부 이슈

consumer group

  • 하나의 프로세스, 서버라고도 볼 수 있음

  • consumer는 자신이 어디까지 데이터를 가져갔는지 offset을 통해 관리함

key

  • 메세지에 키가 있으면 같은 파티션으로 쌓임

  • 키가 없으면 라운드 로빈으로 전송됨. 여러 파티션에 나눠짐

5. 카프카 컨슈머

  • 컨슈머는 카프카 토픽에서 메시지를 읽어오는 역할

  • 컨슈머 그룹

    • 컨슈머 그룹은 하나의 토픽에 여러 컨슈머 그룹이 동시에 접속해 메시지를 가져올 수 있음

    • 컨슈머 그룹은 컨슈머를 확장시킬 수도 있음

    • 컨슈머의 오프셋 정보를 통하는 관점?

    • 컨슈머 그룹 안에서 컨슈머들은 메시지를 가져오고 있는 토픽의 파티션에 대해 소유권을 공유함

    • 소유권이 이동하는 것을 리벨런스rebalance라고 함

      • 리밸런스하는 동일 일시적으로 컨슈머는 메시지를 가져올 수 없음

    • 높은 가용성과 확장성 확보가 가능해짐

    • 컨슈머가 가져가는 메시지 수보다 프로듀서가 보내는 메시지가 많아 토픽에 쌓이는 경우

      • 컨슈머만 추가한다고 해결되지 않음

      • 토픽의 파티션에서는 하나의 컨슈머만 연결할 수 있기 때문

      • 토픽의 파티션 수만큼 최대 컨슈머 수가 연결할 수 있음

      • 각각의 파티션에 대해서 메시지 순서를 보장하므로, 카프카에서는 하나의 파티션에 하나의 컨슈머만 연결할 수 있음

      • 그러므로, 컨슈머만 추가하는 것이 아니라 토픽의 파티션 수도 늘려줘야 함

    • 하트비트는 컨슈머가 poll 할 때와 가져간 메시지의 오프셋을 커밋할 때 보내게 됨

      • 하트비트를 보내는 것을 통해 컨슈머가 컨슈머 그룹 안에서 맴버로 유지하고 할당된 파티선의 소유권을 유지할 수 있음

      • 컨슈머가 오랫동안 하트비트를 보내지 않으면 세션은 타임아웃되고, 해당 컨슈머가 다운되었다고 판단하여 리밸런스가 시작됨

    • 컨슈머 그룹마다 각자의 오프셋을 별도로 관리함

Etc