Azaltma düzeni
Bir uygulama örneği, tek bir kiracı veya hizmetin tamamı tarafından kullanılan kaynakların tüketimini denetleyin. Bu, istekteki artış kaynaklar üzerinde aşırı yüklemeye neden olduğunda bile sistemin çalışmaya ve hizmet düzeyi sözleşmelerini karşılamaya devam etmesine olanak sağlar.
Bağlam ve sorun
Bir bulut uygulaması üzerindeki yük genellikle etkin kullanıcı sayısı ve bu kullanıcıların gerçekleştirdiği etkinliklerin türüne bağlı olarak zaman içinde değişir. Örneğin, iş saatlerinde daha fazla kullanıcı etkin olabilir veya sistemin her ay sonunda yoğun işlem yükü oluşturan analizler yapması gerekebilir. Beklenmeyen ve ani etkinlik artışları da olabilir. Sistemin işleme gereksinimleri kullanılabilir kaynak kapasitesini aşıyorsa, sistem performansı düşer ve hatta sistem başarısız olabilir. Sistem üzerinde anlaşılan bir hizmet düzeyini karşılaması gerekiyorsa, bu tür hatalar kabul edilemez olabilir.
Uygulamanın iş hedeflerine bağlı olarak, bulutta değişen yükü işlemek için birçok strateji bulunur. Bir strateji, sağlanan kaynakları herhangi bir zamanda kullanıcı ihtiyaçlarıyla eşleştirmek için otomatik ölçeklendirme kullanmaktır. Bu çalıştırma maliyetlerini en iyi duruma getirirken tutarlı olarak kullanıcı talebini karşılama olasılığına sahiptir. Ancak otomatik ölçeklendirme ek kaynakların otomatik olarak sağlanmasını tetikleyebilse de, bu sağlama hemen gerçekleştirilmez. Talep hızla artarsa, bir kaynak eksikliği yaşanan bir zaman penceresi olabilir.
Çözüm
Alternatif bir strateji, uygulamaların kaynakları yalnızca belirli bir sınıra kadar kullanmasına izin verip bu sınıra ulaşıldığında kısıtlamaktır. Sistem, kullanım eşiği aştığında bir veya daha fazla kullanıcıdan gelen istekleri kısıtlayabilmek için kaynakları nasıl kullandığını izlemelidir. Bu, sistemin çalışmaya ve mevcut hizmet düzeyi sözleşmelerini (SLA) karşılamaya devam etmesine olanak sağlar. Kaynak kullanımını izleme hakkında daha fazla bilgi için bkz. İzleme ve Telemetri Kılavuzu.
Sistem aşağıdakiler dahil birkaç azaltma stratejisi uygulayabilir:
Sistem API’lerine belirli bir süre boyunca saniyede n kereden fazla erişen tek bir kullanıcıdan gelen istekleri reddetme. Bu, sistemin bir uygulamayı çalıştıran her kiracı veya kullanıcı için kaynak kullanımını ölçmesini gerektirir. Daha fazla bilgi için bkz. Hizmet Ölçümü Kılavuzu.
Temel hizmetlerin yeterli kaynaklar ile etkilenmeden çalışabilmesi için seçili temel olmayan hizmetleri devre dışı bırakma veya düzeyini düşürme. Örneğin uygulama video çıkışının akışını yapıyorsa, daha düşük bir çözünürlüğe geçiş yapabilir.
Etkinlik hacmini düzenlemek için yük dengeleme kullanma ( bu yaklaşım Kuyruk Tabanlı Yük Dengeleme düzeni bölümünde daha ayrıntılı bir şekilde ele alınmıştır). Çok kiracılı bir ortamda, bu yaklaşım her kiracı için performansı azaltır. Sistemin farklı SLA’lara sahip bir kiracı karışımını desteklemesi gerekiyorsa, yüksek değerli kiracılar için iş hemen gerçekleştirilebilir. Diğer kiracılar için istekler bekletilerek kapsam yükü azaldığında işlenebilir. Bu yaklaşımı uygulamak için Öncelikli Kuyruk düzeni kullanılabilir.
Düşük öncelikli uygulama veya kiracılar adına gerçekleştirilen işlemleri erteleme. Bu işlemler kiracıya sistemin meşgul olduğunu ve işlerin daha sonra yeniden denenmesi gerektiğini bildiren bir özel durum oluşturularak askıya alınabilir veya sınırlandırılabilir.
Şekilde, üç özellik kullanan uygulamalar için zamana karşı kaynak kullanımı (bellek, CPU, bant genişliği ve diğer etkenlerin birleşimi) için bir alan gösterilmektedir. Özellik, belirli bir görev kümesini gerçekleştiren bir bileşen, karmaşık bir hesaplama gerçekleştiren bir kod parçası veya bellek için önbellek gibi bir hizmet sağlayan bir öğe gibi bir işlev alanıdır. Bu özellikler A, B ve C olarak etiketlenmiştir.

Bir özellik için çizginin hemen altındaki alan, uygulamalar bu özelliği çağırdığında kullanılan kaynakları gösterir. Örneğin, Özellik A için çizginin altındaki alan Özellik A’yı kullanan uygulamalar tarafından kullanılan kaynakları ve Özellik A ile Özellik B için çizgilerin arasındaki alan ise Özellik B’yi çağıran uygulamalar tarafından kullanılan kaynakları gösterir. Her özellik için alanların toplamı sistem için toplam kaynak kullanımını gösterir.
Önceki şekilde işlemleri ertelemenin etkileri gösterilmektedir. T1 zamanından hemen önce, bu özellikleri kullanan tüm uygulamalar için ayrılan toplam kaynaklar bir eşiğe ulaşır (kaynak kullanımı sınırı). Bu noktada, uygulamaların kullanılabilir kaynakları tüketme tehlikesi vardır. Sistemde, Özellik B Özellik A veya Özellik C’den daha az kritik olduğundan geçici olarak devre dışı bırakılır ve kullandığı kaynaklar serbest bırakılır. T1 ve T2 zamanları arasında, Özellik A ve Özellik C’yi kullanan uygulamalar normal olarak çalışmaya devam eder. Sonuç olarak, T2 zamanında Özellik B’yi etkinleştirmek için yeterli kapasite olana kadar bu iki özelliğin kaynak kullanımı azaltılır.
Otomatik ölçeklendirme ve kısıtlama yaklaşımları uygulamaları yanıt verir durumda ve SLA’lar dahilinde tutmaya yardımcı olmak için birleştirilebilir. Talebin yüksek kalması bekleniyorsa, azaltma, sistem ölçeği ölçeklendirirken geçici bir çözüm sağlar. Bu noktada sistemin tüm işlevleri geri yüklenebilir.
Sonraki şekilde, bir sistemde zamana karşı çalışan tüm uygulamalar tarafından genel kaynak kullanımı gösterilmekte ve kısıtlamanın otomatik ölçeklemeyle nasıl birleştirileceği açıklanmaktadır.

T1 zamanında, kaynak kullanımı yumuşak sınırını belirten eşiğe ulaşılmıştır. Bu noktada, sistem ölçeği ölçeklendirmeye başlayabilir. Ancak, yeni kaynaklar yeterince hızlı bir şekilde kullanılabilir hale gelmıyorsa, mevcut kaynaklar tükenebilir ve sistem başarısız olabilir. Bunun gerçekleşmesini önlemek için, sistem daha önce açıklandığı şekilde geçici olarak kısıtlanır. Otomatik ölçeklendirme tamamlandığında ve ek kaynaklar kullanılabilir olduğunda, kısıtlama gevşetilebilir.
Sorunlar ve dikkat edilmesi gerekenler
Bu düzeni nasıl uygulayacağınıza karar verirken aşağıdaki noktaları dikkate almalısınız:
Bir uygulamayı kısıtlamak ve kullanılan strateji bir sistemin tüm tasarımını etkileyen mimari bir karardır. Bir sistem uygulandıktan sonra kısıtlama eklemek kolay olmadığından, kısıtlama uygulama tasarım sürecinin ilk zamanlarında değerlendirilmelidir.
Kısıtlama hızlı bir şekilde gerçekleştirilmelidir. Sistemin bir etkinlik artışını algılaması ve buna uygun şekilde tepki vermesi gerekir. Sistemin ayrıca yük azaldıktan sonra hızlı bir şekilde özgün durumuna dönebilmesi gerekir. Bu, uygun performans verilerinin sürekli olarak yakalanması ve izlenmesini gerektirir.
Bir hizmetin bir kullanıcı isteğini geçici olarak reddetmesi gerekiyorsa, istemci uygulamasının bir işlemin gerçekleştirilmesinin kısıtlama nedeniyle reddedildiğini anlaması için hizmetin belirli bir hata kodu döndürmesi gerekir. İstemci uygulaması isteği yeniden denemeden önce bir süre bekleyebilir.
Bir sistem otomatik olarak ölçeklendirilirken kısıtlama geçici bir önlem olarak kullanılabilir. Bazı durumlarda, etkinlik artışı ani bir şekilde gerçekleştiyse ve uzun sürmesi beklenmiyorsa, ölçeklendirmek çalışma maliyetlerini önemli ölçüde artırabileceğinden kısıtlama uygulamak daha iyi bir çözümdür.
Daraltma, sistem otomatik olarak ölçeklendirilirken geçici bir ölçü olarak kullanılıyorsa ve kaynak talepleri çok çabuk büyütürse, sistem, kısıtlanmış modda çalışırken bile çalışmaya devam edemeyebilir. Bu kabul edilebilir değilse, daha geniş kapasite yedekleri tutmayı ve daha agresif otomatik ölçeklendirme yapılandırmayı göz önünde bulundurun.
Bu düzenin kullanılacağı durumlar
Bu düzeni kullanarak:
Bir sistemin hizmet düzeyi sözleşmelerini karşılamaya devam ettiğinden emin olmak için.
Tek bir kiracının bir uygulama tarafından sağlanan kaynakların tamamını kullanmasını önlemek için.
Etkinlik artışlarını işlemek için.
Bir sistemin çalışır duruma kalması için gereken en fazla kaynak düzeylerini sınırlandırarak sistemin maliyetini en iyi duruma getirmeye yardımcı olma.
Örnek
Son şekilde, kısıtlamanın çok kiracılı bir sistemde nasıl uygulanabileceği gösterilmektedir. Her bir kiracı kuruluştan kullanıcılar anket doldurup göndermek üzere bulutta barındırılan bir uygulamaya erişir. Uygulama bu kullanıcıların istekleri uygulamaya gönderme hızını izleyen bir izleme içerir.
Bir kiracıdan gelen kullanıcıların diğer tüm kullanıcılar için uygulamanın yanıt verme becerisini veya kullanılabilirliğini etkilemesini önlemek için, herhangi bir kiracının gönderebildiği kullanıcı başına saniyede istek sayısına yönelik bir sınır uygulanır. Uygulama bu sınırı aşan istekleri engeller.

Sonraki adımlar
Bu düzenin uygulanması sırasında aşağıdaki kılavuz de geçerli olabilir:
- İzleme ve Telemetri Kılavuzu. Kısıtlama bir hizmetin ne kadar yoğun olarak kullanıldığı hakkında bilgi toplamaya bağlıdır. Özel izleme bilgilerini oluşturma ve yakalama açıklanmalıdır.
- Hizmet Ölçümü Kılavuzu. Hizmetlerin nasıl kullanıldığı hakkında bilgi edinmek için hizmet kullanımının nasıl ölçülmesi gerektiğini açıklar. Bu bilgiler bir hizmetin nasıl kısıtlanacağını belirlerken yararlı olabilir.
- Otomatik ölçeklendirme Kılavuzu. Kısıtlama, bit sistem otomatik ölçeklendirilirken bir ara önlem olarak veya sistemin otomatik ölçeklendirilmesi gereksinimini kaldırmak için kullanılabilir. Otomatik ölçeklendirme stratejileri hakkında bilgiler içerir.
İlgili yönergeler
Bu düzeni uygularken aşağıdaki desenler de uygun olabilir:
- Kuyruk tabanlı yük dengeleme kalıbı. Kuyruk tabanlı yük dengeleme, kısıtlama uygulama için sık kullanılan bir mekanizmadır. Kuyruk, bir uygulama tarafından gönderilen isteklerin hizmete teslim edilme hızını düzenlemeye yardımcı olan bir arabellek olarak çalışabilir.
- Öncelikli sıra stili. Sistemler kritik veya yüksek değerli uygulamalar için performansı korurken daha az önemli uygulamalar için performansı azaltarak kuyruğa almayı kısıtlama stratejisinin bir parçası olarak kullanabilir.