인프런 커뮤니티 질문&답변

GSP님의 프로필 이미지
GSP

작성한 질문수

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

파티션 할당 컨슈머 애플리케이션

custom partitioner 을 이용한 메세지역전 현상 해결방안

해결된 질문

작성

·

298

0

원영님 안녕하세요. 강의 항상 잘듣고있습니다.

다름아니라, CDC커넥터에서 발생된 메시지 처리시

'메세지 역전현상'을 해결하기 위해 테이블의 PK값을 기준으로 특정 파티션으로 데이터가 보내질수 있도록 cusomPartitioner을 구현하고 commitSync로 메시지 순서를 보장하려고 하는데요.

ex)

1번 pk -> 1번 파티션 -> 1번 consumer.

2번 pk -> 2번 파티션 -> 2번 consumer.

이럴 경우에 특정파티션으로 데이터가 쏠리면 스케일아웃을 한 의미가 없어지더라구요. 실시간성이 요구되는 비지니스라 일정 이상의 TPS가 나와야되거든요.

문제 접근방식이 잘못됬는지... 메시지역전문제와 TPS 성능을 위해선 컨슈머에서 다른 도구들을 이용해서 해결해야 하는건지... 확신이 안서더라구요.. 혹시 비슷한 경험을 통해서 위와같은 문제를 해결해보셨다면 조언부탁드리겠습니다.

 

감사합니다!

 

답변 1

1

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

안녕하세요.

일부 파티션에 데이터가 몰릴 경우 파티션을 늘리더라도 컨슈머랙을 해소할 방법이 어려운 것은 실제 업무환경에서도 자주 발생합니다. 사실 모든 분산 처리 시스템이 그러하듯이, 순서의 일관성과 성능 2가지 토끼를 한번에 잡을 방법은 매우 어렵습니다. 그렇기 때문에 작성해주신 것과 같이 TPS(성능)과 순서의 일관성을 잡기 위해서는 TPS를 높이거나 순서의 일관성을 낮추어야 합니다.

위와 같은 상황에서 TPS를 높이는 방법이 가장 현실적으로 보이며, 컨슈머측의 데이터 처리속도를 레코드 단위로 확인하시고, 관련 로직을 튜닝하는 방식으로 TPS를 높여보시면 좋을거 같아요.

GSP님의 프로필 이미지
GSP
질문자

답변 감사드립니다!

GSP님의 프로필 이미지
GSP

작성한 질문수

질문하기