데브허브 | DEVHUB | Does Kafka Guarantee Message Ordering? 🤔 Microservices Fix Inside !Does Kafka Guarantee Message Ordering? 🤔 Microservices Fix Inside !
- Kafka는 마이크로서비스 아키텍처에서 서비스 간 통신을 위해 사용되며, 메시지 순서 보장이 중요한 고려 사항임 🧩
- Kafka는 특정 파티션 내에서는 메시지 순서를 보장하지만, 여러 파티션에 걸쳐서는 순서를 보장하지 않음 🚚
- 파티션 키를 사용하면 특정 키에 해당하는 모든 이벤트가 동일한 파티션으로 라우팅되어 순서를 유지할 수 있음 🔑
- 여러 파티션을 사용할 경우 기본적으로 라운드 로빈 방식으로 이벤트가 분산되어 순서가 섞일 수 있음 🔄
- 소비자(Consumer)가 병렬로 메시지를 처리하면 Kafka가 순서를 지켜 전달하더라도 소비자 측에서 순서가 깨질 수 있음 ⚙️
- 파티션 키를 사용하여 메시지를 특정 파티션에 할당하면 순서를 유지할 수 있지만, 소비자가 병렬 처리하는 경우 문제가 발생할 수 있음 🎯
- 소비자가 메시지를 병렬로 처리할 때 순서가 중요한 경우,
max.poll.records를 1로 설정하여 한 번에 하나의 메시지만 처리하도록 할 수 있지만 성능 저하가 발생할 수 있음 🐌
- 대량의 데이터를 처리할 때 파티션 키를 사용하지 않으면 여러 파티션으로 분산되어 순서가 보장되지 않음 흩뿌려짐 🎈
- 파티션 키를 사용하면 대량의 데이터도 특정 파티션으로 전송되어 순서대로 처리할 수 있음 묶음 📦
- 소비자 측에서 병렬 처리로 인해 순서가 섞이는 문제를 해결하기 위해
max.poll.records를 1로 설정하는 것은 성능에 영향을 줄 수 있으므로 신중하게 고려해야 함 🤔