인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김동선님의 프로필 이미지

작성한 질문수

카프카 완벽 가이드 - 코어편

Producer의 객체 직렬화(Serializer) 전송의 이해

Zookeeper 관련 문의 드립니다.

작성

·

82

0

개발자님 Zookeeper 관련 전문가의 견해가 궁금 합니다.

 

Apache Kafka 에 Zookeeper 가 없이 설치 해서 사용 할 수 있는 것에 궁금한 것이 있습니다.

 

1.

Zookeeper 설치 없이 사용 하는 것은 Apache Kafka 에 Zookeeper 가 하던 task를 Apache Kafka 가 처리 하게 개발 하는 걸까요? 분리된 작업을 합치면 성능적 효과가 있는 걸까요?

 

2.

Zookeeper 설치 없이 사용 하는 Apache Kafka 를 하나의 PC에 docker container로 단일 브로커로 3개의 container을 만든다면, 실무에서 사용 사능 할까요?

 

3.

클러스터 환경에서 브로커를 두어 replication을 통해 가용성을 증가 시키는 것은 이해 했습니다. 혹 하나의 PC 에서 브로커를 여러개 두는 것은 가용성과는 크게 관련이 없는 것일까요?

4.

PC 한대에서 여러개의 Topic 을 통해 message 를 분류 해서 받는 것과,
PC 한대에서 브로커를 여러개 두어 message 를 분류 해서 받는 것의 성능 적 차이가 있을까요?

ex) 하나의 브러커에 2개의 토픽, 1번 토픽은 이미지만 받고 2번 토픽은 동영상만 받고,

2개의 브로커에 각각 1나의 토픽으로 1번 브로커에 이미지만 받고, 2번 브로커에 동영상만 받고,

둘다 consumer 가 소비 하는 데이터는 동일 하다는 가정 입니다.

 

5

하나의 PC에 container 환경 구축 보다, 그냥 설치 해서 하는 방법이 좋다고 알고 있습니다. 또 성능이 좋아서 하나로도 충분 하다고 알고 있는데 맞는 걸까여?

 

 

 

성능을 측정 하는 것에 지식이 없어서 문의 드립니다.

 

 

 

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

  1. 강의에서는 소개 드리지 않지만, Kafka 신버전(아마도 3.5) 부터는 zookeeper 를 사용하지 않고 zookeper가 수행하는 기능을 KRaft로 대체할 수 있습니다. 기존 zookeeper 보다 좀더 성능적이 측면에서 우수하다고 합니다. 하지만 이건 수십 ~ 수백대 이상의 Kakfa cluster 환경에서의 개선이며, 일반적으로는 성능상 큰 차이가 없는 것으로 알고 있습니다. 아래를 참조해 보시면 좋을 것 같습니다.

    https://devocean.sk.com/blog/techBoardDetail.do?ID=165711&boardType=techBlog

  2. 네, 사용가능합니다.

  3. 일반적으로 가용성과는 좀 거리가 있습니다. 해당 질문은 바로 이전에 질문하신 내용을 참조하시면 좋을 것 같습니다.

  4. 보통은 노드당 1개의 Kafka broker를 적용합니다. 물론 Kubernetes 환경에서 구동된다면 완전히 다른 이야기 이겠지만... 여러개의 topic을 여러 broker에서 개별적으로 사용하는 방식이 성능적으로 더 나은지는 저도 테스트를 안해봐서 잘 모르겠습니다. 개인적인 생각으로는 큰 차이가 없을 것 같습니다만, 장단점은 있을 것 같습니다. 2개의 broker에서 각각 1개씩 topic을 처리하는 경우에 조금 동시접속량을 좀 더 향상시킬 수는 있을 것 같습니다. 물론 2개의 broker를 띄우기 때문에 메모리 사용량이 증가하고 서로 다른 port로 관리해야 되는 부담이 있을 수는 있지만, 성능적인 측면에서는 약간이라도 나을 수는 있을 것 같습니다. 하지만 큰 차이는 아닐 것 같습니다.

  5. Kubernetes 기반이 아니라면 굳이 운영에서 docker를 사용할 이유는 없어 보입니다만, docker 로 infra를 구성하는 것이 운영 방안이라면 따르면 될 것 같습니다. docker가 가상환경이기 때문에 성능 저하는 있을 수 있는데 5% 미만 정도로 생각됩니다.