Kafka 학습정리(기초개념)

5600 단어 kafka

Kafka 기본 개념


Kafka에는 다음과 같은 기본 개념이 포함되어 있습니다.Topic(주제): 카프카에서 서로 다른 카테고리 정보를 구분하는 데 사용되는 카테고리 이름입니다.Producer에서 2.Producer(생산자): Kafka의 특정 Topic에 메시지를 발표하는 대상(과정) 3.Consumers(소비자): 특정 Topic의 메시지를 구독하고 처리하는 대상(과정) 4.Broker (Kafka 서비스 집단): 발표된 정보는 서버에 저장되어 있으며, 이를 Kafka 집단이라고 부른다.클러스터의 각 서버는 에이전트(Broker)입니다.소비자들은 하나 이상의 화제를 구독하고 브로커에서 데이터를 끌어올려 이미 발표된 소식을 소비할 수 있다.5.Partition(파티션): Topic의 물리적 그룹, 하나의 topic는 여러 개의 파티션으로 나눌 수 있고 각각의 파티션은 질서정연한 대기열입니다.partition의 모든 메시지는 질서정연한 id (offset) 6.메시지: 메시지는 통신의 기본 단위로 모든 Producer는 하나의 topic(테마)에 메시지를 발표할 수 있습니다.

기별


메시지는 고정된 크기의 헤더와 가변 길이이지만 불투명한 바이트 진열로 부하됩니다.헤더에는 손상 또는 차단을 감지하기 위한 형식 버전 및 CRC32 유효성 검사가 포함되어 있습니다.

메시지 형식

1. 4 byte CRC32 of the message
2. 1 byte "magic" identifier to allow format changes, value is 0 or 1
3. 1 byte "attributes" identifier to allow annotations on the message independent of the version
   bit 0 ~ 2 : Compression codec
       0 : no compression
       1 : gzip
       2 : snappy
       3 : lz4
   bit 3 : Timestamp type
       0 : create time
       1 : log append time
   bit 4 ~ 7 : reserved
4. ( ) 8 byte timestamp only if "magic" identifier is greater than 0
5. 4 byte key length, containing length K
6. K byte key
7. 4 byte payload length, containing length V
8. V byte payload

로그(Log)

  • 로그는 증가할 수 있는 시간순으로 정렬된 일련의 기록이다.우리는 로그의 끝에 기록을 추가할 수 있고, 왼쪽에서 오른쪽으로 로그 기록을 읽을 수 있다.모든 기록은 일정한 순서가 있는 유일한 로그 기록 번호를 지정한다.수석 엔지니어 링크드 인 빅데이터 백엔드 폭로
  • 모든 로그 파일은'log entries'서열이고 각log entry는 4바이트 정형수(값은 N)를 포함하고 그 다음에 N바이트의 메시지체를 포함한다.모든 메시지는 현재partition에서 유일한 64바이트의offset을 가지고 있으며, 이 메시지의 시작 위치를 가리킨다.
  • 이'log entries'는 하나의 파일로 구성된 것이 아니라 여러 개의segment로 나뉘는데 각segment의 이름은 이segment의 첫 번째 메시지인offset과'.kafka'로 구성된다.각segment 아래에 포함된log entry의offset 범위를 표시하는 색인 파일이 있습니다.

  • Topic & Partition

  • Kafka의 삼복률을 수평으로 확장하기 위해 물리적으로 topic를 하나 이상의 파티션으로 나누고 각 파티션은 물리적으로 하나의 폴더에 대응하며 이 폴더 아래에 이 파티션의 모든 메시지와 인덱스 파일을 저장합니다.
  • 각 구역은 순서대로 변할 수 없는 메시지 대기열이며 지속적으로 추가할 수 있습니다.섹션의 메시지는 모두 시퀀스 번호로 분배되었는데, 이를 편이량 (64바이트의offset) 이라고 부른다. 섹션마다 이 편이량이 유일하다
  • 모든 메시지가 append에 의해 이 파티션에 기록되기 때문에 순서대로 디스크를 쓰기 때문에 효율이 매우 높다(경험증, 순서대로 디스크를 쓰는 효율이 무작위로 메모리를 쓰는 것보다 높다는 것은 카프카의 높은 삼키기율의 중요한 보증이다)
  • 모든 메시지가 브로커에 전송될 때parition 규칙에 따라 어느 partition에 저장될지 선택합니다.만약partition 규칙 설정이 합리적이라면 모든 메시지가 서로 다른partition에 고르게 분포되어 수평 확장을 실현할 수 있다.(만약에 하나의 topic가 파일에 대응한다면 이 파일이 있는 기계 I/O는 이 topic의 성능 병목이 되고partition은 이 문제를 해결할 것이다).topic 생성 시 $KAFKAHOME/config/server.properties에서 이partition의 수량을 지정합니다. (아래와 같습니다.) 물론 topic가 만들어진 후에parition 수량을 수정할 수도 있습니다.
  • 메시지를 보낼 때 이 메시지의 키를 지정할 수 있으며, Producer는 이 키와partition 메커니즘에 따라 이 메시지를 어떤parition으로 보낼지 판단할 수 있다.paritition 메커니즘은 제품의paritition을 지정할 수 있습니다.class라는 매개 변수를 지정합니다. 이class는kafka를 실현해야 합니다.producer.Partitioner 인터페이스.이 예에서 키가 정수로 해석될 수 있다면 대응하는 정수와partition 총수를 남기고 이 메시지는 대응하는partition으로 전송됩니다.(parition마다 번호가 있음)
  • 키와 같은 메시지가 같은 파티에 전송되고 저장되며 키의 번호는 파티션 번호와 꼭 같다.(partition 번호는 0에서 시작하고 이 예의 키도 0에서 시작합니다)
  • offset

  • 이 오프셋은 파티션당 고유
  • 소비자가 가지고 있는 유일한 메타데이터는 바로 이 편이량, 즉 소비자가 이log에 있는 위치이다.이 편이량은 소비자가 통제한다.
  • 정상적인 상황에서 소비자가 정보를 소비할 때 편이량도 선형적으로 증가한다.그러나 실제 편이량은 소비자가 제어하기 때문에 소비자는 편이량을 더 오래된 편이량으로 재설정하여 정보를 다시 읽을 수 있다.
  • 한 소비자의 조작은 다른 소비자가 이log의 처리에 영향을 주지 않는다
  • 좋은 웹페이지 즐겨찾기