소켓 응용 1/5 · DELIVERY
답이 없을 때,
다시 보내도 될까요?
연결이 끊기면 보낸 메시지가 도착했는지 알 수 없습니다. ACK, 메시지 ID, 재전송과 중복 제거를 한 화면에서 비교합니다.
이 편의 핵심 질문재전송과 중복 실행을 동시에 막으려면?ID로 기억하고
ACK까지 재시도
ACK까지 재시도
나쁜 결과와 안전한 결과를 비교하세요
ACK가 사라진 결제 요청을 재생합니다
보는 순서① 보호 없음 선택→② 단계 실행→③ 실행 횟수 비교
- 1요청
- 2실행
- 3재전송
- 4중복
실험 시작을 누르면 첫 장면부터 움직입니다첫 전송
연결됨PAY 요청
전송 시도1회
실제 결제0회
ID 기록없음
확인 응답기다리는 중
그냥 다시 보내기 시나리오입니다. 실험 시작을 눌러 네 장면을 따라가세요.
시작 전
화면에서 코드로 옮길 때
이 편의 원리 세 가지
send가 성공해도 상대 프로그램의 처리가 끝났다는 뜻은 아닙니다.
새 ID로 다시 보내면 서버는 새로운 작업으로 이해합니다.
처리한 ID와 결과를 저장해야 같은 요청에 같은 답을 돌려줄 수 있습니다.
구현 체크리스트
최소 네 조각으로 시작하세요.
데모의 시각 요소를 실제 프로토콜 필드와 런타임 동작으로 옮기면 됩니다.
- 1메시지 ID비즈니스 작업마다 고유하고 재시도 중에는 변하지 않는 ID
- 2ACK 제한 시간무한 대기하지 않고 재시도를 시작할 기준 시간
- 3중복 제거 저장소ID, 처리 상태와 이전 결과를 함께 보관
- 4재시도 정책최대 횟수, 지수 백오프와 실패 큐
실험을 마쳤다면