[Kafka] Kafka broker id 해석 및 자동 생 성 id

8934 단어 빅 데이터-kafka
1. 개술
전송:https://honeypps.com/mq/kafka-params-analysis-of-broker-id/
2. Kafka 파라미터 broker. id 상세 설명
kafka 는 서 비 스 를 시작 하기 전에 broker. id, log. dirs, zookeeper. connect 세 개의 인 자 를 설정 해 야 합 니 다. 여기 서 broker. id 라 는 인 자 를 중점적으로 말씀 드 리 겠 습 니 다.Kafka 군집 에서 모든 broker 는 서 로 를 구분 하 는 유일한 id 값 을 가지 고 있 습 니 다.Kafka 는 시작 할 때 zookeeper 에서 / brokers / ids 경로 에서 현재 broker 의 id 와 이름 을 가 진 가상 노드 를 만 듭 니 다. Kafka 의 건강 상태 검 사 는 이 노드 에 의존 합 니 다.broker 가 오프라인 상태 에 있 을 때 이 가상 노드 는 자동 으로 삭 제 됩 니 다. 다른 broker 나 클 라 이언 트 는 / brokers / ids 경로 에서 이 broker 의 id 가 있 는 지 판단 하여 이 broker 의 건강 상 태 를 확인 합 니 다.
설정 파일 config / server. properties 의 broker. id 매개 변 수 를 통 해 broker 의 id 값 을 설정 할 수 있 습 니 다. 기본 적 인 상황 에서 broker. id 값 은 - 1 입 니 다.Kafka broker 의 id 값 은 0 보다 커 야 정상적으로 시 작 될 수 있 습 니 다. 그러나 설정 파일 config / server. properties 를 통 해 만 이 값 을 수정 할 수 있 는 것 이 아니 라 meta. properties 파일 이나 자동 생 성 기능 을 통 해 broker 의 id 값 설정 을 실현 할 수 있 습 니 다.
먼저 meta. properties 파일 을 알 아 보 겠 습 니 다.meta. properties 파일 의 내용 은 다음 과 같 습 니 다.
#
#Sun May 27 23:03:04 CST 2018
version=0
broker.id=1

meta. properties 파일 에는 현재 Kafka 버 전과 대응 하 는 version 필드 가 기록 되 어 있 지만, 현재 고정 값 0 만 있 습 니 다.현재 Kafka broker 의 id 값 인 broker. id 도 있 습 니 다.Kafka 가 성공 적 으로 시작 되면 모든 디 렉 터 리 에 meta. properties 파일 이 있 습 니 다.
Kafka 서비스 가 시 작 될 때 설정 파일 config / server. properties 의 인자 log. dir 와 log. dirs 를 불 러 옵 니 다. 이 두 매개 변 수 는 Kafka 로그 파일 에 저 장 된 루트 디 렉 터 리 를 설정 하 는 데 사 용 됩 니 다.일반적으로 log. dir 는 하나의 루트 디 렉 터 리 를 설정 하 는 데 사 용 됩 니 다. log. dirs 는 여러 개의 루트 디 렉 터 리 를 설정 하 는 데 사 용 됩 니 다. 그러나 Kafka 는 이에 대해 강제 적 인 제한 을 하지 않 습 니 다. 즉, log. dir 와 log. dirs 는 하나 이상 의 루트 디 렉 터 리 를 설정 할 수 있 습 니 다.log. dirs 의 우선 순 위 는 log. dir 보다 높 습 니 다. log. dirs 를 설정 하지 않 으 면 log. dir 설정 을 기준 으로 합 니 다.기본적으로 log. dir 인자 만 설정 되 어 있 으 며, 값 은 / tmp / kafka - logs 입 니 다.
meta. properties 파일 과 broker. id 의 관 계 는 다음 과 같 습 니 다.
  • log. dir 나 log. dirs 에 여러 개의 루트 디 렉 터 리 가 설정 되 어 있 으 면 이 루트 디 렉 터 리 에 있 는 meta. properties 파일 이 설정 한 broker. id 가 일치 하지 않 으 면 InconsistentBrokerIdException 의 이상 을 보고 합 니 다.
  • config / server. properties 설정 파일 에 설 치 된 broker. id 의 값 이 meta. properties 파일 에 있 는 broker. id 의 값 과 일치 하지 않 으 면 InconsistentBrokerIdException 의 이상 을 보고 합 니 다.
  • config / server. properties 설정 파일 에 broker. id 값 이 설정 되 어 있 지 않 으 면 meta. properties 파일 에 있 는 broker. id 를 기준 으로 합 니 다.meta. properties 파일 이 없 으 면 적당 한 broker. id 값 을 가 져 온 후에 새로운 meta. properties 파일 을 만 들 고 broker. id 의 값 을 저장 합 니 다.
  • config / server. properties 설정 파일 에 broker. id 가 설정 되 어 있 지 않 고 루트 디 렉 터 리 에 meta. properties 파일 (예 를 들 어 서비스 가 처음 시 작 될 때) 이 없다 면 어떻게 처리 해 야 합 니까?

  • Kafka 에 서 는 또 다른 두 개의 인자 broker. id. generation. enable 과 reserved. broker. max. id 를 제공 하여 새로운 broker. id 를 만 듭 니 다.broker. id. generation. enable 인 자 는 broker. id 를 자동 으로 생 성 할 지 여 부 를 설정 하 는 기능 입 니 다. 기본 적 인 상황 에서 true, 즉 이 기능 을 시작 합 니 다.자동 으로 생 성 된 broker. id 는 하나의 기준 값 이 있 습 니 다. 즉, 자동 으로 생 성 된 broker. id 는 이 기준 치 를 초과 해 야 합 니 다. 이 기준 치 는 reserved. broker. max. id 매개 변수 설정 을 통 해 기본 값 은 1000 입 니 다. 즉, 기본 적 인 상황 에서 자동 으로 생 성 된 broker. id 는 1001 부터 시작 합 니 다.
    broker. id 를 자동 으로 생 성 하 는 원 리 는 먼저 / brokers / seqid 노드 에 빈 문자열 을 기록 한 다음 에 되 돌아 오 는 Stat 정보 에 있 는 version 의 값 을 가 져 온 다음 에 version 의 값 과 reserved. broker. max. id 매개 변수 설정 의 값 을 추가 하면 됩 니 다.노드 에 데 이 터 를 먼저 기록 한 다음 에 Stat 정 보 를 가 져 오 는 이 유 는 되 돌아 오 는 version 값 이 0 보다 크 고 생 성 된 broker. id 값 이 reserved. broker. max. id 매개 변수 설정 값 보다 크 며 자동 으로 생 성 되 지 않 은 broker. id 의 값 이 [0, reserved. broker. max. id] 구간 에 있 는 설정 을 확보 할 수 있 습 니 다.
    초기 화 시 / kafka / brokers / seqid 의 상 태 는 다음 과 같 습 니 다.
    [zk: xxx.xxx.xxx.xxx:2181(CONNECTED) 6] get /kafka/brokers/seqid
    null
    cZxid = 0x200001b2b
    ctime = Mon Nov 13 17:39:54 CST 2017
    mZxid = 0x200001b2b
    mtime = Mon Nov 13 17:39:54 CST 2017
    pZxid = 0x200001b2b
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 0
    

    dataVersion = 0 을 볼 수 있 습 니 다. 이것 이 바로 앞에서 말 한 version 입 니 다.빈 문자열 을 삽입 한 후에 dataVersion 은 1 을 추가 하여 데이터 가 변경 되 었 음 을 나타 낸다. 이렇게 하면 zookeeper 의 이 기능 을 통 해 클 러 스 터 차원 의 번호 가 증가 하 는 기능 을 실현 하고 전체적으로 하나의 발신기 에 해당 한다.
    [zk: xxx.xxx.xxx.xxx:2181(CONNECTED) 7] set /kafka/brokers/seqid ""
    cZxid = 0x200001b2b
    ctime = Mon Nov 13 17:39:54 CST 2017
    mZxid = 0x2000e6eb2
    mtime = Mon May 28 18:19:03 CST 2018
    pZxid = 0x200001b2b
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 2
    numChildren = 0
    

    대부분의 경우 저 희 는 보통 config / server. properties 설정 파일 을 통 해 broker. id 의 값 을 설정 하 는 데 익숙 합 니 다. 그러나 그 중의 지엽 적 인 부분 을 알 고 있다 면 Inconsistent BrokerIdException 과 같은 이상 을 만 났 을 때 처리 할 수 있 는 여유 가 있 습 니 다.broker. id 를 자동 으로 생 성 하 는 기능 을 통 해 다른 기능 을 실현 할 수 있 습 니 다.
    중요 참고
    https://issues.apache.org/jira/browse/KAFKA-4093
    https://cwiki.apache.org/confluence/display/KAFKA/KIP-78%3A+Cluster+Id
    https://cwiki.apache.org/confluence/display/KAFKA/KIP-238:+Expose+Kafka+cluster+ID+in+Connect+REST+API
    https://blog.csdn.net/u013256816/article/details/80546337

    좋은 웹페이지 즐겨찾기