[kafka] 2.Kafka의 요청 처리 방식
Kafka는 메시지 큐 시스템으로 크게 2가지의 사용 전략이 있다. 일반 적으로 분산 메시지 큐로 사용하거나, 데이터 허브로 사용 할 수 있다.
그 중 데이터 허브로 사용하면서 하나의 클러스터에 데이터를 집중 시키면, 데이터를 한 곳에서 관리하면서 운영 효율이 증가하게 된다.
Kafka 요청 처리 방식
Kafka는 요청을 처리할 때 크게 두 개의 스레드 레이어를 사용한다.
-
네트워크 스레드
- 이벤트 루프를 처리하는 스레드
- 클라이언트와의 이벤트 기반 비동기 I/O 처리를 수행
- 클라이언트 소켓에 도착한 request을 가져와서 request 객체를 생성하고, 준비된 response 객체를 클라이언트 소켓에 입력하는 역할
-
요청 핸들러 스레드
- 네트워크 스레드가 가져온 요청의 내용을 처리해서 필요한 응답 객체를 네트워크 스레드에 반환 하는 역할
Kafka 전체 흐름
-
요청 읽기
-
클라이언트 소켓에 요청 도착
-
네트워크 스레드가 요청을 가져와 request 객체를 생성하고 request queue에 저장
request queue는 브로커 내에 하나만 존재 한다.
-
모든 요청 핸들러 스레드가 request queue를 pulling하면서 요청을 가져온다.
-
-
요청 처리
-
요청 핸들러 스레드가 큐에서 요청을 가져오면 작업을 처리하고 response 객체를 생성하고 response queue에 저장한다.
response queue는 네트워크 스레드 당 한개씩 존재한다.
-
-
응답 쓰기
- 네트워크 스레드가 response queue에서 response를 가져와 클라이언트 소켓에 입력해서 처리를 완료한다.