Kafka

프로젝트/WebRTC - studyhub

[WebRTC] 채팅 서버 - 채팅 메시지 순서 보장(카프카 순서 보장)

현재 채팅서버는 카프카를 통해 채팅을 구현하였다. 카프카를 통해 채팅 서버가 scale out 하더라도 여러 채팅 서버간 분산되어 있는 메시지를 관리하기 위해서 사용하게 되었다. 하지만 고려 못한 부분이 존재했다. 카프카의 큰 이점 중 하나는 여러 파티션으로 나누어 병렬처리할 수 있다는 점이다. 즉, 많은 메시지가 쌓였을 때, 시스템 리소스(CPU, RAM 등)또는 성능에 따라 Consumer 수를 조정하여 파티션별로 데이터를 읽어오는 병렬처리가 가능하다. 하지만, Kafka는 파티션 내에서만 순서 보장이 될 뿐, 여러 파티션에 대해 병렬 처리하는 경우 순서가 보장될 수 없다. 따라서 이에 대한 해결방법을 고민하였고, 결과적으로 파티션별로 특정 채팅방을 할당하는 방식을 사용하게 되었다. 접근 방법 파티션..

백엔드

Kafka-(de)Serialize 에러, ErrorHandlingDeserializer

WebRTC 프로젝트에서 마이크로서비스 아키텍처 중 채팅 서비스 구현 중 문제가 발생했다. Kafka에 데이터를 넣었으나 직렬화 관련 에러였다. 문제 원인 파악 먼저, 아래 에러 로그에서 직렬화 중 Deserializer에서 문제가 발생했다. 카프카에 객체 클래스를 전송했고 org.springframework.kafka.support.serializer.JsonDeserializer 를 사용하여 역직렬화함을 확인했다. java.lang.IllegalStateException: This error handler cannot process 'SerializationException's directly; please consider configuring an 'ErrorHandlingDeserializer' ..

쩨이호
'Kafka' 태그의 글 목록