5. გადახდის სანდოობა: "როგორ გადაწყდა idempotency-ის პრობლემა gRPC-ში?"
ინტერვიუს მიზანია: გადახდები — ყველაზე საშიში სფეროა დუბლიკატებისთვის (Double Spending).
შესაძლო კითხვა:
"გადახდის მოთხოვნა გავიდა gRPC-ით, მაგრამ ვერ მოხერხდა დროის ზღვარის გამო (DEADLINE_EXCEEDED). თანხა გამოიწერა — უცნობია. რა აკეთებს გადახდის მოდული?"
როგორ უპასუხოთ:
"ფინანსური ტრანზაქციის კონტექსტში, ნებისმიერი განმეორებითი მოთხოვნა უნდა ჰქონდეს Idempotency Key:
1. gRPC-ის მოთხოვნის მეტადატაში (metadata=((‘x-idempotency-key’, key_uuid),)) ჩვენ ყოველთვის გადმოვცემდით უნიკალურ ტრანზაქციის გასაღებს.
2. DEADLINE_EXCEEDED-ის მიღებისას, მომხმარებელი უსაფრთხოდ ისევ იგივე გასაღებით სცადა.
3. შეძენის სერვისი, ამ გასაღების არსებობას თავისი მონაცემთა ბაზაში / Redis-ში ამოწმებდა და ან უკვე დამუშავებული ტრანზაქციის სტატუსს აბრუნებდა ან პირველად დამუშავებდა."