본문 바로가기
Book & Lesson

kafka강의6 | 카프카 버로우(Burrow)

by 카프리썬_ 2021. 3. 25.
728x90
728x90

지금까지 강의를 들으며 공부하고 학습해온 내용들

2021.03.22 - kafka강의1 | 아파치 카프카(Apache Kafka)란?

2021.03.22 - kafka강의2 | Topic이란? Pub/Sub 구조

2021.03.24 - kafka강의3 | 브로커, 복제, ISR(in-sync-replication)

2021.03.24 - kafka강의4 | 파티셔너(Partitioner)란?

2021.03.25 - kafka강의5 | 컨슈머 랙(Consumer Lag)이란?

 

하지만 이렇게 이론만 들어도 사실 잘 뭔가 와닿지 않는다. 

대충 아 이런거구나 라고만 생각이 들지 실질적으로 어떻게 동작하는지 눈으로 봐야할것 같다.

그래서 kafka를 가지고 뭔가 만들어보고 싶다.

 

 

아래의 내용 및 이미지는 [데브원영] 아파치 카프카 for begineers 강의 요약 및 추가 공부한 내용입니다.

자세한 강의는 연관링크 참고 부탁드립니다. 감사합니다.


컨슈머구현

kafka-client 라이브러리를 사용해서 java또는 scala를 통해 컨슈머 구현가능

이때 구현한 kafkaconsumer객체를 통해 현재 lag정보를 가져올 수 있다

 

lag모니터링

lag실시간 모니터링하고 싶다면 데이터를 elasticsearch나 influxDB와 같은 저장소에 넣은뒤 그라파나 대시보드 확인

 

하지만, 컨슈머 단위에서 lag모니터링은 비.권.장

아주위험하고 운영요소가 많이 들어간다

컨슈머 로직단위에서 lag을 수집하는 것은 컨슈머 상태에 디펜던시가 걸리기 때문

컨슈머가 비정상적으로종료되면 lag정보를 더이상 측정할 수 없게 됨

컨슈머가 개발될 때마다 해당 컨슈머에 lag정보를 특정 저장소에 저장할 수 있도록 로직을 개발해야한다

즉, lag을 수집할 수 있도록 개발한 컨슈머만 lag을 모니터링할 수 있다 -> 그래서 링크드인이 개발함

 

burrow

아파치 카프카와 함께 카프카의 컨슈머 lag을 효과적으로 모니터링 할 수 있도록 만든 오픈소스

golang으로 개발됨

이렇게 다운로드를 받을 수 있는 깃허브 존재 : github.com/linkedin/Burrow

컨슈머 lag모니터링을 도와주는 독립적인 애플리케이션

 

burrow 특징

1. 멀티카프카 클러스터 지원

카프카 클러스터가 여러개 돌아도 burrow 1개만 사용해도 모두 모니터링 가능

2. sliding window를 통해 컨슈머의 상태확인

컨슈머의 status를 error / warning/ ok로 표현

데이터 양이 일시적으로 많아져서 offset이 증가되고 있으면, warning

데이터 양이 많아지고 있는데 컨슈머가 데이터를 가져가지 않고 있으면, error

실제로 컨슈머의 문제를 알 수 있음

3. HTTP API 제공

API호출로 response받은 데이터를 시계열 db와 같은 곳에 저장하는 application을 만들어서 활용도 가능

 

 

 

 

728x90
반응형