Junior — Middle
Əməliyyatların mənfi nəticəsiz təkrarlanmasını necə təmin etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Əməliyyatların təkrarlanması üçün, onların idempotent olması lazımdır. Bu, eyni parametrlərlə əməliyyatın ikinci çağırışının ilk uğurlu icrasından sonra sistem vəziyyətini dəyişməməsi deməkdir.
Bunun üçün:
- Unikal sorğu identifikatorlarından (məsələn, UUID) istifadə etmək və onları saxlamaq, beləliklə, təkrar sorğu alındıqda, sadəcə əvvəlki nəticəni geri qaytarmaq olar.
- Əməliyyatları belə tərtib etmək ki, artıq tətbiq olunubsa, vəziyyəti dəyişməsin (məsələn, dəyəri sabit bir dəyərə yeniləmək, artırmaq yerinə).
- Verilənlər bazalarında tranzaksiya mexanizmlərindən istifadə etmək və qeyd mövcuddurmu yoxlamaq.
Go dilində nümunə:
var processedRequests = make(map[string]bool)
func processRequest(id string) string {
if processedRequests[id] {
return "Sorğu artıq işlənib"
}
// Əməliyyatı yerinə yetir
processedRequests[id] = true
return "Sorğu uğurla işlənib"
}
Bu şəkildə, eyni id ilə ikinci çağırış, vəziyyəti yenidən dəyişməyəcək.