Go’da ileri eşzamanlılık desenleri
errgroup, semaforlar, hız sınırlama ve atomik işlemlerle sızıntısız, iptal edilebilir ve yük altında kararlı eşzamanlı sistemler tasarlarsın.
Seviye 401 · 16 ders · 15 pratik lab
Dersler
Yapılandırılmış eşzamanlılık
- errgroup: hata ve iptal birlikte
- Dağıtma ve toplama (fan-out, fan-in)
- Semaforla sınırlı paralellik
- Goroutine sızıntıları ve goleak ile yakalamak
- Kısa görev: aynı anda en çok N iş yapan indirici
Yük altında davranış
- Hız sınırlama: x/time/rate ve jeton kovası
- Geri basınç: kuyruk dolunca ne olur?
- Yeniden deneme ve üstel bekleme
- singleflight ve eşzamanlı önbellek
- Kısa görev: sınırlı, yeniden deneyen ve iptal edilebilir istemci
Düşük düzey eşzamanlılık
- sync/atomic ve atomik türler
- RWMutex, sync.Cond ve sync.Once
- Go bellek modeli: önce-olur ilişkisi
- Kilitlenmeleri teşhis etmek: yığın dökümü ile
- Kısa görev: yarış ve kilitlenme içeren servisi onar
Bitirme
- Bitirme görevi: hız sınırlı, iptal edilebilir iş kuyruğu servisi
Pratik lablar
- errgroup ile ilk hatada durmak: Üç bağımsız denetimi errgroup ile çalıştır; biri hata verince diğerlerinin context üzerinden iptal edildiğini göster.
- Çok kaynağı tek kanalda birleştirmek: Birkaç üretici kanalını tek kanalda birleştir; tüm kaynaklar bitince çıkışı kapat ve iptalde hiçbir gönderici asılı kalmasın.
- Dağıtılan işlerde kısmi sonucu ve hataları toplamak: Yüz adres denetimini işçilere dağıt; başarısızlar tümünü durdurmasın, sonuçlar girdi sırasıyla ve hatalar errors.Join ile birleşik dönsün.
- Kanal semaforuyla eşzamanlılığı sınırlamak: Tamponlu kanalı semafor gibi kullanarak aynı anda en çok beş işin çalışmasını sağla ve sınırı testle doğrula.
- Sızan goroutine'i goleak ile yakalamak: Zaman aşımından sonra tamponsuz kanala yazmaya çalışırken asılı kalan goroutine'i goleak ile yakala ve düzelt.
- En çok N iş çalıştıran indirici: errgroup.SetLimit ile sınırlı, iptal edilebilir sahte indirici yaz; ilk kalıcı hatada dursun, geçici dosyaları temizlesin ve sızıntı testini geçsin.
- İstekleri hız sınırlayıcıdan geçirmek: x/time/rate ile saniyede on istek ve beşlik patlama sınırı uygula; Wait çağrısının context iptaline uyduğunu test et.
- Dolu kuyrukta ne olacağına karar vermek: Sınırsız büyüyen iş kuyruğunu sınırlı yap; doluyken yeni işi reddet, reddedilenleri say ve bellek kullanımının sabit kaldığını ölç.
- İstemci başına jeton kovası yönetmek: Her istemciye ayrı sınırlayıcı tut; kullanılmayanları süre sonunda temizle ve milyon farklı istemcide belleğin şişmediğini göster.
- Artan beklemeli yeniden deneme: Geçici hatalarda üstel bekleme ve rastgele sapmayla yeniden deneyen yardımcıyı yaz; kalıcı hatada hemen dur.
- Önbellek yığılmasını singleflight ile önlemek: Aynı anahtar için aynı anda gelen yüz isteğin arka uca tek çağrı yaptığını singleflight ile sağla ve çağrı sayacıyla kanıtla.
- Sınırlı, yeniden deneyen ve iptal edilebilir istemci: Hız sınırı, yeniden deneme bütçesi ve toplam süre sınırını birleştiren istemciyi yaz; arka uç çöktüğünde deneme fırtınası oluşmadığını testle göster.
- Tek seferlik kurulum için sync.Once: Her çağrıda yeniden yüklenen ayarı sync.Once ile tek sefere indir ve eşzamanlı ilk çağrılarda tek yükleme yapıldığını test et.
- Ayarı atomik işaretçiyle değiştirmek: Okuyucuları kilitlemeden ayarı yenilemek için atomic.Pointer kullan; okuyucuların hiçbir zaman yarım ayar görmediğini -race ile göster.
- Kilitlenmeyi yığın dökümünden teşhis etmek: Takılan hizmetin goroutine dökümünden kilit sırası çakışmasını ve yarışı bul; tutarlı kilit sırası ve sync.Cond düzeltmesiyle yük testini geç.
Kurs hakkında
errgroup, semaforlar, hız sınırlama ve atomik işlemlerle sızıntısız, iptal edilebilir ve yük altında kararlı eşzamanlı sistemler tasarlarsın.
Ne öğreneceksin
- Yapılandırılmış eşzamanlılık
- Yük altında davranış
- Düşük düzey eşzamanlılık
- Bitirme
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.