01. Pub-Sub 패턴의 이해
- 한쪽은 메세지를 발행
- 한쪽은 메세지를 구독해서 수신해간다.
- 특정 주제를 택해서 그 주제 밑으로 메세지가 모이게 되고, Subscriber는 그 주제를 선택해서 메세지를 받아가는 구조임
- → Message MiddleWare 를 통해서 가져감
Message MiddleWare의 장점
- 비동기 처리 :
- 기존의 http, tcp 통신은 동기방식이었음
- 상대방이 메세지를 받을 서버가 항상 올라가 있어야 하고
- 낮은 결합도 : 한쪽이 변경되더라도 다른 한쪽이 변동사항이 없다
- 탄력성 : 일부 서버들의 장애가 생겨도 다른 서버로 전파되지 않는다
- 한 서버가 발행하지 못하거나, 수신하지 못하더라도 다른 정상적인 서버는 middleWare를 통해서 수신받을 수 있기 때문임
- ex. RabbitMQ, Kafka, ActiveMQ…
Redis의 Pub/Subs의 특징
- 메세지가 큐에 저장된다 > 메세지가 저장되지 않는다
- = 현재 온라인에 떠 있는 Subscriber에게만 전달된다
- 분산 처리가 가능하다 > 어떤 메세지가 어떤 그룹에 속한 Subscriber에게 전달되면 동일한 메세지 처리를 그 그룹에 속한 다른 Subscriber에 대해서 처리하지 않는다.
- Kafka 는 pooling 방식 : Subscriber가 원하는 메세지가 발행 되었을 때 직접 접근해서 가져감
- ↔ Redis Pubs : 메세지가 발행되면 그 즉시 Redis가 Subscriber에게 밀어주는 방식
- 따라서 Subscriber 가 늘어나면, Redis가 모든 Subscriber에게 메세지를 전달해야되므로 많은 Subscriber 생성 시에는 성능 부하가 생길 수 있다.
Redis의 Pub/Subs 를 사용하면 좋은 케이스