REST API-nin iş effektivliyini artırmağa nail olduğunuz vəziyyəti danışın.
sobes.tech Süni İntellekt
AI-dan cavab
Go layihələrimdən birində, REST API-nin səmərəliliyini artırdım, sorğuların işlənməsini optimallaşdıraraq və cavab vaxtını qısaldaraq.
Nə edildi:
-
Keşləşdirmə: tez-tez soruşulan məlumatlar üçün yaddaşda keş əlavə etdim (məsələn, Redis və ya daxili map və mutex istifadə edərək), bu da verilənlər bazasına yükü azaldıb.
-
Paralel işləmə: sorğunun işlənməsi zamanı müstəqil əməliyyatları paralel şəkildə yerinə yetirmək üçün goroutine-lərdən istifadə etdim.
-
Verilənlər bazası sorğularını optimallaşdırma: SQL sorğularını yenidən yazdım, icra vaxtını azaltmaq üçün indekslər əlavə etdim.
-
Context (context.Context) istifadəsi: uzun davam edən sorğuları vaxtında dayandırmaq və resursları azad etmək üçün.
Kodu nümunəsi, keş və goroutine-lərlə:
var cache = make(map[string]string)
var mu sync.RWMutex
func getData(key string) (string, error) {
mu.RLock()
if val, ok := cache[key]; ok {
mu.RUnlock()
return val, nil
}
mu.RUnlock()
// Verilənlər bazasına sorğunun simulasyonu
data := "BD-dən məlumat üçün " + key
mu.Lock()
cache[key] = data
mu.Unlock()
return data, nil
}
func handler(w http.ResponseWriter, r *http.Request) {
key := r.URL.Query().Get("key")
// Paralel məlumat əldə etmə
var wg sync.WaitGroup
var result string
var err error
wg.Add(1)
go func() {
defer wg.Done()
result, err = getData(key)
}()
wg.Wait()
if err != nil {
http.Error(w, "Xəta", http.StatusInternalServerError)
return
}
w.Write([]byte(result))
}
Nəticədə, API-nin cavab vaxtı azaldı və verilənlər bazasına yük azaldı, bu da ümumi xidmət performansını yaxşılaşdırdı.