3장에서는 카프카의 기본 개념과 구조를 다루고, 카프카의 처리량을 높이기 위해 설계된 분산 시스템, 페이지 캐시, 배치 전송 등을 살펴본 후, 주키퍼의 역할에 대해서도 좀 더 파고든다
카프카 기초 다지기
- 리플리케이션
- 토픽 생성 명령어 중 replication-factor 옵션 : 원본을 포함한 복제본의 수
- 파티션
- 토픽 하나를 여러 개로 나눠 병렬 처리가 가능하게 만든 것
- 파티션 번호는 0부터 시작
- 파티션 수는 초기 생성 후 늘릴 수 있지만, 절대로 줄일 수 없다!
카프카 핵심 개념
- 분산시스템
- 분산 시스템은 네트워크상에서 연결된 컴퓨터들의 그룹을 말하며, 단일 시스템이 갖지 못한 높은 성능을 목표로 합니다.
- 이러한 분산 시스템은 성능이 높다는 장점 이외에도 하나의 서 버 또는 노드 등에 장애가 발생할 때 다른 서버 또는 노드가 대신 처리하므로 장애 대응이 탁월하며, 부하가 높은 경우에는 시스템 확장이 용이하다는 장점도 있습니다.
- 페이지 캐시
- 카프카가 직접 디스크에서 읽고 쓰기를 하지 않고 페이지 캐시를 통해 읽고 쓰기를 한다
- 배치 전송 처리
- 통신을 묶어서 처리
- 단건으로 통신할 때에 비해 네트워크 오버헤드를 줄일 수 있을 뿐만 아니라 장기적으로는 더욱 빠르고 효율적으로 처리할 수 있다
- 압축 전송
- 카프카는 메시지 전송 시 좀 더 성능이 높은 압축 전송을 사용하는 것을 권장
- 일반적으로 높은 압축률 gzip, zstd
- 빠른 응답 속도 lz4, snappy
- 토픽, 파티션, 오프셋
- 토픽: 데이터를 저장하는데
- 파티션: 토픽의 병렬 처리를 위해 나뉜 개념
- 오프셋: 파티션의 메시지가 저장되는 위치
- 고가용성 보장
- 주키퍼의 의존성
- 주키퍼는 여러 대의 서버를 클러스터로 구성하고, 살아 있는 노드 수가 과반수 이상 유지된다면 지속적인 서비스가 가능한 구조
- 반드시 홀수로 구성해야 한다
- 주키퍼: 카프카의 중요한 메타데이터를 저장, 각 브로커를 관리하는 중요한 역할