chore: trivial - 1

최혜성·2024년 1월 23일
0

요새 실습동안 할게 갑자기 많아지기도 했고, DB에 강도가 들어서 비트코인 내놓으라 하니
MSA 관련해서 진행할 시간이 안난다.
언젠간 마무리 할 수 있겠지? 구상은 다 해놨는데.

  • 대충 그동안 잠깐 구상해둔거
    현재 구조상 같은 서버내에서만 Kafka를 통해 저장 요청 보내고 받는 과정만 있을뿐 다른 서버와는 소통하지 X.

Revervation -> Event 시트 저장해줘 요청 보내자마자 저장해서 결과까지 리턴해주는 과정인데,
시트 저장할때 Event가 Kafka로 Event Sheet save 요청 보내고 그걸 다시 Event가 받는 방식으로 동작함.

이럴거면 Kafka 쓰는게 의미가 없을듯 하여 좀더 구상해봤음.

  • 삭제.
    삭제시 Event도 알아야 하고 Reservation도 알아야 하고 옆집 강아지 복실이도 알아야함

따라서 Event API에서 해당 이벤트가 제거되면 카프카로 삭제됐다고 메시지를 보내서 Reservation도 해당 메시지를 받고 관련된 좌석 데이터를 만료처리등을 해야함.

이때, 삭제 요청이 나갔으나, 네트워크 지연 문제등으로 삭제 요청 이후 다시 좌석 등록 요청이 온 경우?
ex)
1. 나 좌석 예약 해줘 -> OK -> 예약 완료됐는데 저장 요청은 보내놨어
2. 해당 이벤트 돈없어서 못열어 취소해줘 -> OK -> 지우긴 했는데 예약 테이블은 갱신될려면 좀 걸려

이때 2요청이 먼저 도달하고 1요청이 도달하면 DB에서는 문제가 발생할 수 있다.
물론 없는 테이블에 insert를 날리니 콘솔만 좀 아프고 말수도 있지만, reservation에는 없는 행사의 예약 정보가 기록될 수 있다. reservation은 사실상 기록을 담는 테이블이니까

따라서, kafka 내에서 순서를 보장해두거나, redis에다 얘 지워졌어 라고 적어두면 되겠다.

일단 지금 해야하는것들 잘 마무리하고 시간 되면 얘도 잘 마무리 해보는걸로...

profile
KRW 채굴기

0개의 댓글