IT 이야기

[분산처리환경] 카프카 - 주키퍼 요약 정리

미르호 2023. 9. 15. 17:50

Kafka

 

- 참고1: https://hudi.blog/what-is-kafka/
- 참고2: https://gwonbookcase.tistory.com/49

- 참고3: https://goyunji.tistory.com/125


- 메세지 큐(MQ) : 분산화된 환경에서 발신자 <-> 수신자 메시지를 전송, 수신하는 기술
- MOM(message oriented middleware) : 메세지 지향 미들웨어
-> MOM 을 구현한 시스템이 MQ 임 - ActiveMQ, rabbitMQ, Kafka 등이 있음

- MQ 를 사용하면 서로에게 의존하지 않아서 확장하기 좋음

- 오픈소스 메세징 시스템
- 링크드인에서 최초개발, 아파치 재단 관리

- End-To-End 로 연결된 복잡한 구조를 카프카 중심의 데이터 흐름으로 바꿔 단순화 시킬 수 있음!
-> 이벤트/데이터가 발생하면 발생 주체가 카프카로 전달, 카프카가 최종적으로 전달
-> "유통"의 역할을 담당함


- 기존 메세징 시스템(rabbitMQ, ActiveMQ)에서는 Broker 가 consumer 에게 메세지를 push 해 주는 방식
-> 카프카는 consumer 가 Broker로부터 메세지를 pull 로 가져감
-> "자신의 처리 능력만큼의 메세지만 가져가서 최적의 성능을 낼 수 있음(대용량 처리에 특화됨)"

- 단, 네트워크 대역폭과 디스크 공간을 고려해서 사용해야 함

MQ의 사용 장점

- MQ 를 사용하면 비동기식 작업으로 처리 가능
- 개발자 입장에서 코딩의 간소화, 성능, 안정성 보장
- MQ는 소비자가 실제로 메시지를 어느 시점에 가져가서 처리하는 지 보장하지 않음(알아서 쓸 것이라 믿음)

Kafka - Zookeeper


- 카프카 클러스터에서 필수 구성 요소
- 카프카 클러스터에서 여러 대의 Broker 가 함께 메시지를 처리하니, Broker 간 데이터를 동기화 하기 위해 주키퍼가 사용됨
-> 주키퍼가 상태정보를 관리하여 동기화 해줌


Zookeeper


- 참고1: https://cornswrold.tistory.com/523
- 참고2: https://goyunji.tistory.com/125


- 분산 시스템의 네임스페이스, 구성 정보, 상태 정보 등을 관리하기 위한 분산 코디네이터 역할 수행
- znode 라는 곳에 key-value 형태로 상태 값들을 저장함
- 데이터들은 모두 메모리에 저장됨
- 클러스터(앙상블) 형태로 구성하여 사용할 수 있음. 단, 홀수로 노드를 구성해야 하며 과반수 이상의 노드가 살아있어야 함