Rust'ta, eşzamansız programlama, hemen tamamlanmayabilecek ve uzun sürebilecek işlemleri temsil etmek için gelecekteki sonuçlar kavramına dayanır. Bu geleceklerin yürütülmesini ve tamamlanmasını sağlayacak bir mekanizma gerekir. Bu noktada, eşzamansız yürütücüler devreye girer.
Bu gelecekleri yönetmek ve çalıştırmak için bir eşzamansız yürütücü kullanılır. Gelecekteki görevlerin planlanabileceği, ilerleme durumunun anketle belirlenebileceği ve sonuçlandırılacağı bir ortam sağlar. Bunu, eşzamansız görevlerin karmaşıklıklarını yöneten bir düzenleyici olarak düşünebilirsiniz. Bu sayede kodunuz duyarlı ve verimli kalır.
Rust, her birinin kendine özgü güçlü yönleri ve özellikleri olan çeşitli asenkron yürütücüler sunar.
Eşzamansız yürütücüler
Rust hizmetiniz için yürütücü seçimi, iş yükünün niteliğine büyük ölçüde bağlıdır. Tokio güçlü bir eşzamansız çalışma zamanı olsa da tüm senaryolar için en uygun çözüm olmayabilir.
Öncelikli olarak sıralı işlemler yürüten hizmetlerde, Tokio gibi eşzamansız bir çalışma zamanı kullanmak önemli performans artışları sağlamadan gereksiz ek yük oluşturabilir. Bu gibi durumlarda, tek iş parçacıklı bir yürütücü daha uygun ve hafif bir seçenek olabilir. Bu yaklaşım, kod tabanını basitleştirir ve kaynak tüketimini azaltır.
Çalışan iş parçacıklarını yapılandırma
Doğası gereği eşzamanlı veya eşzamansız işlemleri olan hizmetlerle çalışırken Tokio gibi eşzamansız bir çalışma zamanının özelliklerinden yararlanmak çok önemlidir. Bu senaryolarda performansı en üst düzeye çıkarmak için çalışma zamanını, sistemde bulunan CPU çekirdeklerinin sayısıyla eşleşen sayıda çalışan iş parçacığı kullanacak şekilde yapılandırın. Bu sayede çalışma zamanı, iş yükünü verimli bir şekilde dağıtabilir ve mevcut işlem gücünden tam olarak yararlanabilir.
Çalışan iş parçacıklarını yapılandırırken genel sistem ortamını göz önünde bulundurun. Aynı sanal makinede birden fazla hizmet etkin olarak çalışıyorsa CPU'nun aşırı kullanılmasını önlemek ve tüm etkin işlemler arasında kaynakların adil şekilde dağıtılmasını sağlamak için hizmet başına çalışan iş parçacığı sayısını ayarlayın.
Engelleme işlemleri
Eşzamansız bir çalışma zamanı içindeki çalışan iş parçacıklarının uzun süren veya eşzamanlı işlemler tarafından asla engellenmemesi çok önemlidir. Bir çalışan iş parçacığının engellenmesi, çalışma zamanının gelen görevleri işleme ve yanıt verme yeteneğini ciddi şekilde engelleyebilir.
Bir çalışan iş parçacığında yürütülen bir işlevin engelleme işlemi yapması gerekiyorsa tokio::spawn_blocking kullanın. Bu işlev, engelleme işlemini özellikle bu tür görevler için tasarlanmış ayrı bir iş parçacığı havuzuna aktararak eşzamansız çalışan iş parçacıklarında herhangi bir kesintiyi önler ve hizmetin genel yanıt verme hızını sağlar.