-
Notifications
You must be signed in to change notification settings - Fork 0
AI 채팅 필터 적용에 따른 채팅 지연 문제
gamgyul163 edited this page Dec 3, 2024
·
1 revision
- 지연 발생: 클로바 스튜디오 API 요청 및 응답 시간이 채팅 전송 지연의 주요 원인.
- 채팅 순서 보장 불가: API 응답 시간의 불규칙성으로 인해 순서가 엉킬 수 있음.
-
프로세스
-
UUID 생성 및 등록:
- 채팅 메시지마다 고유의 UUID를 생성.
- Redis의
chatCache
에 키로 UUID를, 값으로null
을 저장. - Redis의
chatQueue
에 메시지를 순서대로 등록.
-
클로바 API 호출:
- 비동기로 클로바 API 요청.
- 응답이 도착하면
chatCache
에 결과를 업데이트.
-
Flush 처리:
-
chatQueue
의 프론트 메시지부터 순서대로chatCache
를 확인. - 값이 있는 메시지를 모두 처리하고 전송.
- 값이 없는 메시지를 만나면 flush 종료.
-
-
UUID 생성 및 등록:
-
장점
- 채팅 순서가 보장됨.
- 클라이언트에 채팅 필터링 결과가 적용된 상태로 노출됨
-
단점
- 클로바 API 응답까지 기다려야 하므로 지연 문제 해결이 어려움.
-
프로세스
-
채팅 즉시 전송:
- 사용자가 채팅을 입력하면, 클로바 API 응답을 기다리지 않고 바로 발송.
-
필터링 결과 별도 전송:
- 클로바 API 응답 도착 시, Redis를 통해 별도의 이벤트로 필터링 결과를 전달.
-
Redis Pub/Sub 구조:
-
:chat
채널: 즉시 전송되는 채팅 메시지. -
:filter
채널: 클로바 API 응답 결과.
-
-
채팅 즉시 전송:
-
장점
- 채팅은 즉시 전송되므로 사용자 경험 개선.
- 필터링 결과는 별도로 처리되어 순서 문제가 없음.
-
단점
- 사용자 채팅이 필터링되지 않은 상태로 먼저 노출될 수 있음.
- 신규 메시지는 수정2와 같이 처리하여 채팅이 즉시 전송되도록 하였음
- 채팅 저장 시에는 순서 + 필터링 결과가 함께 저장되어야 하므로 수정1의 방식을 이용