멱등성 — 두 번 눌러도 한 번만 결제되게 · 트랜잭션 아웃박스로 주문과 이벤트를 지킨다 · 测验
트랜잭션 아웃박스로 주문과 이벤트를 지킨다 확인
6道题. 完成作答后会显示正确答案和解析。
주문만 커밋한 뒤 이벤트를 보내기 전에 죽으면?
- DB가 자동으로 이벤트를 발행한다
- 주문은 있지만 다른 서비스가 이벤트를 받지 못할 수 있다
- 주문이 반드시 자동 롤백된다
- 소비자의 합계가 두 배가 된다
outbox 행을 주문과 같은 트랜잭션에 넣는 이유는?
- 네트워크를 한 번만 사용하려고
- 소비자가 중복을 절대 받지 않게 하려고
- 주문과 발행 의도를 함께 남기거나 함께 롤백하려고
- 모든 이벤트 순서를 전역으로 고정하려고
publish 성공 직후 sent 표시 전에 죽으면?
- 반드시 이벤트를 잃는다
- DB가 publish 결과를 알아서 기록한다
- 재전송은 원리적으로 불가능하다
- 이벤트가 재전송될 수 있다
소비자가 consumed만 먼저 커밋하고 합계 반영 전에 죽으면?
- 중복으로 인식해 효과가 영영 누락될 수 있다
- 합계가 반드시 두 배가 된다
- 이벤트 id가 자동으로 바뀐다
- 아무 위험이 없다
같은 주문 id로 다른 금액이 들어오면 이 계약은?
- 기존 주문 금액을 조용히 바꾼다
- 충돌을 거절한다
- 새 이벤트를 같은 id로 추가한다
- 항상 기존 성공이라고 답한다
이 실습만으로 해결되지 않는 운영 문제는?
- 한 DB 트랜잭션의 롤백
- 소비자의 동일 id 중복 제거
- 다중 발행기 간 claim과 lease 관리
- 미전송 행의 제한된 배치 조회