카프카

환승의 개발로그·2020년 11월 22일
0

아파치 카프카

오늘은 아파치 카프카에 대해서 공부를 실시 하였다.
지금 시대에 데이터 처리에 있어 카프카는 데이터 파이프라인에 엄청난
역할을 수행 중이다. 이미 대기업들이나 다양한 기업들은 카프카의 효용성과 고가용성을 알아차리고
카프카를 취업공고에 우대사항으로 많이 넣는다 실제로 공부하면서 카프카에 구조를 살펴보며 이걸 만든사람은 정말로 천재이면서 대단하다고 느껴진다.....!!

카프카 용어 및 특징

프로듀서: 데이터를 카프카에 보내고 어떠한 토픽으로 데이터를 보낼 지 설정하는 역할

브로커: 전송성공여부와 재전송, 프로듀서에서 사용 ,3개이상의 브로커 사용 권장
Replication: 파티션 복제 ex) 파티션(리더) 1 Replication(팔로워) 2 => 고가용성을 위해 사용
Why? 어떠한 이유로 리더 파티션 브로커가 사용이 불가할 때 팔로워 파티션을 사용 !
If) ack = 0 이면 프로듀서 ->데이터전송 -> 리더파티션 => 데이터 유실 가능성 O
Else if ) ack = 1 프로듀서 -> 데이터전송 -> 리더파티션 -> 데이터 전송 확인 -> 프로듀서
=> 데이터 유실 가능성 O
Else if) ack = all 프로듀서 -> 데이터전송 -> 리더파티션 -> 데이터 전송 확인 -> 프로듀서 => 팔로워 파티션들도 확인 => 데이터 유실 가능성 X 안전함 but 느림

토픽: 카프카에 들어가는 파티션 이름들

키: 토픽의 파티션이 지정될 때 사용

컨슈머: 데이터를 가져가더라도 데이터 사라짐 X , record단위로 데이터 처리
1. 데이터를 가져와 데이터베이스에 저장하거나 다른 파이프 라인에 전달
2. 오프셋 위치: 데이터를 읽고 처리할 때 갑자기 중지된다면 오프셋에 데이터를 어디까지 처리했는지에 대한 파티션의 위치가 저장되어있음 => 고가용성, 컨슈머 오프셋이 그룹마다 다르기 때문에 오프셋 위치는 컨슈머 그룹마다 다르다.
3. 컨슈머가 여러 개일 경우 병렬 처리 (자바 라이브러리를 추가할 경우 )
4. 병렬 처리하고 싶다면 파티션보다 컨슈가 개수가 적어야 한다 !
장점:
컨슈머가 달라도 auto.offset.reset = earliest를 통해 다른 컨슈머가 같은 데이터를 사용할 수 있다.
이후에 -> 시각화 분석화위해 엘라스턱서치에 저장 or 데이터를 백업하기위해 하둡에 저장

카프카 Saas: Confluent사의 Kafka cloud, Google Pub/sub

결론: 데이터 파이프라인에 있어서 정말 앞으로 AI만큼 각광받고 모든 기업이 카프카를 쓰거나 카프카와 비슷한 데이터 파이프라인을 사용할 것 같다고 생각된다.

최근들어 Saas 형태의 카프카 서비스나 비슷한 클라우드 서비스가 나오고 있는데 개발자들 입장에서 클릭 몇번으로 데이터파이프 라인을 구축할 수 있다니 정말 좋은것 같으면서 호기심이 생긴다 기회가 되면 실습을 하고싶다. 이상으로 카프카에 대한 잡담이였습니다. 감사합니다 !

profile
눈보다는 손으로 기억하기

0개의 댓글