REST API'nin çalışma verimliliğini artırmayı başardığınız bir durumu anlatın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde bir projede, REST API’nin verimliliğini artırdım, istekleri işleme süresini optimize ederek ve yanıt süresini kısaltarak.
Yapılanlar:
-
Önbellekleme: Sıkça talep edilen veriler için in-memory önbellek (örneğin, Redis veya gömülü map ve mutex kullanarak) ekledim, böylece veritabanına olan yükü azalttım.
-
Paralel İşleme: Bağımsız işlemleri paralel olarak yürütmek için goroutine’ler kullandım.
-
Veritabanı sorgularını optimize etme: SQL sorgularını yeniden yazdım, yürütme süresini azaltmak için indeksler ekledim.
-
Context (context.Context) kullanımı: Uzun süren sorguları zamanında iptal etmek ve kaynakları serbest bırakmak için.
Örnek kod, önbellekleme ve goroutine kullanımıyla:
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()
// Veritabanı sorgusunun simülasyonu
data := "Veri from DB for " + 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 veri alma
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, "Hata", http.StatusInternalServerError)
return
}
w.Write([]byte(result))
}
Sonuç olarak, API’nin yanıt süresi azaldı ve veritabanına olan yük hafifledi, bu da servisin genel performansını artırdı.