Backpressure
Backpressure, alıcının yavaşlama veya duraklama sinyaliyle gelen veri akışını işleme kapasitesine uyarlar.
Backpressure, kapasitesi dolan alıcının kendisinden önceki veri kaynağına daha az veri göndermesini veya bir süre durmasını bildirmesidir. Böylece bir işleme adımı, gelen akışı kendi kapasitesine göre düzenleyebilir.
Kurgusal bir içe aktarmada kaynak saniyede 120 kayıt okurken veritabanı 40 kayıt işler. Hızlar aynı kalır ve kayıt atılmazsa bekleyen iş saniyede 80 kayıt artar. Tampon belleği büyütmek sorunu erteler. Backpressure, işleme tarafı yetişene kadar kaynağın okumayı yavaşlatmasını veya duraklatmasını sağlar.
Duraklama sinyalini kaynağa iletmek
Çalışır durumdaki bir Node.js yazma akışında .write() çağrısının false döndürmesi, yeni veri parçaları göndermeye ara verilmesini bildirir. Önceden iletilen parça sırf bu nedenle tekrar gönderilmez. drain sonrasında yeni parçalar iletilebilir; hatalar ve akışın kapanması ayrıca ele alınmalıdır. Tampon eşiği highWaterMark, toplam bellek kullanımına kesin bir üst sınır koymaz.
Sinyalin işe yaraması için önceki adımlar da buna uymalı ve kendi tamponlarını sınırlamalıdır. Kaynak yavaşlatılamıyorsa uygulama ayrıca kabul edeceği işi sınırlamalı ve aşırı yükte ne yapacağını belirlemelidir. Rate limiting izin verilen istek hızını tanımlar; backpressure veri akışındaki alıcının kabul kapasitesine tepki verir.
Kaynaklar
İlgili terimler
- Mesaj kuyruğuMesaj kuyruğu, bir tüketici işlemek üzere alana kadar mesajları tamponlar.
- İstek hızı sınırlamaİstek hızı sınırlama, bir istemcinin belirli sürede kaç istek gönderebileceğini kuralla sınırlar.
- Cache stampedeCache stampede, eşzamanlı isteklerin önbellekte aynı veriyi bulamayıp aynı pahalı işi tekrar tekrar başlatmasıdır.
- Yarış durumuSonucun, örtüşen erişimlerin zamanlamasına bağlı olarak hatalı çıkması.
- Bellek sızıntısıArtık gerekmeyen belleğin çalışma sırasında gereksiz tutulmaya devam etmesi.
- EşzamanlılıkBirden çok işin işlenme süreleri örtüşebilecek şekilde düzenlenmesi.
Projeniz ASES ile
Projenizi bize anlatın. İlk değerlendirmemizle size dönelim.