[Kafka 이론] 3. Kafka Topics

Kafka Topics

  • 카프카 토픽은 카프카 클러스터 안에 있는 데이터 스트림 이다.

    • 카프카 클러스터 안에는 다양한 토픽이 존재한다.
    • 다양하게 이름을 정할 수 있다.
    • 카프카 클러스터 안에서 이름을 이용해서 토픽을 식별한다.
  • 토픽은 데이터베이스의 테이블과 비슷하며 Stack 형태로 쌓여있다.

    • 아무런 제약이 없다
    • 데이터 검증이 없다
    • 원하는 모든 데이터는 모두 토픽에 전송할 수 있다.
  • 토픽은 모든 종류의 메세지 형태를 지원한다.

    • JSON,TXT, Binary등
  • 토픽 안에 메세지들의 순서를 데이터 스트림이라고 부른다. 그래서 카프카를 데이터 스트리밍 플랫폼이라고 부르기도 한다.

    • 토픽을 통해 데이터 스트림을 만든다.
    • 토픽은 쿼리할 수 없지만 토픽에 데이터를 추가할 수 있다.
    • 카프카 프로듀서를 사용하고, 토픽 데이터를 읽기 위해 카프카 컨슈머를 이용한다.
  • 토픽들은 쿼리할 수 없지만, 그걸 파티션들로 분할할 수 있다. 하나의 토픽이 가령 100개의 파티션으로 구성될 수 있다.

    스크린샷 2023-08-25 오후 4.57.42.png

    • 카프카로 전송된 데이터는 각 파티션으로 들어가고 각각 순서가 정해진다. 계속 메세지를 작성하게 되면 id가 계속 증가하게 된다. 결국 각각의 id를 갖게 되고 0부터 계속 증가하게 된다.
    • 각각의 id를 카프카 파티션 오프셋이라고 한다.
    • 카프카 토픽은 이뮤터블이다.
      • Mutable – 변경이 가능한 객체
      • Immutable – 생성후 변경이 불가능한 객체
  • 카프카가 있음으로써 어떠한 서비스를 실행하던 동일한 데이터 스트림을 다수의 서비스가 읽을 수 있다는 장점이 있다.

Kafka Topics, Partitions, Offsets의 중요한 사항들

일단 어떤 데이터가 파티션에 기록되면 그 데이터는 변경되지 않는다. 변경될 수 없고, 그걸 불가변성이라고 한다.

  • 카프카의 데이터는 일정한 시간동안만 유지된다. 설정할 수 있지만 기본값은 1주일로 해당 기간이 지나면 데이터가 사라진다.
  • 오프셋기능은 특정한 파티션에 대해서만 의미가 있으며, 오프셋은 파티션마다 반복되어 처리되는데 오프셋이 같아도 파티션마다 들어있는 데이터가 다르기때문에 A파티션 3이 B파티션의 3의 데이터를 대변하지 않는다. 앞의 데이터가 삭제되어도 그 오프셋을 재사용할 수 없게 된다.
  • 메세지를 카프카 토픽에 전송하면 오프셋은 1씩 계속 증가하는데 메세지의 순서가 한 파티션 안에서만 보장된다는걸 유의해야 한다.
  • 키를 제공하지 않는 경우에는 자동으로 오프셋이 증가한다.
  • 토픽에 맞는 적절한 파티션 개수를 결정하는 방법에 대해 알아야 한다.
LIST