KIMSIYOUNG / Notebook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

개발 연습장

OSIV 관련

MSA transaction example

  • TCC(Try-Confirm-Cancel)
    • TCC 모델을 활용해서, 분산된 시스템간의 트랜잭션을 HTTP 요청을 통해 제어한다.
    • 기본적으로 요청을 여러번 쏘는 형태로 사용한다.
      • 다른 서버에 try 요청(보내고 싶은 서버들에게)
      • 모든 요청에 대한 응답이 정상적이라면 로직 수행
      • 로직 이후 confirm 요청을 통해 기존 try를 통해 예약해놓은 부분을 실제로 반영하기.
    • 의문 1. 로직은 정상적으로 다 수행했는데, confirm 요청에서 예외가 난다면?
      • kafka와 같은 툴을 사용하여, event queue 기반으로 이를 처리하는 방법
      • 항상 롤백되는 것이 맞을까? 적절한 상황을 생각해보고, 롤백이 아니라면 event queue를 적절한 주기로 재실행하는 것도 방법이 될 수 있음.
      • 그럼에도 불구하고, event queue에 중복된 데이터 발생으로 항상 깔끔하게 해결되는 것은 아니다.
    • 의문 2. 10대의 서버중 7대까지 정상 응답이 왔는데, 8번째 서버에서 예외가 난다면 어떻게 처리하는가?
      • 예외의 종류
        • 복구 불가능 -> 예외 발생 및 marking 하는 방법
        • 복구 가능 -> RetryTemplate/Kafka 등

About


Languages

Language:Java 99.7%Language:HTML 0.3%