(사내 교육 수강 기록입니다)
쿠버네티스 환경에서 Kafka, Redis를 수행하는 방법, 그리고 모니터링 솔루션을 확인하는 방법을 공부해 봤다.
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
APACHE KAFKA
- distributed event streaming platform(분산 이벤트 스트리밍 플랫폼)
- high-performance(고성능)
- 최근 여러 기업에서 사용하고 있다.
Kafka의 구성 요소
Kafka Cluster
- 메시지를 저장하는 저장소
- 하나의 카프카 클러스터는 여러 개의 브로커로 구성된다.
- 데이터를 이동하는데 필요한 핵심 역할
Broker
- 각각의 서버라고 볼 수 있다.
- 메시지를 나눠서 저장하고, 이중화 처리하고, 장애 대처 등을 한다.
주키퍼 클러스터(앙상블)
- kafka cluster를 관리한다.
- 카프카 클러스터와 관련된 정보가 기록, 관리된다.
프로듀서
- 카프카 클러스터에 메시지를 보낸다.
컨슈머
- 카프카 클러스터로부터 메시지를 받는다.
토픽
- 메시지를 저장하는 단위, 메시지를 구분하는 용도
- 한개의 토픽은 한 개 이상의 파티션으로 구성된다.
- 파일의 폴더와 유사한 역할
파티션
- 메시지를 저장하는 물리적인 파일
- append-only 파일, 추가만 가능하다.
프로듀서는 메시지를 저장할 때 특정 토픽에 저장하도록 요청하게 된다.
컨슈머는 어떤 토픽에서 메시지를 읽어올 지 결정할 수 있다.
Offset
- 파티션 내 메시지가 저장되는 위치
- 각 메시지는 offset1, offset2, ... 값을 갖게 된다. -> 항상 제일 끝에 추가된다. 중간에 삽입되지 x
- 컨슈머는 오프셋 기준으로 메시지를 순서대로 읽는다(섞어서 읽지 못함)
- 메시지는 삭제되지 않고 보존된다.
프로듀서는 어떤 파티션에 메시지를 저장하는가?
- 라운드로빈 방식 - 돌아가면서 선택한다.
- key를 이용한 방식
- key의 해시값을 이용해서 저장한 topic을 선택한다.
- 같은 key <-> 같은 topic
- 같은 key에 대해서는 메시지의 순서가 유지된다.
컨슈머 그룹과 파티션
- 컨슈머 그룹에 속하게 된다.
- 한 개 파티션은 컨슈머그룹 내 한 개의 컨슈머에만 연결 가능하다.
- 컨슈머그룹 기준으로 파티션의 메시지가 순서대로 처리되는 것을 보장한다.
Kafka의 성능이 좋은 이유
- 파티션 파일은 OS 페이지 캐시를 사용한다.
- 파일 I/O 가 실제로는 메모리에서 처리되기 때문에 속도가 빠르다.
- Zero Copy
- 디스크 버퍼에서 네트워크 버퍼로 직접 데이터 복사
- 디스크에서 데이터를 읽어서 네트워크로 보내는 속도가 빨라진다.
- 브로커의 일이 단순하다
- 메시징 시스템 (메시지 필터링, 재전송 등)을 하지 않음 -> 프로듀서와 컨슈머가 직접 함
- 속도가 빠르게 된다
Redis(Remote DIctionary Server)
- 데이터베이스, 캐시 또는 메시지 브로커로 자주 사용되는 오프 소스 인메모리 DB
- list, map, set, sorted set과 같은 고급 데이터 유형을 저장하고 조작할 수 있다.
- 다양한 형식의 키를 허용하고 서버에서 직접 수행되므로 클라이언트의 작업 부하를 줄일 수 있다.
- DB 전체를 메모리에 보유하며 Disk는 지속성을 위해서만 사용한다.
'Infra > Kubernetes' 카테고리의 다른 글
EKS로 배포하기 (0) | 2022.08.04 |
---|---|
kubernetes 9 (0) | 2022.07.25 |
kubernetes 8 (0) | 2022.07.22 |
kubernetes 7 (0) | 2022.07.21 |
kubernetes 5 (0) | 2022.07.20 |