Apache Kafka
1
-
카프카: 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼
-
링크드인에서 처음 출발한 기술
-
OLTPOnline Transaction Processing: 네트워크상 온라인 사용자들의 DB에 대한 트랜잭션 처리
-
OLATOnline
자유롭게 정리하는 곳
5. 카프카 컨슈머
-
컨슈머는 카프카 토픽에서 메시지를 읽어오는 역할
-
컨슈머 그룹
-
컨슈머 그룹은 하나의 토픽에 여러 컨슈머 그룹이 동시에 접속해 메시지를 가져올 수 있음
-
컨슈머 그룹은 컨슈머를 확장시킬 수도 있음
-
컨슈머의 오프셋 정보를 통하는 관점?
-
컨슈머 그룹 안에서 컨슈머들은 메시지를 가져오고 있는 토픽의 파티션에 대해 소유권을 공유함
-
소유권이 이동하는 것을 리벨런스rebalance라고 함
-
리밸런스하는 동일 일시적으로 컨슈머는 메시지를 가져올 수 없음
-
-
높은 가용성과 확장성 확보가 가능해짐
-
컨슈머가 가져가는 메시지 수보다 프로듀서가 보내는 메시지가 많아 토픽에 쌓이는 경우
-
컨슈머만 추가한다고 해결되지 않음
-
토픽의 파티션에서는 하나의 컨슈머만 연결할 수 있기 때문
-
토픽의 파티션 수만큼 최대 컨슈머 수가 연결할 수 있음
-
각각의 파티션에 대해서 메시지 순서를 보장하므로, 카프카에서는 하나의 파티션에 하나의 컨슈머만 연결할 수 있음
-
그러므로, 컨슈머만 추가하는 것이 아니라 토픽의 파티션 수도 늘려줘야 함
-
-
하트비트는 컨슈머가 poll 할 때와 가져간 메시지의 오프셋을 커밋할 때 보내게 됨
-
하트비트를 보내는 것을 통해 컨슈머가 컨슈머 그룹 안에서 맴버로 유지하고 할당된 파티선의 소유권을 유지할 수 있음
-
컨슈머가 오랫동안 하트비트를 보내지 않으면 세션은 타임아웃되고, 해당 컨슈머가 다운되었다고 판단하여 리밸런스가 시작됨
-
-
컨슈머 그룹마다 각자의 오프셋을 별도로 관리함
-