Ölçeklendirmeyi ve bölümleyi iyileştirmeye yönelik öneriler

Bu Azure Well-Architected Framework Performans Verimliliği denetim listesi önerisi için geçerlidir:

PE:05 Ölçeklendirmeyi ve bölümleyi iyileştirme. Güvenilir ve denetimli ölçeklendirme ve bölümleme dahil edin. İş yükünün ölçek birimi tasarımı, ölçeklendirme ve bölümleme stratejisinin temelini oluşturur.

Bu kılavuzda bir iş yükünü ölçeklendirme ve bölümleme önerileri açıklanmaktadır. Ölçeklendirme, isteğe bağlı olarak bir iş yüküne ayrılan kaynakları artırma veya azaltma özelliğidir. Bölümleme, verileri ve işlemeyi birden çok kaynak arasında dağıtmak için iş yükünü daha küçük, yönetilebilir birimlere bölmeyi içerir. Ölçeklendirmeyen veya bölümlemeyen bir iş yükü, yüksek talep dönemlerinde düşük performans ve düşük talep dönemlerinde az kullanılan kapasiteyle karşılaşabilir.

Tanımlar

Süre Tanım
Otomatik Ölçeklendirme Bir hizmetin kapasite sınırlarını önceden tanımlanmış yapılandırmalara göre otomatik olarak ayarlayan ve gerektiğinde ölçeği artırmasına veya azaltmasına olanak sağlayan bir özellik.
Capacity Belirli bir hizmet veya özelliğin üst sınırı veya maksimum kapasitesi.
İstemci benzitesi (oturum benzimliği) Tutarlı oturum yönetimi sağlamaya yardımcı olmak için isteklerin tek bir istemciden tek bir sunucu örneğine kasıtlı olarak yönlendirilmesi.
Tutarlılık (dağıtılmış veritabanı) Dağıtılmış veritabanındaki birden çok düğümdeki verilerin tekdüzenliği, tüm çoğaltmaların belirli bir noktada aynı verilere sahip olmasını sağlar.
Tutarlılık (ilişkisel veritabanı) Bir veritabanını geçerli bir durumdan diğerine getiren ve veri bütünlüğünü koruyan bir işlemin özelliği.
Tutarlılık düzeyi Verilerin dağıtılmış veritabanı sisteminde nasıl ve ne zaman çoğaltıldığını tanımlayan ve tutarlılık ile performans arasındaki dengeyi belirleyen bir yapılandırma.
Veri kilitleme Aynı verilerde eşzamanlı güncelleştirmeleri önlemek için kullanılan bir mekanizma.
Yatay ölçeklendirme Belirli bir kaynak türünün örneklerini ekleyen bir ölçeklendirme yaklaşımı.
İyimser eşzamanlılık Geleneksel kilitleme mekanizmaları yerine güncelleştirmeler yapmak için anlık görüntüleri kullanan veritabanlarını güncelleştirmeye yönelik bir yaklaşım.
Bölümleme Verileri fiziksel olarak ayrı veri depolarına bölme işlemi.
Ölçeklenebilirlik Bir iş yükünün, değişen talep düzeylerini karşılamak için kapasite sınırlarını dinamik olarak değiştirme özelliği.
Ölçek birimi Orantılı olarak ölçeklendirilen bir kaynak grubu.
Durum benzitesi aynı sunucunun aynı istemciden gelen sonraki istekleri işlemesi için istemci oturumu verilerinin tek bir sunucuda depolanması.
Dikey ölçeklendirme Mevcut kaynaklara işlem kapasitesi ekleyen bir ölçeklendirme yaklaşımı.

Temel tasarım stratejileri

Hem ölçeklendirme hem de bölümleme, kaynakların etkili bir şekilde kullanıldığından ve iş yükünün değişen yükleri işleyebildiğinden emin olarak performans verimliliğine katkıda bulunur. Bu uygulamalar özellikle uygulamaların esnek ve değişen taleplere uyarlanabilir olması gereken bulut ortamlarında önemlidir. Ölçeklendirme, artan talepleri karşılamak için iş yükü kapasitesini genişletebilmenizi sağlar. Bölümleme, artan bu ihtiyaçları karşılamak için görevleri veya verileri verimli bir şekilde bölmenize olanak tanır. Bu iki işlemin de temeli, iş yükünün ölçek birimi tasarımıdır. İş yükünüzün nasıl büyümesi ve görevleri dağıtması gerektiğini belirler. Ölçeklendirme ve bölümleme için güvenilir ve denetimli bir yaklaşım ekleyerek olası iş yükü verimsizliklerini önleyebilirsiniz.

Ölçeklendirmeyi iyileştirme

Ölçeklendirmeyi iyileştirme, bir iş yükünün dalgalı taleplerini karşılamak için sunucu, örnek veya kaynak sayısını ayarlama işlemidir. İş yükünün performans düşüşü veya kapalı kalma süresi yaşamadan artan trafiği veya talepleri işleyebilmesini sağlar.

Ölçeklendirme stratejisi seçme

Ölçeklendirme stratejisi seçmek, bir iş yükünün kapasitesini belirli gereksinimlerine göre geliştirmek için dikey veya yatay yöntemler arasında karar vermenizi içerir. Doğru stratejinin seçilmesi, kaynakların aşırı kullanma veya israf olmadan iş yükü taleplerini karşılayacak şekilde verimli bir şekilde ayarlanmasını sağlar. Doğru ölçeklendirme stratejisini seçmek için dikey ve yatay ölçeklendirme kullanım örneklerini ve bunların iş yükünüzün gereksinimlerini nasıl karşıladığını anlamanız gerekir.

Dikey ölçeklendirmeyi anlama. Dikey ölçeklendirmeyi kullanarak, daha büyük bir sunucuya veya örnek boyutuna yükseltme gibi tek bir kaynağın kapasitesini artırabilirsiniz. Dikey ölçeklendirme, iş yükünün tek bir örnek içindeki daha fazla işlem gücünden, bellekten veya diğer kaynaklardan yararlanabileceği durumlarda kullanışlıdır. Dikey ölçeklendirme, kolayca daha küçük parçalara ayrılmayan veya uygulama mimarisi yatay ölçeklendirmeyi desteklemeyen iş yükleri için uygundur.

Yatay ölçeklendirmeyi anlama. Yatay ölçeklendirmeyi kullanarak, iş yükünü birden çok sunucuya dağıtmak için daha fazla örnek veya kaynak ekleyebilirsiniz. Yatay ölçeklendirme gelişmiş dayanıklılık, daha fazla kapasite ve artan trafik veya iş yükü taleplerini ele alma gibi avantajlar sunar. Birden çok düğümde çalışacak şekilde tasarlanmış buluta özel uygulamalar için etkilidir. Yatay ölçeklendirme, bağımsız olarak çalışan daha küçük parçalara ayrılabilen iş yükleri için uygundur.

İş yükünü anlama. Dikey veya yatay ölçeklendirmenin uygunluğu, iş yükünün belirli özelliklerine ve gereksinimlerine bağlıdır. Aşağıdaki alanlardaki düzenli performans izleme ve test işlemleri zaman içinde ölçeklendirme stratejisini iyileştirmeye yardımcı olabilir:

  • Gereksinimler: Kaynak talepleri, ölçeklenebilirlik gereksinimleri ve iş yükünün sınırlamaları gibi faktörleri göz önünde bulundurarak iş yükünün belirli gereksinimlerini anlayın.

  • Ölçek birimleri: Birlikte ölçeklendirilmesi beklenen bileşenler için bir ölçek birimi tasarımı oluşturun. Örneğin, 100 sanal makine fazladan iş yükünü işlemek için iki kuyruk ve üç depolama hesabı gerektirebilir. Ölçek birimi 100 sanal makine, iki kuyruk ve üç depolama hesabı olabilir. Kapasite kullanımı dalgalanması yaşanan tüm bileşenleri bağımsız olarak ölçeklendirmeniz gerekir.

  • Mimari: Uygulama mimarisinin tasarımını değerlendirme. Bazı uygulamalar, birden çok örneğe kolayca dağıtılabilir durum bilgisi olmayan bileşenlerle yatay olarak ölçeklendirilecek şekilde doğal olarak tasarlanabilir. Diğer uygulamalar, dikey ölçeklendirmeyi daha uygun hale getiren durum bilgisi olan bileşenlere veya bağımlılıklara sahip olabilir. İş yükünün ölçeklenebilirlik ve esneklik gereksinimlerini değerlendirin.

Ölçeklendirilecek altyapıyı tasarlama

Ölçeklendirilecek altyapıyı tasarlamak, kaynakları gerektiği gibi ekleyerek veya ayarlayarak artan talepleri ve iş yükünü işleyebilen bir mimari oluşturma işlemidir. Büyümeyi karşılamak için yatay veya dikey olarak ölçeklenebilen çözümleri planlamayı ve uygulamayı içerir. Stratejiler, performans sorunlarına neden olabilecek tekillerden kaçınmayı ve bağımsız ölçeklenebilirlik sağlamak için uygulama bileşenlerini ayırmayı içerir. Bir iş yükünü ölçeklenebilir olacak şekilde tasarladığınızda, iş yükünü birden çok kaynak arasında etkili bir şekilde dağıtabilir ve bu da performans sorunlarını önler ve kaynak kullanımını en üst düzeye çıkarır.

Tekillerden kaçının. İş yükünün tamamı için tek bir merkezi kaynak kullanmaktan kaçınmalısınız. Bunun yerine, daha iyi ölçeklenebilirlik, hataya dayanıklılık ve performans için iş yükünüzü birden çok kaynağa dağıtabilirsiniz. İş yükü kaynaklarında tekillerden kaçınmak için bazı özel örnekleri ve tasarım konularını keşfedin:

  • Kuyruk tabanlı yük dengeleme: İletileri işlemek için tek bir kuyruğa güvenmek yerine, işleme yükünü dağıtmak için iş yükünü birden çok kuyrukta bölümlemeniz önerilir. Daha iyi ölçeklenebilirlik ve paralel işleme sağlar.

  • Veri işleme: Tekil desenler genellikle işlemenin fazla açılmadığı veri işleme senaryolarında görünür. Uzun süre çalışan görevleri, iş yükünü birden çok kaynağa dağıtmak ve paralellikten yararlanmak için daha iyi ölçeklenebilen daha küçük görevlere ayırın.

  • Tasarım desenleri: Fan-out/Fan-in veya Kanallar ve Filtreler gibi tasarım desenleri , iş akışlarında tekillerden kaçınmaya yardımcı olabilir. Bu desenler, işleme görevlerinin birden çok kaynak arasında dağıtılmasını sağlar ve ölçeklenebilirlik ile esnekliği artırır.

Bileşenleri ayırma. Uygulama bileşenlerini ayırmak, ölçeklenebilirlik tasarımının önemli bir yönüdür. Uygulamayı belirli iş yükü gereksinimlerine göre bağımsız olarak çalıştırabilen ve ölçeklendirebilen daha küçük, bağımsız bileşenlere ayırmayı içerir. Örneğin, talebin artması nedeniyle bir bileşen daha fazla kaynak gerektiriyorsa, diğer bileşenleri etkilemeden bu bileşeni ölçeklendirin. Bu esneklik, verimli kaynak ayırmayı sağlar ve performans sorunlarını önler. Bileşenleri ayırarak hataları yalıtabilir ve uygulamanın genel üzerindeki etkisini en aza indirebilirsiniz. Bir bileşen başarısız olursa, diğer bileşenler bağımsız olarak çalışmaya devam edebilir.

Ayrılmış bileşenlerin bakımı ve güncelleştirmesi daha kolaydır. Bağımsız olduklarından, bir bileşende değişiklik veya güncelleştirmeler diğerlerini etkilemeden yapılabilir. Ölçeklenebilirlik için uygulama bileşenlerini ayırmak için şu yönergeleri izleyin:

  • Endişelerin ayrılması: Uygulamanızın sorumluluklarını ve işlevlerini belirleyin. Sorumlulukları kendi görevlerine göre ayrı bileşenlere bölün. Örneğin, kullanıcı kimlik doğrulaması, veri işleme ve kullanıcı arabirimi için ayrı bileşenleriniz olabilir.

  • Gevşek bağlantı: Bileşenleri iyi tanımlanmış arabirimler ve protokoller aracılığıyla birbirleriyle iletişim kuracak şekilde tasarlar. Bu tasarım bileşenler arasındaki bağımlılıkları azaltır ve tek tek bileşenlerin daha kolay değiştirilmesini veya ölçeklendirilmesini sağlar.

  • Zaman uyumsuz iletişim: Bileşenleri daha fazla ayırmak için ileti kuyrukları veya olay odaklı mimariler gibi zaman uyumsuz iletişim desenlerini kullanın. Bu desenler, bileşenlerin görevleri kendi hızlarında bağımsız olarak işlemesine olanak tanıyarak genel ölçeklenebilirliği artırır.

  • Mikro hizmetler: Belirli iş işlevlerine odaklanan küçük ve bağımsız hizmetler olan mikro hizmetleri uygulamayı göz önünde bulundurun. Her mikro hizmet bağımsız olarak geliştirilebilir, dağıtılabilir ve ölçeklendirilebilir, böylece daha fazla esneklik ve ölçeklenebilirlik sağlanır.

Ölçeklendirilecek uygulama tasarlama

Bir iş yükünü ölçeklendirirken, yükü dağıtmak için uygulamayı tasarlamanız gerekir. Altyapı düzeyinde daha fazla çoğaltma ekleyebilmeniz, uygulamanızın çoğaltmaları kullanabileceği anlamına gelmez. Bir uygulamayı ölçeklendirilecek şekilde tasarlamak, bir uygulamayı yapılandırarak iş yükünü kaynaklar arasında dağıtarak artan talepleri ele almaktır. Mümkünse tek bir örnek için istemci benzimi, veri kilitleme veya durum benzimi gerektiren çözümlerden kaçının. İstemciyi veya işlemi kullanılabilir kapasiteye sahip bir kaynağa yönlendirmek istiyorsunuz. Uygulama ölçeklenebilirliğini tasarlamak için aşağıdaki stratejileri göz önünde bulundurun:

Sunucu tarafı oturum durumunu ortadan kaldırın. Mümkün olduğunda durum bilgisi olmayan uygulamalar tasarlamanız gerekir. Durum bilgisi olan uygulamalar için sunucunuzun dışında bir durum deposu kullanmanız gerekir. Oturum durumunu dışlaştırma, oturum verilerini uygulama sunucusunun veya kapsayıcının dışında depolama uygulamasıdır. Oturum verilerini birden çok sunucu veya hizmet arasında dağıtmak için oturum durumunu dışlaştırabilir ve dağıtılmış bir ortamda sorunsuz oturum yönetimini etkinleştirebilirsiniz. Oturum durumunu dışlarken aşağıdakileri göz önünde bulundurun:

  • Oturum gereksinimlerinizi değerlendirin. Depolanması ve yönetilmesi gereken oturum verilerini anlayın. Oturum özniteliklerini, oturum zaman aşımlarını ve oturum çoğaltma veya kalıcılık için belirli gereksinimleri göz önünde bulundurun. Oturum durumunuzun boyutunu ve okuma ve yazma işlemlerinin sıklığını belirleyin.

  • Bir çözüm seçin. Performans ve ölçeklenebilirlik gereksinimlerinize uygun bir depolama çözümü seçin. Seçenekler arasında dağıtılmış önbellek, veritabanı veya oturum durumu hizmeti kullanma yer alır. Seçiminizi yaparken veri tutarlılığı, gecikme süresi ve ölçeklenebilirlik gibi faktörleri göz önünde bulundurun.

  • Uygulamanızı ayarlayın. Uygulamanızı seçilen oturum durumu depolama çözümünü kullanacak şekilde güncelleştirin. Dış depolama hizmetine bağlanmak için uygulamanızın yapılandırma dosyalarını veya kodunu değiştirmeniz gerekebilir.

  • Mantığınızı güncelleştirin. Dış depolama çözümünden oturum verilerini depolamak ve almak için uygulamanızın oturum yönetimi mantığını değiştirin. Oturum durumunu yönetmek için depolama çözümü tarafından sağlanan API'leri veya kitaplıkları kullanmanız gerekebilir.

İstemci benderliğini ortadan kaldırın. İstemci benzitesi, oturum benzırlığı veya yapışkan oturumlar olarak da bilinir. İstemci benceliğini ortadan kaldırdığınızda, istemciden gelen tüm istekleri aynı çoğaltmaya yönlendirmeden istemci isteklerini birden çok çoğaltmaya veya sunucuya eşit olarak dağıtırsınız. Bu yapılandırma, kullanılabilir çoğaltmaların istekleri işlemesine izin vererek uygulamaların ölçeklenebilirliğini ve performansını geliştirebilir.

Yük dengeleme algoritmanızı gözden geçirin. Yük dengeleme algoritması, bir arka uç örneğine çok fazla istek gönderildiği durumlarda istemeden ve yapay istemci sabitlemesine neden olabilir. Algoritma her zaman aynı kullanıcıdan aynı örneğe istek gönderecek şekilde ayarlandıysa sabitleme gerçekleşebilir. İstekler birbirine çok benzerse de bu durum oluşabilir.

Veri kilitlemeyi ortadan kaldırın. Veri kilitleme tutarlılık sağlar ancak performans dezavantajları vardır. Kilit yükseltmelerine neden olabilir ve eşzamanlılığı, gecikmeyi ve kullanılabilirliği olumsuz etkileyebilir. Veri kilitlemeyi ortadan kaldırmak için iyimser eşzamanlılık uygulamanız gerekir. İlişkisel olmayan veritabanları iyimser eşzamanlılık denetimi kullanmalı ve doğru tutarlılık düzeyine sahip olmalıdır. Veri bölümleme stratejiniz eşzamanlılık gereksinimlerinizi de desteklemelidir.

Dinamik hizmet bulma özelliğini kullanın. Dinamik hizmet bulma, dağıtılmış bir sistemde hizmetleri otomatik olarak algılama ve kaydetme işlemidir. İstemcilerin belirli örneklerle sıkı bir şekilde bağlanmadan kullanılabilir hizmetleri bulmasını sağlar. İstemciler iş yükündeki belirli bir örneğe doğrudan bağımlılık almamalıdır. Bu bağımlılıklardan kaçınmak için, istemci bağlantılarını dağıtmak ve yeniden dağıtmak için bir ara sunucu kullanmanız gerekir. Proxy, istemciler ve hizmetler arasında bir aracı görevi görür ve istemcileri etkilemeden hizmetlerin eklenmesine veya kaldırılmasına olanak tanıyan bir soyutlama katmanı sağlar.

Arka plan görevlerini kullanın. Bir uygulama ölçeklendirildiğinde artan bir iş yükünü veya daha fazla sayıda eşzamanlı isteği işleyebilir. Arka plan görevleri olarak yoğun görevleri boşaltmak, ana uygulamanın yoğun kaynak kullanan işlemlere gerek kalmadan kullanıcı isteklerini işlemesini sağlar. Görevleri arka plan görevleri olarak boşaltmak için şu adımları izleyin:

  1. Uygulamanızda boşaltabileceğiniz YOĞUN CPU ve G/Ç yoğunluklu görevleri bulun. Bu görevler genellikle yoğun hesaplamalar veya veritabanları veya ağ işlemleri gibi dış kaynaklarla etkileşimler içerir.

  2. Uygulamanızı arka plan görevlerini destekleyecek şekilde tasarlar. Yoğun görevleri ana uygulama mantığından ayırın ve arka plan görevlerini başlatmak ve yönetmek için bir mekanizma sağlayın.

  3. Uygun teknolojilerle veya çerçevelerle arka plan görevi işlemeyi uygulayın. Programlama diliniz veya platformunuz tarafından sağlanan zaman uyumsuz programlama, iş parçacığı oluşturma veya görev kuyrukları gibi özellikleri ekleyin. Ayrı görevlerde veya iş parçacıklarında yoğun işlemler içerir; bu görevler eşzamanlı olarak çalıştırılabilir veya belirli aralıklarla çalışacak şekilde zamanlanabilir.

  4. Çok sayıda arka plan görevi varsa veya görevler önemli miktarda zaman veya kaynak gerektiriyorsa dağıtın. Olası bir çözüm için Rakip Tüketiciler düzenine bakın.

Ölçeklendirmeyi yapılandırma

Ölçeklendirmeyi yapılandırma, kaynakları iş yükü taleplerine göre dinamik olarak ayırmak için parametreleri ayarlama ve ayarlama işlemidir. Otomatik ölçeklendirme özelliklerini kullanma, hizmet ölçeklendirme sınırlarını anlama ve anlamlı yük ölçümleri uygulama gibi stratejileri kapsar. Uygun yapılandırma, bir uygulamanın verimliliği en üst düzeye çıkarırken değişen taleplere yanıt vermesini sağlar. Ölçeklendirmeyi yapılandırırken aşağıdaki stratejileri göz önünde bulundurun:

Otomatik ölçeklendirme ile hizmetleri kullanın. Otomatik ölçeklendirme özelliği, talebi karşılamak için altyapıyı otomatik olarak ölçeklendirir. Yerleşik otomatik ölçeklendirme özelliklerine sahip hizmet olarak platform (PaaS) tekliflerini kullanın. PaaS üzerinde ölçeklendirme kolaylığı önemli bir avantajdır. Örneğin, sanal makinelerin ölçeğini artırmak için ayrı bir yük dengeleyici, istemci-istek işleme ve harici olarak depolanan durum gerekir. PaaS teklifleri bu görevlerin çoğunu yönetir.

Otomatik ölçeklendirmeyi kısıtla. Gereksiz maliyetlere neden olabilecek aşırı ölçeklendirmeyi en aza indirmek için otomatik ölçeklendirme sınırları ayarlayın. Bazen ölçeklendirme sınırları ayarlayamazsınız. Böyle durumlarda, bileşen en yüksek ölçek sınırına ulaştığında ve fazla ölçeklendirildiğinde sizi bilgilendirmek için uyarılar ayarlamanız gerekir.

Hizmet ölçeklendirme sınırlarını anlama. Hizmet ölçeklendirme sınırlarını, artışlarını ve kısıtlamalarını anladığınızda, bir hizmeti seçerken bilinçli kararlar alabilirsiniz. Ölçeklendirme sınırları, seçtiğiniz hizmetin beklenen iş yükünü işleyip işleyemeyeceğini, verimli bir şekilde ölçeklendirebileceğini ve uygulamanızın performans gereksinimlerini karşılayıp karşılamayacağını belirler. Dikkate alınacak ölçeklendirme sınırları şunlardır:

  • Ölçeklendirme sınırları: Ölçeklendirme sınırları, bir konumun veya hizmetin işleyebileceği maksimum kapasitedir. Hizmetin beklenen iş yüküne uyum sağlamasına ve performans düşüşü olmadan en yüksek kullanımı işlemesine yardımcı olmak için bu sınırları bilmeniz önemlidir. Her kaynağın bir üst ölçek sınırı vardır. Ölçek sınırlarının ötesine geçmeniz gerekiyorsa iş yükünüzü bölümlemeniz gerekir.

  • Ölçeklendirme artışları: Hizmetler tanımlı artışlarla ölçeklendirilir. Örneğin işlem hizmetleri örneklere ve podlara göre ölçeklendirilirken veritabanları örneklere, işlem birimlerine ve sanal çekirdeklere göre ölçeklendirilebilir. Kaynak ayırmayı iyileştirmek ve kaynak çırpmayı önlemek için bu artışları anlamak önemlidir.

  • Ölçeklendirme kısıtlamaları: Bazı hizmetler ölçeği artırmanıza veya genişletmenize olanak sağlar, ancak ölçeklendirmeyi otomatik olarak tersine çevirme yeteneğinizi sınırlar. Ölçeği el ile daraltmak zorunda kalırsınız veya yeni bir kaynağı yeniden dağıtmanız gerekebilir. Bu sınırlamalar genellikle iş yükünü korumak için kullanılır. Ölçeği azaltma veya ölçeği daraltma, iş yükünün kullanılabilirliğini ve performansını etkileyebilir. Bir hizmet, iş yükünün etkili bir şekilde çalışması için yeterli kaynağa sahip olduğundan emin olmak için belirli sınırlamaları veya kısıtlamaları zorunlu kabilir. Bu sınırlamalar, özellikle dağıtılmış sistemlerde veri tutarlılığını ve eşitlemesini etkileyebilir. Hizmetin ölçeği artırma veya genişletme sırasında veri çoğaltma ve tutarlılık işlemlerini gerçekleştirmeye yönelik mekanizmaları olabilir, ancak ölçeği azaltma veya daraltma için aynı düzeyde destek sağlamayabilir.

Anlamlı yük ölçümleri kullanın. Ölçeklendirme, ölçeklendirme tetikleyicileri olarak anlamlı yük ölçümleri kullanmalıdır. Anlamlı yük ölçümleri CPU veya bellek gibi basit ölçümleri içerir. Ayrıca kuyruk derinliği, SQL sorguları, özel ölçüm sorguları ve HTTP kuyruğu uzunluğu gibi daha gelişmiş ölçümler de içerir. Ölçeklendirme tetikleyiciniz olarak basit ve gelişmiş yük ölçümlerinin bir bileşimini kullanmayı göz önünde bulundurun.

Arabellek kullanın. Arabellek, talepteki ani artışları işlemek için kullanılabilecek kullanılmayan kapasitedir. İş yükündeki beklenmeyen ani artışlar için iyi tasarlanmış iş yükü planları. Yatay ve dikey ölçeklendirme için ani artışları işlemek için bir arabellek eklemelisiniz.

Dokunmayı önleyin. Dokunma, bir ölçek olayı karşı ölçek olayını tetikleyerek sürekli bir ileri geri ölçeklendirme eylemi oluşturduğunda oluşan bir döngü koşuludur. Örneğin, ölçeği daraltma işlemi örnek sayısını azaltıyorsa, cpu kullanımının kalan örneklerde artmasına neden olabilir ve ölçeği genişletme olayı tetiklenebilir. Ölçeği genişletme olayı da CPU kullanımının düşmesine neden olarak işlemi tekrarlar.

Ölçeği genişletme ve ölçeği daraltma eşikleri arasında yeterli bir kenar boşluğu seçmek, çırpmayı önlemek için önemlidir. CPU kullanımında önemli bir fark sağlayan eşikler ayarlayarak sık ve gereksiz ölçek daraltma ve ölçeği genişletme eylemlerini önleyebilirsiniz.

Dağıtım Damgalarını kullanın. İş yükünü ölçeklendirmeyi kolaylaştıran teknikler vardır. Bir veya daha fazla ölçek birimi ekleyerek bir iş yükünü kolayca ölçeklendirmek için Dağıtım DamgaLarı desenini kullanabilirsiniz.

Risk: Ölçeklendirme, kapasiteyi talebi karşılayacak şekilde ayarlayarak maliyetleri iyileştirmeye yardımcı olsa da, talebin yüksek olduğu uzun dönemlerde maliyetin genel olarak artmasına neden olabilir.

Ölçeklendirmeyi test etme

Ölçeklendirme testi, bir iş yükünün farklı talep düzeylerine nasıl yanıt verdiğini değerlendirmek için denetimli bir ortamda çeşitli iş yükü senaryolarının benzetimini içerir. İş yükünün verimli bir şekilde ölçeklendirilmesine yardımcı olur ve çeşitli yükler sırasında performans verimliliğini en üst düzeye çıkarır.

İş yükünüzün gerçek dünya koşullarında verimli bir şekilde ölçeklendirildiğinden emin olmanız gerekir. Üretim kurulumunuzu yansıtan bir ortamda yük ve stres testleri gerçekleştirmek önemlidir. Üretim dışı ortamlarda gerçekleştirilen bu testler hem dikey hem de yatay ölçeklendirme stratejilerini değerlendirmenize ve hangisinin performansı en etkili şekilde iyileştirdiğini belirlemenize olanak tanır. Ölçeklendirmeyi test etmek için önerilen bir yaklaşım aşağıdadır:

  • İş yükü senaryolarını tanımlama. Kullanıcı trafiğini artırma, eşzamanlı istekler, veri hacmi veya kaynak kullanımı gibi test etmeniz gereken temel iş yükü senaryolarını belirleyin.

  • Üretim benzeri test ortamını kullanın. Altyapı, yapılandırma ve veriler açısından üretim ortamına benzer ayrı bir test ortamı oluşturun.

  • Performans ölçümlerini ayarlayın. Yanıt süresi, aktarım hızı, CPU ve bellek kullanımı ve hata oranları gibi ölçülecek performans ölçümlerini tanımlayın.

  • Test çalışmaları geliştirme. Farklı iş yükü senaryolarının benzetimini yapmak için test çalışmaları geliştirin ve çeşitli düzeylerdeki performansı değerlendirmek için yükü kademeli olarak artırın.

  • Testleri yürütür ve izler. Tanımlanan test çalışmalarını kullanarak testleri çalıştırın ve her yük düzeyinde performans verileri toplayın. İş yükü davranışını, kaynak tüketimini ve performans düşüşünü izleyin.

  • Ölçeklendirmeyi analiz etme ve iyileştirme. Performans sorunlarını, ölçeklenebilirlik sınırlamalarını veya geliştirme alanlarını belirlemek için test sonuçlarını analiz edin. Ölçeklenebilirliği ve performansı geliştirmek için yapılandırmayı, altyapıyı veya kodu iyileştirin. Ölçeklendirmenin tamamlanması zaman alır, bu nedenle ölçeklendirme gecikmelerinin etkilerini test edin.

  • Bağımlılıkları adresle. Olası bağımlılık sorunlarını bulun. İş yükünün bir alanında ölçeklendirme veya bölümleme, bağımlılıkta performans sorunlarına neden olabilir. Bir iş yükünün veritabanları gibi durum bilgisi olan bölümleri, bağımlılık performansı sorunlarının en yaygın nedenidir. Veritabanlarının yatay olarak ölçeklendirilmesi için dikkatli bir tasarım gerekir. Veritabanına daha fazla aktarım hızı sağlamak için iyimser eşzamanlılık veya veri bölümleme gibi ölçüleri dikkate almanız gerekir.

  • Ayarlamalardan sonra yeniden test edin. İyileştirmeleri doğrulamak ve iş yükünün beklenen iş yüklerini verimli bir şekilde işleyebilmesini sağlamaya yardımcı olmak için iyileştirmeleri uyguladıktan sonra ölçeklenebilirlik testlerini tekrarlayın.

Denge: İş yükünüzün bütçe kısıtlamalarını ve maliyet verimliliği hedeflerini göz önünde bulundurun. Dikey ölçeklendirme, daha büyük ve daha güçlü kaynaklara duyulan ihtiyaç nedeniyle daha yüksek maliyetler içerebilir. Yatay ölçeklendirme, isteğe bağlı olarak eklenebilecek veya kaldırılabilir daha küçük örnekler kullanarak maliyet tasarrufu sağlar.

Bölüm iş yükü

Bölümleme, büyük bir veri kümesini veya iş yükünü bölümler olarak adlandırılan daha küçük, daha yönetilebilir bölümlere bölme işlemidir. Her bölüm verilerin veya iş yükünün bir alt kümesini içerir ve genellikle ayrı olarak depolanır veya işlenir. Bölümleme paralel işlemeyi etkinleştirir ve çekişmesini azaltır. İş yükünün daha küçük birimlere bölünmesi, uygulamanın her birimi bağımsız olarak işlemesine olanak tanır. Sonuç olarak kaynakların daha iyi kullanılması ve daha hızlı işlem süreleri elde edilir. Bölümleme ayrıca verilerin birden çok depolama cihazı arasında dağıtılmasına yardımcı olarak, tek tek cihazlardaki yükü azaltır ve genel performansı geliştirir.

Bölümle değiştirmeyi anlama

Kullandığınız belirli bölümleme yaklaşımı, sahip olduğunuz verilerin veya iş yükünün türüne ve kullandığınız teknolojiye bağlıdır. Bölümleme için bazı yaygın stratejiler şunlardır:

  • Yatay bölümleme: Bu yaklaşımda veri kümesi veya iş yükü, değer aralıkları veya belirli öznitelikler gibi belirli ölçütlere göre bölünür. Her bölüm, tanımlanan ölçütleri karşılayan verilerin bir alt kümesini içerir.

  • Dikey bölümleme: Bu yaklaşımda, veri kümesi veya iş yükü belirli özniteliklere veya sütunlara göre bölünür. Her bölüm sütunların veya özniteliklerin bir alt kümesini içerir ve gerekli verilere daha verimli erişim sağlar.

  • İşlevsel bölümleme: Bu yaklaşımda veriler veya iş yükü, gerçekleştirilmesi gereken belirli işlevlere veya işlemlere göre bölünür. Her bölüm belirli bir işlev için gerekli olan verileri veya bileşenleri içerir ve iyileştirilmiş işleme ve performans sağlar.

Bölümleme planlama

Bölümleme sırasında veri dağıtımı, sorgu desenleri, veri büyümesi ve iş yükü gereksinimleri gibi faktörleri göz önünde bulundurmak önemlidir. Bölümlemenin verimliliğini sağlamaya ve performans verimliliğini en üst düzeye çıkarmaya yardımcı olmak için uygun planlama ve tasarım gereklidir. Bölümleme işlemini sonradan ele alıyorsanız, zaten sürdürmeniz gereken canlı bir iş yükünüz olduğundan bu daha zordur. Veri erişim mantığını değiştirmeniz, büyük miktarda veriyi bölümler arasında dağıtmanız ve veri dağıtımı sırasında sürekli kullanımı desteklemeniz gerekebilir.

Bölümleme uygulama

Hangi bölümleme türünü kullanacağınıza karar verirken verilerinizin özelliklerini, erişim desenlerini, eşzamanlılık gereksinimlerini ve ölçeklenebilirlik hedeflerini analiz etmek önemlidir. Her bölümleme türünün kendi avantajları ve dikkat edilmesi gereken noktaları vardır. Her bölümleme türü için dikkate alınması gereken bazı faktörler şunlardır:

  • Yatay bölümleme , daha iyi ölçeklenebilirlik ve performans için verileri birden çok kaynak veya sunucu arasında dağıtmak istediğinizde uygundur. İş yükünün her bölümde bağımsız olarak paralelleştirilebildiği ve işlenebildiği durumlarda etkili olur. Birden çok kullanıcının veya işlemin veri kümesine eşzamanlı olarak erişebilmesi veya veri kümesini güncelleştirebilmesi gerektiğinde yatay bölümleme yapmayı göz önünde bulundurun.

  • Dikey bölümleme , belirli özniteliklere veya sütunlara sık erişilirken, diğerlerine daha az sıklıkta erişildiğinde uygundur. Dikey bölümleme, gereksiz veri alımını en aza indirerek gerekli verilere verimli erişim sağlar.

  • İşlevsel bölümleme , farklı işlevler verilerin farklı alt kümelerini gerektirdiğinde uygundur ve bağımsız olarak işlenebilir. İşlevsel bölümleme, her bölümün belirli işlemlere odaklanmasına izin vererek performansı iyileştirebilir.

Bölümleme test etme ve iyileştirme

Performansı geliştirmek için ayarlamalar yapabilmeniz için stratejinin etkinliğini ve verimliliğini doğrulamak için bölümleme düzenini test edin. Yanıt süresi, aktarım hızı ve ölçeklenebilirlik gibi ölçü faktörleri. Sonuçları performans hedefleriyle karşılaştırın ve performans sorunlarını veya sorunları belirleyin. Analize bağlı olarak olası iyileştirme fırsatlarını belirleyin. Verileri bölümler arasında yeniden dağıtmanız, bölüm boyutlarını ayarlamanız veya bölümleme ölçütlerini değiştirmeniz gerekebilir.

Dengeleme: Bölümleme, bir iş yükünün tasarımına ve geliştirilmesine karmaşıklık katıyor. Bölümleme, geliştiriciler ve veritabanı yöneticileri arasında konuşmalar ve planlama gerektirir.

Risk: Bölümleme, dikkate alınması ve çözülmesi gereken bazı olası sorunları ortaya koyarak şunları içerir:

  • Veri dengesizliği: Bölümleme, belirli bölümlerin diğerlerine kıyasla orantısız miktarda veri veya iş yükü aldığı veri dengesizliğiyle sonuçlanabilir. Veri dengesizliği, performans dengesizliklerine ve belirli bölümlerde çekişmelerin artmasına neden olabilir.

  • Sorgu performansı: Kötü tasarlanmış bölümleme düzenleri sorgu performansını olumsuz etkileyebilir. Sorguların birden çok bölümdeki verilere erişmesi gerekiyorsa, bölümler arasında ek koordinasyon ve iletişim gerektirebilir ve bu da gecikme süresinin artmasına neden olabilir.

Azure kolaylaştırma

Ölçeklendirmeyi iyileştirme. Azure, dikey ve yatay ölçeklendirmeyi destekleyecek altyapı kapasitesine sahiptir. Azure hizmetlerinin SKU'lar olarak bilinen farklı performans katmanları vardır. SKU'lar dikey olarak ölçeklendirmenize olanak sağlar. Azure kaynaklarının çoğu otomatik ölçeklendirmeyi veya diğer yerinde ölçeklendirme seçeneklerini destekler. Bazı kaynaklar, ince ayar ölçeklendirme davranışını desteklemek için gelişmiş ölçümleri veya özel girişleri destekler. Azure'daki çoğu ölçeklendirme uygulaması sınırlar ayarlayabilir ve değişiklik için uyarılması gereken gözlemlenebilirliği destekleyebilir.

Azure İzleyici , uygulamalarınızdaki ve altyapınızdaki çeşitli ölçümleri ve koşulları izlemenize olanak tanır. önceden tanımlanmış kurallara göre otomatik ölçeklendirme eylemlerini tetikleme amacıyla İzleyici'yi kullanabilirsiniz. Örneğin, Azure Kubernetes Service 'de (AKS), yatay pod otomatik ölçeklendirmeyi (HPA) ve küme otomatik ölçeklendirmesini etkinleştirmek için İzleyici'yi kullanabilirsiniz. İzleyici'nin izleme ve uyarı özelliklerini kullanarak Azure'da ölçeklendirmeyi etkili bir şekilde kolaylaştırabilir ve uygulamalarınızın ve altyapınızın talebi karşılayacak şekilde dinamik olarak ayarlanabilmesine yardımcı olabilirsiniz.

Azure'da özel otomatik ölçeklendirme de oluşturabilirsiniz. Otomatik ölçeklendirme özelliği olmayan kaynaklar için İzleyici'deki uyarıları kullanabilirsiniz. Bu uyarılar sorgu tabanlı veya ölçüm tabanlı olacak şekilde ayarlanabilir ve Azure Otomasyonu kullanarak eylemler gerçekleştirebilir. Otomasyon, Azure, bulut ve şirket içi ortamlarda PowerShell ve Python kodunu barındırmak ve çalıştırmak için bir platform sağlar. Runbook'ları isteğe bağlı veya belirli bir zamanlamaya göre dağıtma, çalıştırma geçmişi ve günlüğe kaydetme, tümleşik gizli dizi deposu ve kaynak denetimi tümleştirmesi gibi özellikler sunar.

Uygulamayı ölçeklendirilecek şekilde tasarlama: Azure'ın uygulama ölçeklendirme tasarımını kolaylaştırmanın bazı yolları şunlardır:

  • Veri kilitlemeyi ortadan kaldırma: Azure SQL Veritabanında, katı tutarlılık gerektiren veritabanlarında performansı geliştirmek için iyileştirilmiş kilitlemeyi etkinleştirebilirsiniz.

  • Arka plan görevlerini kullanma: Azure, arka plan işlerini uygulamaya yönelik hizmetler ve yönergeler sunar. Daha fazla bilgi için bkz . Arka plan işleri.

  • Yük dengeleme uygulama: Azure, istemci benzini gerektirmeyen yük dengeleyiciler sağlar. Bu yük dengeleyiciler Azure Front Door, Azure Application Gateway ve Azure Load Balancer içerir.

İş yükünü bölümleme: Azure, farklı veri depoları için çeşitli bölümleme stratejileri sunar. Bu stratejiler, verileri birden çok bölüme dağıtarak performansı ve ölçeklenebilirliği artırmaya yardımcı olur. Daha fazla bilgi için bkz . Veri bölümleme stratejileri.

Performans Verimliliği denetim listesi

Önerilerin tamamına bakın.