manjeong-dev / kafka

0 stars 0 forks source link

카프카 기본 개념 설명 #2

Open manjeong-dev opened 2 years ago

manjeong-dev commented 2 years ago
image

MirrorMaker2

주키퍼

클러스터

카프카 브로커

토픽

파티션

토픽 생성시 파티션은 0번 브로커부터 시작하여 round-robin 방식으로 leader partition 생성

파티션 : 컨슈머 = 1:1 (병렬 처리)

파티션 개수 줄이는 건 불가능

manjeong-dev commented 2 years ago

브로커의 컨트롤러는 그럼 복제 대상에서 빠지나? 아님 부가적인 일을 하는 걸까?

삭제(delete, compact)는 세그먼트 내에서만 발생? 다른 세그먼트는 compact 영향 안받음?

manjeong-dev commented 2 years ago

로그와 세그먼트 차이 프로듀서-브로커-파티션 연관관계

manjeong-dev commented 2 years ago

하나의 주키퍼로 클러스터를 묶는 단위는?

manjeong-dev commented 2 years ago

브로커 당 토픽 n개, 토픽은 n개의 파티션

manjeong-dev commented 1 year ago

Q1. 특정 브로커 다운시, 해당 브로커가 가지고 있던 리더 파티션들을 다시 선출하는 주체는? 주키퍼 팔로워 파티션을 가진 브로커들 파티셔너 카프카전문가 태선님 컨트롤러

Q2. 컨슈머 처리량이 많이 필요하지않다면 파티션 개수를 줄이면된다 (O/X)

Q3. 카프카 프로듀서 또는 컨슈머 대신 카프카 커넥트를 썼을때 장점 2개는?

Q4. 카프카가 빠른 쓰기/읽기가 가능하지만 이미 쓰여진 메세지는 변경이 불가한 이유는 레코드를 [ ] 자료구조 형태로 저장하기 때문이다. 트리(Tree) 자료구조 로그(Log) 자료구조 스택(Stack) 자료구조 링크(Link) 자료구조

Q5. 일반적인 데이터 삭제 단위는? 데이터 레코드 단위 토픽에 포함된 데이터 전체 파일단위로 이루어진 로그 세그먼트 물리 디스크의 특정 directory 단위

Q6. 운영시 특정 브로커에 리더 파티션이 쏠리는 현상이 발생할 경우 대응할 수 있는 방안은? 수동으로 옮겨준다. 파티셔너가 설정한 주기마다 자동으로 옮겨주므로 따로 할건 없다. kafka-reassign-partitions.sh 스크립트로 파티션을 재분배해준다. 해당 브로커에 장애를 일으켜서 다시 리더 파티션을 선출한다.

Q7. 토픽 내 특정 키에 대한 처리 순서 보장이 필요하다면 프로듀서에서 메시지 전송시 offset을 지정해주면 된다. (O/X)

Q8. 브로커에 저장되는 데이터 파일 종류에 맞지 않은 것은? .index .timeindex .segment .log

Q9. cleanup.policy=delete 와 cleanup.policy=compact 옵션에 차이점은?

Q10. 토픽이 생성되었을 때 리더 파티션이 선출되는 방식은 [] 방식이다.

Q11. 카프카 클라이언트가 메타데이터 요청을 하는 주요한 이유는 무엇인가? 리더 파티션의 위치 토픽 이름 세그먼트 정보 파티션 개수

Q1. 5 Q2. X 파티션은 다시 줄일 수 없다 Q3. 카프카 커넥트는 대표적으로 다음과 같은 5가지 특징을 가지고 있다. 데이터 중심 파이프라인 : 카프카 커넥트를 이용해 카프카로 데이터를 보내거나, 카프카로 데이터를 가져옴 유연성 : 커넥트는 테스트를 위한 단독 모드(standalone mode)와 대규모 운영 환경을 위한 분산 모드(distributed mode)를 제공 재사용성과 확장성 : 커넥트는 기존 커넥터를 활용할 수도 있고 운영 환경에서의 요구사항에 맞춰 확장이 가능 편리한 운영과 관리 : 카프카 커넥트가 제공하는 REST API로 빠르고 간단하게 커넥트 운영 가능 장애 및 복구 : 카프카 커넥트를 분산 모드로 실행하면 워커 노드의 장애 상황에도 메타데이터를 백업함으로써 대응 가능하며 고가용성 보장 https://minkwon4.tistory.com/319 Q4. 2 로그는 마지막 offset 가지고 있음, 중간에 있는 데이터의 offset은 없음 세그먼트 단위로 삭제 가능 Q5. 3 Q6. 3 Q7. X 메시지 키를 똑같이 지정해주면 같은 파티션으로 들어가서 순서 보장해줌 Q8. 3 Q9. delete 는 세그먼트 전체를 삭제, compact 는 컴팩트 로직을 가지고 세그먼트 내에 메시지키를 단위로 삭제해 메시지키별로 가장 최근에 남아있는 메시지키만 남김. Q10. round-robin assignor로 지정가능 sticky.. 등 https://blog.voidmainvoid.net/361 Q11. 1 4번, availablePartition 갯수 등도 메타데이터 요청을 할 수 있음

manjeong-dev commented 1 year ago
image
manjeong-dev commented 1 year ago
image image