카프카 노트: 테마, 구역 및 편향

지난 절에서, 우리는 이미 기계에 카프카와 모든 필요한 선결 조건을 설치했다.이 섹션에서 이미 알고 있는 부분은 생략할 수 있지만 기본적으로 다음을 계속합니다.
  • Brief walkthrough of the directories
  • Now, onto the main topic
  • What's in a message?
  • Event Sourcing
  • Partitions
  • The Message Offset
  • The Message Retention Policy
  • As a Distributed Commit Log
  • 목록의 간략한 연습


    회상해 보자. 우리는 /usr/local/bin에서 카프카 파일 디렉터리를 만들고 다운로드한 카프카 tarball의 추출 내용을 복사했다.Kafka 파일 디렉터리나 Kafka 프로그램은 원하는 디렉터리에서 실행할 수 있습니다.
    root:kafka_2.13-2.7.0 $ ls -l
    total 56
    drwxr-xr-x 3 root root  4096 Dec 16  2020 bin
    drwxr-xr-x 2 root root  4096 Jun 23 15:05 config
    drwxr-xr-x 4 root root    36 Jun 23 15:05 data
    drwxr-xr-x 2 root root  8192 Jun 23 15:05 libs
    -rw-r--r-- 1 root root 29975 Dec 16  2020 LICENSE
    -rw-r--r-- 1 root root   337 Dec 16  2020 NOTICE
    drwxr-xr-x 2 root root    44 Dec 16  2020 site-docs
    
    웹 사이트의 문서는 온라인에서 사용할 수 있는 모든 문서의 보관을 포함한다.
    libs 폴더에는 Kafka 실행에 필요한 종속성이 포함되어 있습니다.
    당신들은 도대체 조커와 클라이언트 라이브러리의 파일이 있는지 주의할 것입니다.카프카는 ZooKeeper를 미리 설치할 필요 없이 독립적으로 설치할 수 있습니다.
    # Please note that some of the contents are omitted to shorten output
    
    root:kafka_2.13-2.7.0 $ ls -l libs/
    total 67052
    -rw-r--r-- 1 root root    69409 May 28  2020 activation-1.1.1.jar
    -rw-r--r-- 1 root root    27006 Jun 30  2020 aopalliance-repackaged-2.6.1.jar
    -rw-r--r-- 1 root root    90347 May 28  2020 argparse4j-0.7.0.jar
    -rw-r--r-- 1 root root    20437 Dec 20  2019 audience-annotations-0.5.0.jar
    -rw-r--r-- 1 root root    53820 Dec 20  2019 commons-cli-1.4.jar
    -rw-r--r-- 1 root root   501879 May 28  2020 commons-lang3-3.8.1.jar
    -rw-r--r-- 1 root root    12211 Jan 22  2020 slf4j-log4j12-1.7.30.jar
    -rw-r--r-- 1 root root  1945847 Oct 21  2020 snappy-java-1.1.7.7.jar
    -rw-r--r-- 1 root root   991098 May 27  2020 zookeeper-3.5.8.jar
    -rw-r--r-- 1 root root   250547 May 27  2020 zookeeper-jute-3.5.8.jar
    -rw-r--r-- 1 root root  5355050 Aug 12  2020 zstd-jni-1.4.5-6.jar
    
    프로필은 카프카의 모든 프로필을 포함합니다.여기서 서버를 볼 수 있습니다.재산Kafka 에이전트의 구성 파일입니다.
    root:kafka_2.13-2.7.0 $ ll config/
    total 72
    -rw-r--r-- 1 root root  906 Dec 16  2020 connect-console-sink.properties
    -rw-r--r-- 1 root root  909 Dec 16  2020 connect-console-source.properties
    -rw-r--r-- 1 root root 5321 Dec 16  2020 connect-distributed.properties
    -rw-r--r-- 1 root root  883 Dec 16  2020 connect-file-sink.properties
    -rw-r--r-- 1 root root  881 Dec 16  2020 connect-file-source.properties
    -rw-r--r-- 1 root root 2247 Dec 16  2020 connect-log4j.properties
    -rw-r--r-- 1 root root 2540 Dec 16  2020 connect-mirror-maker.properties
    -rw-r--r-- 1 root root 2262 Dec 16  2020 connect-standalone.properties
    -rw-r--r-- 1 root root 1221 Dec 16  2020 consumer.properties
    -rw-r--r-- 1 root root 4674 Dec 16  2020 log4j.properties
    -rw-r--r-- 1 root root 1925 Dec 16  2020 producer.properties
    -rw-r--r-- 1 root root 6876 Jun 23 15:05 server.properties
    -rw-r--r-- 1 root root 1032 Dec 16  2020 tools-log4j.properties
    -rw-r--r-- 1 root root 1169 Dec 16  2020 trogdor.conf
    -rw-r--r-- 1 root root 1237 Jun 23 15:05 zookeeper.properties
    
    마지막으로, bin은 cna가 카프카드를 시작하고 실행하기 위해 실행하는 모든 프로그램을 포함합니다.
    # Please note that some of the contents are omitted to shorten output
    
    root:kafka_2.13-2.7.0 $ ll bin/
    total 144
    -rwxr-xr-x 1 root root  1423 Dec 16  2020 connect-distributed.sh
    -rwxr-xr-x 1 root root  1396 Dec 16  2020 connect-mirror-maker.sh
    -rwxr-xr-x 1 root root  1420 Dec 16  2020 connect-standalone.sh
    -rwxr-xr-x 1 root root   861 Dec 16  2020 kafka-acls.sh
    -rwxr-xr-x 1 root root   958 Dec 16  2020 kafka-verifiable-producer.sh
    -rwxr-xr-x 1 root root  1714 Dec 16  2020 trogdor.sh
    drwxr-xr-x 2 root root  4096 Dec 16  2020 windows
    -rwxr-xr-x 1 root root   867 Dec 16  2020 zookeeper-security-migration.sh
    -rwxr-xr-x 1 root root  1393 Dec 16  2020 zookeeper-server-start.sh
    -rwxr-xr-x 1 root root  1366 Dec 16  2020 zookeeper-server-stop.sh
    -rwxr-xr-x 1 root root  1019 Dec 16  2020 zookeeper-shell.sh
    

    이제 주요 화제로 들어간다



    주제는 단지 전체 집단의 소식을 뛰어넘을 수 있는 논리적 집합일 뿐이다.
  • 이것은 명칭 요약 - 주소를 찾을 수 있고 인용할 수 있음
  • 프로듀서가 주제에 메시지를 보내기
  • 소비자가 주제에서 정보를 검색
  • 당신은 임의의 주제를 가질 수 있습니다
  • 주제가 여러 개의 구역으로 구분됨
  • 생산자와 소비자는 정보가 어떻게 혹은 어디에 보존되는지에 대해 진정으로 관심을 가지지 않는다.카프카 집단에 있어서 모든 테마는 로그 파일을 하나 이상 유지합니다.

    댓글에 뭐가 있어요?



    카프카의 모든 메시지는 다음과 같습니다.

  • 타임스탬프 - 프록시가 메시지를 받을 때 설정

  • 고유 식별자 - 소비자가 정보를 참조하는 방법

  • 바이너리 페이로드 - 데이터
  • 카프카의 구상은 이론적으로 무한한 수량의 독립과 자주적인 소비자들이 소비할 수 있는 문제를 해결하기 위한 것이다.한 소비자가 아니라 수백, 수천 명의 소비자가 같은 소식을 받기를 원할 수도 있다는 뜻이다.
    왜 이 점이 중요합니까?만약 한 소비자가 메시지를 잘못 처리했다면, 이 고장은 같은 메시지를 처리하고 있는 다른 소비자에게 연결되거나 영향을 주어서는 안 된다.
    한 소비자의 고장이 다른 소비자의 운영을 방해해서는 안 된다.모든 사람은 반드시 자신의 전속 경계가 있어야 한다

    활동 소스


    프로듀서가 주제에 메시지를 보낼 때 이 메시지는 시간 순서대로 추가됩니다.
  • 각 정보는 하나의 사건이나 사실을 대표한다
  • 행사는 제작자가 배정하고 소비자가 소비
  • 이벤트도 변경할 수 없습니다. 주제
  • 가 수신되면 수정할 수 없습니다.
  • 주제 중의 어떤 사건이 더 이상 유효하지 않으면 제작자는 업데이트된 정확한 사건을 따라가야 한다
  • 소비자가 처리할 때 반드시 소식을 조율해야 한다

  • 변하지 않는 시간 순서 시퀀스에서 포착된 변경 사항을 통해 응용 프로그램의 상태를 유지하는 이런 체계 구조 스타일을 이벤트원이라고 부른다.

    분구



    위에서 말한 바와 같이 주제는 하나 이상의 구역이 있을 수 있다
  • 파티션 수 구성 가능
  • 파티션당 순서 지정
  • 구역의 모든 메시지는 편이량이라는 증량 id를 획득합니다
  • 메시지의 순서는 한 구역만 보장하고 전체 구역은 보장하지 않는다
  • 확장성 및 내결함성 중요
  • 테마를 만들 때 구역을 지정해야 합니까?
    예, 테마를 만들 때 구역을 지정해야 하지만, 언제든지 변경할 수 있습니다.
    한 개의 구역을 사용해야 합니까? 아니면 여러 개의 구역을 사용해야 합니까?
    단일 섹션 테마는 생산에도 사용할 수 있지만, 이것은 신축성과 흡수량을 제한한다.이것은 여러 대의 기계에서 하나의 구역을 간단하게 분할할 수 없기 때문이다.하나의 구역은 끊임없이 증가하는 주제를 유지할 수 없을 수도 있다.
    여러 개의 구역에 대해 메시지를 보낼 구역을 선택할 수 있습니까?
    키를 지정하지 않으면 데이터가 랜덤으로 구역에 분배됩니다.이것은 다음 장에서 토론할 것이다.

    메시지 오프셋


    정보의 편향은 소비자들이 자신의 속도로 정보를 읽고 독립적으로 처리할 수 있게 한다.책갈피와 유사합니다.
  • 메시지 식별자로 사용
  • 마지막으로 읽은 정보를 그대로 유지
  • 소비자
  • 가 추적 및 유지 관리
    시작할 때 소비자는 매니저와 연결을 맺는다.그리고 소비자들은 어떤 소식을 소비할지 결정할 것이다.여기에는 두 가지 예가 있을 수 있다.
  • 소비자가 이 주제에 대한 정보를 읽지 않았음
  • 소비자는 주제를 읽었지만 정보를 다시 읽기를 원합니다
  • 이 두 가지 상황에서 소비자들은 모두 처음부터 책을 읽을 것이다.그런 다음 메시지 오프셋을 0으로 설정하여 시작 위치를 나타냅니다.메시지 시퀀스를 읽을 때, 메시지 편이도도 이동합니다.

    만약 우리가 다른 소비자도 정보를 읽고 주제의 다른 위치에 있다고 가정한다면.그곳에 남아서 처음부터 다시 읽거나 남은 소식을 계속 처리할 수도 있다.
    새로운 소식이 주제에 도달하면 연결된 사용자는 하나의 이벤트를 받고 발표된 소식을 지시하며 두 사용자 모두 새로운 소식을 검색하고 처리할 수 있다.

    소비자들은 자신의 현재 처지를 알고 다시 시작하거나 자신의 지위를 높일 수 있으며 매니저나 생산자 또는 다른 소비자에게 알리지 않아도 된다는 생각이다.
    여기서 주의해야 할 또 다른 일은 편향량이 각 구역에 대해 특정하다는 것이다.즉, 파티션 O의 오프셋 3은 파티션 6의 오프셋 5와 동일한 데이터를 가지지 않습니다.

    메시지 보존 정책



    대부분의 메시징 시스템이 직면하는 도전 중 하나는 속도가 느린 사용자이다.느린 소비자들의 문제는 대기열이 길어질 수도 있고 일부 소식을 잃어버릴 수도 있다는 것이다.
    카프카의 해결 방안은 메일 보존 정책이다.이것은 카프카로 하여금 설정 가능한 시간대(시간) 내에 메시지를 저장할 수 있게 한다.
  • 발표된 소식은 소비되었든 안 되었든 간에 보류된다

  • 기본 보존 기간: 168시간 또는 7일
  • 시간이 지나면 메시지가 삭제됩니다
  • 가장 오래된 클러스터 제거(917) - 가장 오래된 클러스터 제거(917) 시작
  • 주제별 보존 기간 설정
  • 메시지 보존은 물리적 스토리지
  • 에 의해 제한될 수 있음

    로그를 분산으로 전송



    주제와 구역에 대한 이 부분을 끝내기 전에 카프카가 체계적 구조를 구축하는 기초인 제출 로그를 살펴보자.데이터베이스의 트랜잭션 또는 커밋 로그는 다음과 같습니다.

  • 진실의 근원-변화의 원시기록
  • 접수 순서대로 추가 이벤트
  • 그리고 시간 순서대로
  • 왼쪽에서 오른쪽으로 로그를 읽습니다.
  • 로그 항목은 물리적 로그 파일에 저장되며 데이터베이스
  • 에서 유지 관리
  • 높은 도수 구조를 형성하여 대수를 나타낼 수 있다
  • 표, 인덱스, 보기(관계 데이터베이스)
  • 충돌 시 시점 복구
  • 로 사용
  • 복제 및 배포의 토대
  • 한 마디로 하면 Kafka는 분포식 시스템의 외부 제출 로그로 볼 수 있으며 이 시스템은 발표-구독의 의미를 사용하여 에이전트가 읽고 쓸 수 있도록 한다.
    만약 네가 이 짧은 문장을 좋아한다면, 나는 너와 연락해서 매우 기쁘다.😃
    .ltag__user__id__350730.작업 따르기 버튼
    배경색: #7eb4fb!중요
    색상: #fcef98!중요
    테두리 색상: #7eb4fb!중요
    }

    이든 호세 포레


    A cloud enthusiast, an IT Professional, and a problem-solver. I am either learning something new, running a mile, or planning my next 100 days.

    좋은 웹페이지 즐겨찾기