안녕하세요. 지식공유자 최상용입니다.
많은 오픈소스에 기여한 경험이 있는 현직 백엔드 개발자입니다.
- Spring Data Mongo Contributor
- querydsl Contributor
- grpc-kotlin Contributor
- ksp Contributor
- mybatis Contributor
Khóa học
Đánh giá khóa học
- Cách giải quyết các vấn đề đồng thời bằng hệ thống kiểm kê
- Hệ thống sự kiện đến trước được phục vụ trước để học thông qua thực hành
- Tìm hiểu giao dịch phân tán qua hệ thống đặt hàng
- Cách giải quyết các vấn đề đồng thời bằng hệ thống kiểm kê
- Hệ thống sự kiện đến trước được phục vụ trước để học thông qua thực hành
Bài viết
Hỏi & Đáp
Optimistic Lock 사용이유
백종인님 안녕하세요.강의에서 사용했던 분산락은 1개의 주문에 대한 처리를 보장하기 위하여 사용하였습니다.A 상품의 재고가 5개가 있다고 가정해보고 1번 주문이 A 상품을 4개구매, 2번 주문이 B 상품을 2개구매 한다고 가정해보겠습니다. 분산락은 1번주문과 2번주문이 각 1번씩 주문되는것을 보장해줍니다. 하지만 A 상품의 재고는 보장해주지 못합니다. -> A 상품이라는 리소스에 여러개의 접근이 '동시에' 가능하기 때문입니다. A상품이라는 리소스에 여러개의 접근이 동시에 가능한것을 방어하기 위하여 optimistic lock 을 활용하였습니다.감사합니다.
- 0
- 2
- 14
Hỏi & Đáp
단일연산
ililil 님 안녕하세요.단일 데이터베이스를 사용한다면 말씀해주신대로 디비의 트랜잭션과 쿼리문을 통해 제어를 할 수 있습니다.다만, update stock quantity = quanity - ? where quantity - ? >= 0 과 같이 where 문이 추가되어야 할 것 같네요. 강의에서는 동시성을 제어하는 여러가지 방법을 소개하기 위해 '재고' 라는 예제를 선택한것이고 재고만을 관리하는 로직이라면 말씀하신대로 트랜잭션과 쿼리를 활용하여 제어를 할 수 있습니다. 다만, 비즈니스 로직이 복잡해져서 유니크키를 사용할 수 없는상황이거나 다수의 데이터소스를 사용하는경우에 락을 사용할 수 있다고 이해해주시면 좋을것 같습니다.감사합니다.
- 0
- 2
- 21
Hỏi & Đáp
쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?
김백곰님 안녕하세요.제가 잠깐 구글로 찾아봤을때 아래와 같은 게시글들이 있네용https://oliveyoung.tech/2023-08-07/async-process-of-coupon-issuance-using-redis/https://oliveyoung.tech/2023-09-18/oliveyoung-coupon-rabbit/한국자료는 위의 자료들이 있을것같고 coupon system design 이라고 검색을 하시면 해외의 글들도 보실 수 있을듯합니다!감사합니다.
- 0
- 2
- 18
Hỏi & Đáp
예시 코드 질문 드립니다
팔꿈님 안녕하세요. 늦어져서 죄송합니다.소스코드를 git 에 올려놓았습니다!https://github.com/sangyongchoi/distributed-transaction섹션별로 브랜치로 나누어놓았습니다.
- 0
- 2
- 31
Hỏi & Đáp
노트에 노션페이지 공유가 없습니다.
아라레님 안녕하세요.좋은말씀 감사합니다. 노션페이지를 접근할 수 있도록 노트에 공유하였습니다!
- 0
- 2
- 22
Hỏi & Đáp
낙관적락vs. 레디스락
최수연님 안녕하세요.비즈니스로직이 어떤지에 따라 성능은 달라질 수 있으므로 정확한값은 서비스별로 성능테스트를 통해 확인 해야할듯합니다.여러개의 데이터를 제어해야 한다면 레디스 락이 좋을듯하고, 1개의 데이터만 제어한다면 낙관적락 + 재시도를 통해 제어해도 좋을 것 같습니다. 감사합니다.
- 0
- 2
- 31
Hỏi & Đáp
안녕하세요. 레디슨 질문있습니다..!!
qheogus55 님 안녕하세요.서비스마다 특성이 너무 다르기에 정답은 없을것 같습니다.제가 고려하는건 아래와 같아요.빠른 성능을 보장해야하면 waitTime 을 짧게 가져갑니다. 반대로 성능보다는 락획득이 중요하다면 waitTime 을 3초정도로 설정하는 편입니다.어떠한경우에도 lock 해제가 안되어야 한다면 leaseTime 을 무한에 가깝도록 설정할듯합니다.감사합니다.
- 0
- 2
- 22
Hỏi & Đáp
2PC에 대해서 궁금해서 질문 드립니다!!
JunSung Hwang 님 안녕하세요.Q1. 혹시 서로 다른 XID를 사용해도 하나의 원자적 트랜잭션으로 동작하는 건가요?A1. 서로 다른 XID 를 사용해도 하나의 원자적 트랜잭션을 사용하지 않습니다. 서로 다른 XID 를 활용하여 2개의 트랜잭션을 start 를 시도합니다.2개의 트랜잭션이 성공적으로 실행되었을 때, 쿼리를 수행합니다.그 후, 2개의 트랜잭션의 commit 을 시도하게 됩니다. 2개의 트랜잭션을 획득한채로 시작하기때문에 가능한것이라고 이해 해주시면 좋을것같습니다.혹시나 이해가 안되셨다면 말씀 부탁드릴게요!감사합니다.
- 0
- 1
- 19
Hỏi & Đáp
예시 코드 질문 드립니다
팔꿈님 안녕하세요.현재는 제공되고 있지않지만 빠른시일내에 업데이트 한 후 댓글 남기도록 하겠습니다.감사합니다.
- 0
- 2
- 31
Hỏi & Đáp
안녕하세요. Orchestration SAGA패턴 질문있습니다.
정인호님 안녕하세요.비동기로 변경을 하더라도 coordinator 에서 전체적인 흐름을 제어하고 있다면 orchestration 방식으로 볼 수 있습니다. 동기, 비동기의 초점보다는 전체적인 흐름을 어떻게 제어하는가? 에 초점을 맞추면 좋을것 같습니다. 감사합니다
- 0
- 2
- 28