백엔드/Kafka

[Kafka] 심화 (병렬처리 / 스트림즈 / 커넥트 )

개발자딥게 2023. 12. 10. 16:19
반응형

컨슈머

configs : 어느 카프카 브로커에서 데이터를 가져올지 선언.

consumer.subscribe() 메서드: 어느 토픽에서 데이터를 가져올지 설정

 

> 0.5초 동안 watit 

> records 반환 ( 이 데이터는 프로듀서가 카프카에 전송한 데이터)

이를 무한루프로 반복.

 

 

consumer.assign() 메서드: 토픽의 어느 파티션에서 데이터를 가져올지 설정

 

 

파티션 개수와 컨슈머 개수의 관계성

 

토픽 내 파티션 개수는 무조건 컨슈머 개수보다 많아야 함.

여러 파티션을 가진 토픽에 대해서, 컨슈머를 병렬처리 하고 싶다면 파티션 수보다 적은 개수로 실행해야 함.

 

 

 

컨슈머에서의 병렬처리

컨슈머 그룹별로, 토픽별로 offset을 저장하기 때문에 병렬처리가 가능하다.

 

 

프로듀서에서의 병렬처리

데이터를 해키(키)를 이용해 특정 파티션에만 저장할 수 있음. 

만약 파티션 추가하면 병렬처리가 깨짐

 

 

 

 





 

 

 

1. 카프카 스트림즈

대용량, 폭발적인 성능의 실시간 데이터 처리를 위한 기능의 컴포넌트

 

2. 카프카 커넥트

반복적으로 파이프라인을 배포하고 관리하는 기능의 컴포넌트

 

커넥트Connect:

커넥터가 동작하도록 실행해주는 프로세스. 먼저 실행되어야 커넥터를 실행할 수 있음.
json 형태로 토픽과 테이블명을 지정해 rest API호출하면 파이프라인이 만들어지는 과정.

1) 단일 실행 모드 커넥트
 간단한 데이터 파이프라인, 또는 개발용으로 사용된다.

2) 분산 모드 커넥트
실제 상용할때 쓰이는 모드. 여러 프로세스를 하나의 클러스터로 묶은 것. 두개 이상의 커넥트가 하나의 클러스터로 묶이는 것. 일부 클러스터에 장애발생에도 다른 커넥트 이용해 데이터 처리가능하다.

 

 

커넥터 Connector: 

실질적으로 데이터를 처리하는 코드가 담긴 jar 패키지. 
동작/설정/실행 메서드가 들어있음. 

1) 싱크 커넥터 (sink connector)
특정 토픽에 있는 데이터를 어딘가로 sink한다. 특정 저장소(오라클, elastic search 등)으로 저장하는 역할. (컨슈머 같은 역할)

2) 소스 커넥터 (source connector)
데이터베이스로부터 데이터를 가져와서 토픽에 저장하는 역할 ( 프로듀서 같은 역할)

 

 

 

 

반응형