Tek bir faydalı iş birimi tanımlayın
Dahili bir CSV dışa aktarımı için bir istek bir dışa aktarma kaydı oluşturur; bir çalışan sınırlı bir veri kümesi okur, bir çıktı nesnesi yazar ve kaydı tamamlandı olarak işaretler. Maksimum faydalı kapsamı, zaman sınırını ve iptal davranışını tanımlayın. Gerçek müşterilere bildirim gönderemeyecek yalıtılmış bir kuyruk, test veritabanı ve hedef kullanın.
Hesaplama süresini veritabanı ve depolama beklemesinden ayırın. Tek bir iş süresi sayısı bu ayrımları gizler. Tüm dosyayı bellekte oluşturmak, sınırlı grupları akıtmaktan farklı ölçeklenir. Kuyruk iletisini, müşteri verilerini veya bir kimlik bilgisini gömmeden işi tanımlayacak kadar küçük tutun.
Tekrarlanan teslimi tasarım gereği güvenli hale getirin
Denemeleri tek bir mantıksal sonuçla ilişkilendirmek için dayanıklı bir dışa aktarma tanımlayıcısı kullanın. Kalıcı durumda benzersizliği ve atomik bir sahiplik/tamamlama geçişini uygulayın. Bir dışa aktarmanın var olup olmadığını denetleyip ardından ayrı, korumasız bir adımda ekleme yapmak, eşzamanlı denemelerin yarışmasına olanak tanır. Bir nesneyi yayımlamak ve kuyruk iletisini onaylamak da bir hata sınırı oluşturur.
# Illustrative contract, not queue implementation
job_type: export-account-report
logical_result: EXPORT_RECORD_ID
input_scope: AUTHORIZED_ACCOUNT_AND_DATE_RANGE
attempt_limit: REVIEWED_FINITE_LIMIT
completion: ONE_PUBLISHED_RESULT_FOR_THIS_EXPORT
retry: CLASSIFIED_TRANSIENT_FAILURES_ONLY
failed_result: INSPECTABLE_WITHOUT_CUSTOMER_SECRETSCelery, geç onaylamayı idempotent görevlerle ilişkilendirir ve alt süreç sonlandırıldıktan sonra onaylamanın hâlâ gerçekleştiği durumları belgeler. Bir kuyruk seçeneği tam-bir-kez yürütme oluşturmaz. Sisteminizin yeniden teslim semantiğini gözden geçirin ve uygulama sonucunu yeniden denemelere dayanacak şekilde tasarlayın.
Teknik referans: Celery görev davranışı.
Süreçleri artırmadan önce bütçeyi belirleyin
Etkin dışa aktarma başına 300 MiB kullanan varsayımsal bir çalışan için, dört eşzamanlı dışa aktarma, çalışma zamanı ek yükünden önce hâlihazırda yaklaşık 1,200 MiB anlamına gelir. Bunlar kıyaslama değil, planlama girdileridir. Veritabanı bağlantılarını, sorgu belleğini, geçici diski ve çıktı bant genişliğini ekleyin; süreç sayısı yalnızca bir sınırdır.
Bir etkin dışa aktarma ve gerçekçi bir birikimle prova yapın. Aynı API trafiğini yineleyerek ikiye çıkarın. Tamamlanan faydalı dışa aktarmaları, en eski işin yaşını, gecikmeyi, hataları ve ana makine baskısını karşılaştırın. Verim zar zor iyileşirken veritabanı beklemeleri artıyorsa, eşzamanlılığı artırmayı durdurun. Ek CPU bu darboğazı kaldırmayabilir.
Hatanın daha fazla yük oluşturmasını engelleyin
Yeniden denemeden önce hataları sınıflandırın. Geçici bir depolama kesintisi geçici olabilir; yetkisiz bir hesap veya desteklenmeyen bir dışa aktarma biçimi terminal bir hata veya müdahale gerektirir. Sınırlı bir deneme bütçesi ve desteklendiği yerde geri çekilme ve titreme ile gecikmeli yeniden denemeler kullanın. Başarısız işleri hassas alanlar kaldırılmış olarak incelenebilir tutun.
Harici çağrılara zaman aşımı ve genel bir görev bütçesi uygulayın. Bir denemeyi bırakmak, uzak taraftaki yan etkisinin gerçekleşmediğini kanıtlamaz. Zaman aşımına uğrayan bir yayın çıktıyı zaten yazmış olabilir. Körlemesine başka bir sonuç yayınlamak yerine dışa aktarma kimliğiyle uzlaştırın.
Çalışanları dağıtıma ve kurtarmaya dahil edin
Belgelenmiş kapatma davranışını kullanarak eski çalışan üzerinde yeni işleri durdurun. Devam eden işlerin bitmesine izin verin veya bilinen bir son tarih altında güvenle kesintiye uğratın. Çıktı yazıldıktan sonra ancak tamamlanma kaydedilmeden önce bir çökme testi yapın; yedek deneme sonucu kopyalamak yerine tutarlı bulmalıdır.
Çakışan sürümler arasında ileti biçimlerini uyumlu tutun. Yeni bir API, eski bir çalışanın okuyamayacağı bir yük kuyruğa alabilir. Sözleşmeyi sürümleyin veya yeni iletiler görünmeden önce desteklenen tüketicilerin var olmasını sağlayacak şekilde kullanıma sunmayı sıralayın. Bu veritabanı yazarlarını şuraya dahil edin: şema uyumluluk incelemesi.
Değiştirilecek bir sonraki kısıtı seçin
Bir eşzamanlılık ayarı, yeniden deneme ilkesi, görev sözleşmesi ve ölçülmüş durdurma kuralı bırakın. Pahalı dışa aktarmalar küçük işleri geciktiriyorsa, genel sınırı yükseltmeden önce bağımsız bütçelere sahip ayrı kuyrukları düşünün. Gerçekçi herhangi bir dışa aktarma yükünde API gecikmesi zarar görürse, çalışanları ayırmak tek bir paylaşılan ana makineyi büyütmekten daha yararlı olabilir.
Bir değişiklikten sonra aynı iş yükünü tekrarlayın ve karşılaştırmayı saklayın. API ve çalışanlar senaryosu App 2 ve ek belleğin seçime nerede girdiğini açıklar. Bu prosedürler yönetilen bir kuyruk, sınırsız iş veya otomatik ölçeklendirme anlamına gelmez.
Resmî referanslar
Bu makale için belgeler incelendi. Örnekler, bir PrivacyNodes sunucusunda test edilmiş komutlar değil, planlama alıştırmalarıdır. Yüklü sürümünüz için belgeleri kontrol edin.