pub/sub Kafka vs Redis

Haechan Kim·2023년 7월 24일

MSA에서 한 API에서 다른 API로 정보 전달할 때 pub/sub 모델 사용할 수 있다.

pub/sub 모델 구조

Kafka

producer는 topic에 이벤트 보내고, 이벤트는 topic의 각 partition에 분산 저장됨.
topic 구독하고 있는 consumer 그룹 내의 consumer는 각 1개 이상의 파티션으로 부터 이벤트 가져옴.
파티션 수보다 consumer 수가 많으면 아무일도 하지 않는 consumer 생기기 때문에 항상 파티션 수를 소비자 수보다 크거나 같게 해주는 것이 좋다.

카프카의 토픽은 우체통 역학.
p가 편지 써서 우체통(topic)에 넣으면, c가 볼때까지 그대로 남아있음.

Redis

Redis는 그룹 개념 존재 x, 각 subscriber가 channel 구독.
채널은 이벤트 저장 x!
채널에 이벤트 도착 시 해당 채널의 subscriber가 존재하지 않는다면 이벤트는 사라짐.

레디스의 채널은 tv 채널처럼 각 방송사(publisher)에서 방영/시청 중일때만 볼 수 있음.

Kafka vs Redis
차이점
1. 이벤트 저장 여부
카프카는 발행된 이벤트 각 파티션에 저장.
but 레디스는 이벤트 저장 x, 구독자 없다면 이벤트 사라짐.
so, 이벤트 구독, 발행이 실시간으로 이뤄져야 하는지 or 아무때나 읽으면 되는 상황인지에 따라 선택 달라짐.

  1. 한 이벤트 받을 수 있는 subscriber(consumer) 개수

<참고>
https://medium.com/frientrip/pub-sub-잘-알고-쓰자-de9dc1b9f739

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기