Sobes.tech
Senior

İmza atdığınız ən çətin və maraqlı vəzifə haqqında, xüsusən memarlıq təcrübəsi ilə əlaqədar, danışın.

sobes.tech Süni İntellekt

AI-dan cavab

Go-da böyük məlumat axınlarını real vaxtda emal etmək üçün paylanmış xidmətin hazırlanması ən çətin və maraqlı tapşırıqlardan biri idi.

Arxitektura baxımından, tapşırıq aşağıdakıları tələb edirdi:

  • Yüksək etibarlılıq və miqyaslana bilmə.
  • Axınlar və goroutine-lər üçün effektiv idarəetmə.
  • Məlumatların sinxronizasiyası və ötürülməsi üçün kanallardan istifadə.

Məlumatların qəbul edilməsi, ilkin filtrasiya, toplama və verilənlər bazasına yazma mərhələlərindən ibarət çoxpilləli arxitektura həyata keçirdim. Yükü balanslaşdırmaq üçün dinamik miqyaslana bilən işçi hovuzu istifadə etdim.

Go-da işçi hovuzunun sadələşdirilmiş kod nümunəsi:

func worker(id int, jobs <-chan Job, results chan<- Result) {
    for job := range jobs {
        // tapşırığın işlənməsi
        result := process(job)
        results <- result
    }
}

func main() {
    jobs := make(chan Job, 100)
    results := make(chan Result, 100)

    for w := 1; w <= 5; w++ {
        go worker(w, jobs, results)
    }

    for j := 1; j <= 20; j++ {
        jobs <- Job{id: j}
    }
    close(jobs)

    for a := 1; a <= 20; a++ {
        <-results
    }
}

Bu təcrübə Go-da paralelliyi daha dərindən anlamağa və yüksək yüklü sistemlər üçün etibarlı arxitektura qurmağa kömək etdi.