Sobes.tech
Junior — Middle

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:

  1. Ö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.

  2. Paralel İşleme: Bağımsız işlemleri paralel olarak yürütmek için goroutine’ler kullandım.

  3. Veritabanı sorgularını optimize etme: SQL sorgularını yeniden yazdım, yürütme süresini azaltmak için indeksler ekledim.

  4. 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ı.