Simple Message Queue (formerly MNS) hizmeti, temel kaynaklar üzerinde aşırı yük oluşmasını önlemek amacıyla kısıtlama eşiğini aşan isteklere bir kısıtlama ilkesi uygular. Kısıtlama ilkesini anlamak, mesaj gönderme ve alma sıklığını makul şekilde planlamanıza ve kısıtlama tetiklendiğinde uygun adımları atmanıza yardımcı olur.
Kısıtlama davranışı
Trafik kısıtlama eşiğine yaklaştığında veya bu eşige ulaştığında sunucu, gerçek zamanlı kaynak kullanımına bağlı olarak kısıtlama eşiğini otomatik ve esnek biçimde ayarlar. Çoğu senaryoda bu mekanizma, kullanıcılar fark etmeden daha yüksek eşzamanlı istekleri dinamik olarak destekler. Geçici kısıtlama tetiklendiğinde (örneğin ani trafik artışları veya küme kaynak darboğazları nedeniyle) sistem, otomatik ölçeklendirme tamamlandıktan sonra trafik işleme kapasitesini geri kazandırır ve kısıtlama eşiğini eşzamanlı olarak yükseltir.
Kısıtlama tetiklendiğinde sistem bir geri basınç (backpressure) mekanizması devreye sokar. Eşiği aşan istekler sunucuda kısa süre bekletilir ve ardından 429 (TooManyRequests) hatası döndürülür. Bekletme süresi sunucu tarafından gerçek zamanlı yük durumuna göre dinamik olarak ayarlanır; tipik olarak 10 ile 500 milisaniye arasında değişir ve maksimum 5 saniyeye kadar çıkabilir. Bu yaklaşım, sistemin genel performansını ve kararlılığını etkileyebilecek aşırı yüklenmesini engeller.
Hata kodu
Kısıtlama ilkesi tetiklendiğinde Simple Message Queue (formerly MNS) sunucusu aşağıdaki hata kodu bilgilerini döndürür.
|
|
|
|
|
|
|
|
Kısıtlama eşikleri
Kuyruk tüketim modunda anormal tüketim kısıtlama ilkesi
Standart kuyruk tüketim deseninde istemci, bir mesajı başarıyla işledikten sonra mesajı silmek için sunucuya bir istek göndermelidir. Bir istemci "mesaj alıp silme isteği göndermeme" şeklinde standart dışı davranışı tekrarladığında sistem bunu anormal tüketim olarak işaretler ve sistem kararlılığını sağlamak üzere bir kısıtlama mekanizması tetikler. Kısıtlama uygulandıktan sonra istemcinin yeni mesaj alma hızı önemli ölçüde azalır.
Aşağıdaki koşullardan herhangi biri gerçekleştiğinde kısıtlama tetiklenir:
Süre: Anormal tüketim 30 dakikadan uzun sürer.
Mesaj sayısı: Alınan ancak silinmeyen mesajların kümülatif sayısı 5.000'e ulaşır.
Trafik hızı: Alınan ancak silinmeyen mesajların anlık hızı 1.000 TPS'yi aşar.
Yüksek trafikli istekler için kısıtlama ilkesi
Alibaba Cloud hesabı başına ve bölge başına varsayılan kısıtlama eşiği 20.000 TPS'dir. Trafiğiniz 20.000 TPS'yi aşarsa bölge başına maksimum TPS değerini artırmak için Quota Center console üzerinden başvuru yapın. Ayrıntılı adımlar için bkz. Submit an application to increase a quota.
İstek sayısı kuralları:
Her API çağrısı bir istek olarak sayılır.
Toplu gönderim senaryolarında TPS hesaplaması: Bir kuyruğa karşı BatchSendMessage işlemi çağırdığınızda BatchSendMessage TPS = saniyedeki gerçek BatchSendMessage isteği sayısı × istek başına mesaj sayısı. Örneğin BatchSendMessage saniyede 100 kez çağrılıyorsa ve her çağrı 10 mesaj içeriyorsa tek bir kuyruk tarafından tüketilen TPS = 100 × 10 = 1.000 olur.
Toplu tüketim senaryolarında TPS hesaplaması: Bir kuyruğa karşı BatchReceiveMessage işlemi çağırdığınızda BatchReceiveMessage TPS = saniyedeki gerçek BatchReceiveMessage isteği sayısı (toplu iş başına mesaj sayısından bağımsızdır). Örneğin BatchReceiveMessage saniyede 100 kez çağrılıyorsa ve her çağrı 10 mesaj içeriyorsa tek bir kuyruk tarafından tüketilen TPS = 100 olur.
Kısıtlama etkisini önleyin
Kısıtlama ilkesinin işiniz üzerindeki etkisini önlemek için aşağıdaki iki hususa odaklanın:
Trafiği dikkatle planlayın ve yoğun trafiği önceden bildirin: Büyük ölçekli trafik artışı öngörüyorsanız ve TPS Quota Center console üzerinden başvurabileceğiniz maksimum değeri aşıyorsa daha fazla kaynak ayırtmak ve kısıtlamanın tetiklenmesini önlemek amacıyla teknik destek ile iletişime geçmek için submit a ticket seçeneğini kullanın.
İzleme ve uyarı: Simple Message Queue (formerly MNS) hizmetine Create an alert rule entegrasyonu yapmanızı öneririz. Kısıtlama eşiğine ne zaman yaklaşıldığını tespit etmek için CloudMonitor konsolunda (CloudMonitor console > Cloud Service Monitoring > Message Service MNS) her kuyruk veya konunun gerçek zamanlı TPS kullanımını görüntüleyin.